REPÚBLICA BOLIVARIANA DE VENEZUELA INSTITUTO UNIVERSITARIO DE TECNOLOGÍA “ANTONIO RICAURTE” INFORMÁTICA 2DO SEMESTRE NOCTURNO LENGUAJE Y PROGRAMACIÓN SECCION 403
10 PROBLEMAS RESUELTOS EN LENGUAJE C
ABREU LUNA, OSCAR EDUARDO C.I.: 13.473.712
CAGUA, 15 DE DICIEMBRE DE 2009 •
Problema 1: Desarrollar un programa en C para calcular el salario semanal de N empleados de la empresa "CHULO'S" si el precio/hora es 10, hora ext ra a 15.
/* Oscar Eduardo Abreu Luna, CI 13.473.712, Lenguaje y programación básica, sección 403 Nocturno. Informática IUTAR */ /* Problema 1: Desarrollar un programa en C para calcular el salario semanal de N empleados de la empresa "CHULO'S" si el precio/hora es 10, hora extra a 15.*/ # include # define hor_nor 10 # define hor_ex 15 typedef int entero; typedef float decimal; main() { decimal sueldo, sub_1, sub_2; entero limite=0, horas, extras, cont=1; printf("Empresa CHULO'S\n"); printf("Sistema de calculo de sueldo y horas extras\n"); printf("Indique a cuantos empleados desea calcular el sueldo: \n"); scanf("%d",&limite); while (cont<=limite) { printf("Indique las horas trabajas en horario normal para el empleado %d: \n",cont); scanf("%d",&horas); printf("Indique las horas extras trabajas para el empleado %d: \n",cont); scanf("%d",&extras); sub_1=horas*hor_nor; sub_2=extras*hor_ex; sueldo=sub_1+sub_2; 2
printf("El sueldo del empleado numero %d es de: %.2f BsF.\n",cont, sueldo); system("pause"); horas=0; extras=0; sub_1=0; sub_2=0; sueldo=0; cont ++; } } •
Problema 2: Calcula nota media de 3 asignaturas de cada uno de los 5 alumnos de clase.
/* Oscar Eduardo Abreu Luna, CI 13.473.712, Lenguaje y programación básica, sección 403 Nocturno. Informática IUTAR */ /* Problema 2: Calcula nota media de 3 asignaturas de cada uno de los 5 alumnos de clase.*/ # include typedef int entero; typedef float decimal; main() { decimal promedio, nota=0, sub_nota=0; entero limite, cont=1; printf("Nota Media Promedio de 5 Alumnos\n"); while (cont<=5) { for (limite=1; limite<=3; limite++) { printf("Indique su calificacion %d: \n",limite); scanf("%f",¬a); sub_nota=sub_nota+nota; nota=0; } promedio=sub_nota/3; printf("El promedio para el alumno %d es de: %.2f Puntos\n",cont, promedio); 3
promedio=0; nota=0; sub_nota=0; cont++; system("pause"); } } •
Problema 3: Introducir N cantidad de números y el ordenador enseña el máximo y cuantas veces se ha repetido.
/* Oscar Eduardo Abreu Luna, CI 13.473.712, Lenguaje y programación básica, sección 403 Nocturno. Informática IUTAR */ /* Problema 3: Introducir N cantidad de números y el ordenador enseña el máximo y cuantas veces se ha repetido.*/ # include typedef int entero; typedef float decimal; main() { /*decimal ; */ entero limite, cont=1, num, valor, maximo=0, repetir=0, cont_2=0; printf("Numeros Maximos y Repetidos\n"); printf("Introduzca cuantos numeros desea ingresar al sistema:\n"); scanf("%d",&limite); for (num=1; num<=limite; num++) { printf("Indique el valor para %d: \n",num); scanf("%d",&valor); if (valor>maximo) { maximo=valor; } if (valor==repetir) 4
{ cont_2++; } repetir=valor; valor=0; } printf("El numero mayor es: %d y hubo %d numeros repetidos\n",maximo, cont_2); system("pause"); } •
Problema 4: Programas para contabilizar personas de más de 180, entre 180 y 170, 170 y 160, y menores de 160 cm.
/* Oscar Eduardo Abreu Luna, CI 13.473.712, Lenguaje y programación básica, sección 403 Nocturno. Informática IUTAR */ /* Problema 4: Programas para contabilizar personas de más de 180, entre 180 y 170, 170 y 160, y menores de 160 cm.*/ # include typedef int entero; typedef float decimal; main() { /*decimal ; */ entero limite, cont=1, est, caso1=0, caso2=0, caso3=0, caso4=0; printf("Contador de rangos de estatura\n"); printf("Introduzca cuantas personas desea contabilizar:\n"); scanf("%d",&limite); while (cont<=limite) { printf("Indique la estatura para persona # %d en cm: \n",cont); scanf("%d",&est); if (est>180) 5
{ caso1++; } if (est>170 && est<=180) { caso2++; } if (est>=160 && est<=170) { caso3++; } if (est<160) { caso4++; } est=0; cont ++; } printf("Las personas mayores de 180 cm de estatura son: %d\n",caso1); printf("Las personas entre 180 cm y 170cm de estatura son: %d\n",caso2); printf("Las personas entre 170 cm y 160cm de estatura son: %d\n",caso3); printf("Las personas menores de 160 cm de estatura son: %d\n",caso4); system("pause"); }
•
Problema 5: El usuario introduce números y el ordenador cuenta cuantos son positivos.
6
/* Oscar Eduardo Abreu Luna, CI 13.473.712, Lenguaje y programación básica, sección 403 Nocturno. Informática IUTAR */ /* Problema 5: El usuario introduce números y el ordenador cuenta cuantos son positivos.*/ # include typedef int entero; typedef float decimal; main() { decimal num=0; entero limite, cont=1, caso=0; printf("Contador de numeros positivos\n"); printf("Introduzca cuantos numeros desea ingresar al sistema:\n"); scanf("%d",&limite); while (cont<=limite) { printf("Indique el valor para %d (puede ser positivo o negativo): \n",cont); scanf("%f",&num); if (num>0) { caso++; } num=0; cont ++; } printf("Los numeros positivos son: %d\n",caso); system("pause"); }
•
Problema 6: Programa para contabilizar si 10 números introducidos por teclado son múltiplos de 5 y contarlos.
7
/* Oscar Eduardo Abreu Luna, CI 13.473.712, Lenguaje y programación básica, sección 403 Nocturno. Informática IUTAR */ /* Problema 6: Programa para contabilizar si 10 números introducidos por teclado son múltiplos de 5 y contarlos.*/ # include typedef int entero; typedef float decimal; main() { /*decimal ;*/ entero cont=1, caso=0, num; printf("Contador de multiplos de 5\n"); while (cont<=10) { printf("Indique el valor para la posicion %d : \n",cont); scanf("%d",&num); if (num%5==0) { printf("Es multiplo de 5\n"); caso++; } num=0; cont ++; } printf("Los numeros multiplos de 5 son: %d\n",caso); system("pause"); } •
Problema 7: Una empresa nos ha encargado calcular las nominas de 6 trabajadores. El sueldo base semanal sale aplicando la siguiente fórmula: horastrabajo * preciohora + horasextra * preciohoraextra.
8
El preciohora es una constante=6. El preciohoraextra depende de las h.extra hechas: o
Si son menos de 10h extras semanales, el precio es un 50% mayor que el preciohora (*1,5).
o
Si se hacen entre 10 y 20h extra, el precio es un 40% mayor.
o
Si se hacen más de 20h, el precio es un 20% mayor.
Si el trabajador es categoría 3, el precio hora es el constante. Si es categoría 2; el precio hora es un 25% mayor y si es de categoría 1 es un 45% más.
/* Oscar Eduardo Abreu Luna, CI 13.473.712, Lenguaje y programación básica, sección 403 Nocturno. Informática IUTAR */ /* Problema 7: Una empresa nos ha encargado calcular las nominas de 6 trabajadores. El sueldo base semanal sale aplicando la siguiente fórmula: horastrabajo * preciohora + horasextra * preciohoraextra. El preciohora es una constante=6. El preciohoraextra depende de las h.extra hechas: Si son menos de 10h extras semanales, el precio es un 50% mayor que el preciohora (*1,5). Si se hacen entre 10 y 20h extra, el precio es un 40% mayor. Si se hacen más de 20h, el precio es un 20% mayor. Si el trabajador es categoría 3, el precio hora es el constante. Si es categoría 2; el precio hora es un 25% mayor y si es de categoría 1 es un 45% más.*/ # include # define pre_hor 6 typedef int entero; typedef float decimal; main() { decimal cat2, cat3, sub_t, sub_t2, total; entero tipo, cont=1, hora, extra; printf("Sistema de nomina de empleados\n"); while (cont<=6) { 9
printf("Indique la categoria para el empleado # %d del 1 al 3: \n",cont); scanf("%d",&tipo); switch(tipo) { case 1: printf("Indique las horas trabajadas en la semana en horario normal: \n"); scanf("%d",&hora); printf("Indique las horas extras trabajadas en la semana: \n"); scanf("%d",&extra); if (extra<=10) { sub_t=pre_hor*50/100; } if (extra>10 && extra<=20) { sub_t=pre_hor*20/100; } if (extra>20) { sub_t=pre_hor*20/100; } sub_t2=pre_hor*45/100; total=(hora*sub_t2)+(extra*sub_t); printf("El sueldo del empleado # %d que pertenece a la categoria 1 es de %.2f BsF. semanales\n",cont, total); system("pause"); break; case 2: 10
printf("Indique las horas trabajadas en la semana en horario normal: \n"); scanf("%d",&hora); printf("Indique las horas extras trabajadas en la semana: \n"); scanf("%d",&extra); if (extra<=10) { sub_t=pre_hor*50/100; } if (extra>10 && extra<=20) { sub_t=pre_hor*20/100; } if (extra>20) { sub_t=pre_hor*20/100; } sub_t2=pre_hor*25/100; total=(hora*sub_t2)+(extra*sub_t); printf("El sueldo del empleado # %d que pertenece a la categoria 2 es de %.2f BsF. semanales\n",cont, total); system("pause"); break; case 3: printf("Indique las horas trabajadas en la semana en horario normal: \n"); scanf("%d",&hora); printf("Indique las horas extras trabajadas en la semana: \n"); scanf("%d",&extra); 11
if (extra<=10) { sub_t=pre_hor*50/100; } if (extra>10 && extra<=20) { sub_t=pre_hor*20/100; } if (extra>20) { sub_t=pre_hor*20/100; } total=(hora*pre_hor)+(extra*sub_t); printf("El sueldo del empleado # %d que pertenece a la categoria 3 es de %.2f BsF. semanales\n",cont, total); system("pause"); break; default: printf("Opcion Invalida\n"); cont=cont-1; system("pause"); break; } extra=0; hora=0; sub_t=0; sub_t2=0; total=0; cont ++; } } •
Problema 8: Escribe el código fuente de un programa con menú en lenguaje C que: a).- Muestre en pantalla el siguiente mensaje:
12
MENU DE OPCIONES: 1.- Introducir un número real. 2.- Salir. Elija una opción:
b).- Se espera que el usuario elija una opción. b.1).- Si la opción es 1, hará lo siguiente: b.1.1).- Pedirá por teclado al usuario un número real. b.1.2).- Comprobará si el número es negativo. Si es negativo: mostrará el mensaje "El número es Negativo"; y si no lo es: "El número no es Negativo". b.2).- Si la opción es la 2, saldrá del programa. c).- El programa volverá a ejecutarse desde el punto 1 hasta que se elija la opción 2. d).- Cuando se elija la opción 2 y antes de salir del sistema se debe visualizar la cantidad de veces que se eligió la opción 1, cuantos números positivos se introdujeron y cuantos negativos.
/* Oscar Eduardo Abreu Luna, CI 13.473.712, Lenguaje y programación básica, sección 403 Nocturno. Informática IUTAR */ /* Problema 8: Escribe el código fuente de un programa con menú en lenguaje C que: a).- Muestre en pantalla el siguiente mensaje: -------------------------------------* MENU DE OPCIONES:
*
* 1.- Introducir un número real.
*
* 2.- Salir.
*
* Elija una opción:
*
-------------------------------------b).- Se espera que el usuario elija una opción. b.1).- Si la opción es 1, hará lo siguiente: b.1.1).- Pedirá por teclado al usuario un número real. b.1.2).- Comprobará si el número es negativo. Si es negativo: mostrará el mensaje "El número es Negativo"; y si no lo es: "El número no es Negativo". 13
b.2).- Si la opción es la 2, saldrá del programa. c).- El programa volverá a ejecutarse desde el punto 1 hasta que se elija la opción 2. d).- Cuando se elija la opción 2 y antes de salir del sistema se debe visualizar la cantidad de veces que se eligió la opción 1, cuantos números positivos se introdujeron y cuantos negativos. */ # include typedef int entero; typedef float decimal; main() { decimal real; entero opcion, cont=0, cont_p=0, cont_n=0, limite=0; while (limite=1) { printf("--------------------------------------------\n"); printf("*
MENU DE OPCIONES:
printf("* 1.- Introducir un numero real. printf("* 2.- Salir.
*\n");
printf("--------------------------------------------\n"); printf("Elija una opcion: "); scanf("%d",&opcion); if (opcion==1) { cont++; } switch(opcion) { case 1: 14
*\n"); *\n");
printf("Introduzca un numero real: \n"); scanf("%f",&real); if (real>0) { printf("El numero no es Negativo\n"); cont_p++; system("pause"); break; } if (real<0) { printf("El numero es Negativo\n"); cont_n++; system("pause"); break; } case 2: printf("Se eligio la opcion 1 un total de %d veces\n",cont); printf("Se registraron un total de %d numeros positivos y %d numeros negativos\n",cont_p, cont_n); system("pause"); exit(0); default: printf("Opcion Invalida\n"); system("pause"); break; } real=0; } 15
} •
Problema 9: Desarrolle un programa en C para calcular el factorial de un número.
/* Oscar Eduardo Abreu Luna, CI 13.473.712, Lenguaje y programación básica, sección 403 Nocturno. Informática IUTAR */ /* Problema 9: Desarrolle un programa en C para calcular el factorial de un número.*/ # include typedef int entero; typedef float decimal; main() { entero i, numero, factorial=1; printf("Calcular el factorial de un numero\n"); printf("Escriba un numero entero positivo para calcular su factorial: \n"); scanf("%d",&numero); for (i=numero; i>1; --i) { factorial*=i; } printf("%d! = %d\n",numero,factorial); system("pause"); }
•
Problema 10: Determinar de un grupo de personas cuáles son de sexo femenino y cuáles de sexo masculino, mostrar por pantalla lo siguiente: a) Cantidad de personas procesadas. b) Porcentaje de hombres. c) Porcentaje de mujeres.
16
d) Cuantas mujeres y hombres hay.
/* Oscar Eduardo Abreu Luna, CI 13.473.712, Lenguaje y programación básica, sección 403 Nocturno. Informática IUTAR */ /* Problema 10: Determinar de un grupo de personas cuáles son de sexo femenino y cuáles de sexo masculino, mostrar por pantalla lo siguiente: a) Cantidad de personas procesadas. b) Porcentaje de hombres. c) Porcentaje de mujeres. d) Cuantas mujeres y hombres hay.*/ # include typedef int entero; typedef float decimal; main() { decimal por_hom, por_muj, por_homt, por_mujt; entero cont=1, limite, sexo, hom=0, muj=0; printf("Calculo de personas por sexo\n"); printf("Indique cuantas personas desea ingresar al sistema: \n"); scanf("%d",&limite); while (cont<=limite) { printf("Indique el sexo (1=Masculino, 2=Femenino) para la persona %d: \n",cont); scanf("%d",&sexo); switch(sexo) { case 1: hom++; break; 17
case 2: muj++; break; default: printf("Opcion Invalida\n"); cont=cont-1; system("pause"); break; } cont ++; } por_hom=hom*100; por_muj=muj*100; por_homt=por_hom/limite; por_mujt=por_muj/limite; printf("Se procesaron un total de %d personas.\n",limite); printf("%d fueron hombres y %d fueron mujeres.\n",hom, muj); printf("El porcentaje de hombres procesados es de %.2f y de mujeres es de %.2f\n",por_homt, por_mujt); system("pause"); }
18