UNAN - LEON 24/04/2012 Bucles anidados Ciclos anidados
2
Bucles anidados
Los bucles anidados constan de un bucle externo con uno o ms bucles internos. Cada vez que se repite el bucle externo, los bucles internos se repiten, se vuelven a evaluar los componentes de control y se ejecutan todas las iteraciones requeridas.
Ejemplo # 1
#include <stdio.h> void main(void) { int i, y; for(i = 1; i< =3; i++) { for(y = 1; y < =2; y++) printf("#\t"); printf("\n"); } }
Realice un programa que calcule el promedio de tres notas para 10 alumnos. El ejemplo de una salida puede ser: Nombre del alumno #1: Luis Prez Materia: Matemtica Bsica Nota 1: 100 Nota 2: 90 Nota 3: 90 El promedio es: 93.33
for(k=1;k<=3;k++) { printf("Nota %d: ",k); scanf("%d",¬a); sumparc=sumparc + nota; }//fin del for k
promedio=sumparc/3; printf("El promedio es:%.2f\n\n\n",promedio); }//fin del for padre
}
Ciclos anidados
6
Ejemplo #6:
La funcin factorial se aplica a enteros positivos. El factorial de un entero positivo n es (!n) es igual al producto de los enteros positivos del 1 al n. Escriba un programa que calcule los factoriales de los enteros del 1 al 5. Ejemplo: !3 = 1*2*3 = 6 Sugerencia: Primero calcular el factorial para un solo nmero, luego introducir un ciclo que vaya del 1 al 5.
//factorialanidado3.c #include <stdio.h>
void main(void) { int num, i; long fac;
//printf("Ingrese el numero: "); //scanf("%d",&num); for(num = 1; num <= 5; num++) { fac = 1; for(i = 1; i <= num; i++) fac = fac * i; printf("\nEl factorial de %d es: %ld\n",num,fac); }
}
Ciclos anidados
7
Ejemplo #7:
Escriba un programa que calcule y visualice:
1! + 2! + 3! + + (n 1)! + n!
//factorialanidado2.c #include <stdio.h>
void main(void) { int n, i = 1, m; float fact, suma = 0; printf("Ingrese el valor de n: "); scanf("%d",&n);
do { fact = 1; m = i; while(m > 1) { fact *= m; m--; }
2. Una aplicacin de las computadoras es dibujar grficos de barra(llamados histogramas). Escriba un programa que dibuje un grfico como el siguiente donde la cantidad de asteriscos de cada lnea corresponda al nmero que est a la par.
Solucin en Lenguaje C:
/*histogra.c*/ #include<stdio.h> int naster,nlineas,i; void main(void) { for(nlineas=3;nlineas<=9;nlineas++) { if(nlineas % 2!=0) { printf("%d.| ",nlineas); for(naster=1;naster<=nlineas;naster++) printf("*"); printf("\n"); } else printf(" |\n"); }//fin del for padre
1. Escribir un programa que visualice la siguiente salida:
1 1 2 1 2 3 1 2 3 4 1 2 3 1 2 1
2. Se desea obtener el promedio de g grupos que estn en un mismo ao escolar; siendo que cada grupo puede tener n alumnos, que cada alumno puede llevar m materias y que en todas las materias se promedian tres calificaciones para obtener el promedio de la materia. Lo que se desea desplegar es el promedio de los grupos, el promedio de cada grupo y el promedio de cada alumno.
3. El profesor de una materia desea conocer la cantidad de sus alumnos que no tienen derecho al examen de nivelacin. Disee un programa que lea las calificaciones obtenidas en las 5 unidades por cada uno de los 40 alumnos y escriba la cantidad de ellos que no tienen derecho al examen de nivelacin.
4. Escriba un programa que imprima la forma en diamante siguiente. Puede utilizar enunciados printf que impriman ya sea un (*), o un espacio en blanco. Maximice su utilizacin de repeticiones(utilizando estructuras for anidadas) y minimice el nmero de enunciados printf.
5. Realice un programa que d como salida lo siguiente:
6. Escriba un programa que imprima los siguientes patrones por separado, uno debajo del siguiente. Utilice ciclos for para generar los patrones. Todos los asteriscos debern ser impresos por un solo enunciado printf de la forma printf(*); esto hace que los asteriscos se impriman uno al lado del otro. Sugerencia: los dos ltimos patrones requieren que cada lnea empiece con un nmero correcto de espacios en blanco.
7. Una compaa de seguros tiene contratados a n vendedores. Cada uno hace tres ventas a la semana. Su poltica de pagos es que un vendedor recibe un sueldo base, y un 10% extra por comisiones de sus ventas. El gerente de su compaa desea saber cunto dinero obtendr en la semana cada vendedor por concepto de comisiones por las tres ventas realizadas, y cuanto tomando en cuenta su sueldo base y sus comisiones. * ** *** **** ***** ****** ******* ******** *********