Se ha denunciado esta presentación.
Se está descargando tu SlideShare. ×

Bucles anidados 2012

Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
2012
M.Sc. Ana María Salgado G.
UNAN - LEON
24/04/2012
Bucles anidados
Ciclos anidados
2
Bucles anidados
Los bucles anidados constan de un bucle externo con uno o más bucles internos. Cada vez
...
Ciclos anidados
3
Ejemplo #3:
//anidamiento1.c
#include <stdio.h>
int x,y, xultimo = 2, yultimo = 4;
void main(void)
{
for...
Anuncio
Anuncio
Anuncio
Cargando en…3
×

Eche un vistazo a continuación

1 de 15 Anuncio
Anuncio

Más Contenido Relacionado

Presentaciones para usted (20)

Similares a Bucles anidados 2012 (20)

Anuncio

Más reciente (20)

Bucles anidados 2012

  1. 1. 2012 M.Sc. Ana María Salgado G. UNAN - LEON 24/04/2012 Bucles anidados
  2. 2. Ciclos anidados 2 Bucles anidados Los bucles anidados constan de un bucle externo con uno o más 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"); } } Ejemplo # 2 #include<stdio.h> void main(void) { int i, y; for(i = 1; i<=2; i++) { for(y = 1; y<=3; y++) printf("$t"); printf("n"); } }
  3. 3. Ciclos anidados 3 Ejemplo #3: //anidamiento1.c #include <stdio.h> int x,y, xultimo = 2, yultimo = 4; void main(void) { for(x = 1; x <= xultimo; x++) for(y = 1; y <= yultimo; y++) { int producto; producto = x * y; printf(" %d * %d = %d n",x,y,producto); } } Ejemplo #4: //anidamiento2.c #include <stdio.h> int i,j; void main(void) { printf("n tt i t j n"); for(i = 0; i < 4; i++) { printf("Externo t %d n",i); for(j = 0; j < i; j++) printf("Interno tt %d n",j); } }
  4. 4. Ciclos anidados 4 Ejemplo #5: 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 Pérez Materia: Matemática Básica Nota 1: 100 Nota 2: 90 Nota 3: 90 El promedio es: 93.33 //alumnosanidados2.c #include<stdio.h> #include <string.h> char nombre[100]; char materia[70]; int i,k,nota; float promedio,sumparc;
  5. 5. Ciclos anidados 5 void main(void) { for(i=1;i<=5;i++) { printf("Nombre del alumno #%d: ",i); fflush(stdin); gets(nombre); sumparc=0; printf("Materia: "); fflush(stdin); gets(materia); for(k=1;k<=3;k++) { printf("Nota %d: ",k); scanf("%d",&nota); sumparc=sumparc + nota; }//fin del for k promedio=sumparc/3; printf("El promedio es:%.2fnnn",promedio); }//fin del for padre }
  6. 6. Ciclos anidados 6 Ejemplo #6: La función 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 número, 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: %ldn",num,fac); } }
  7. 7. 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--; } suma+=fact; printf("t %d! = %0.f n",i,fact); i++; }while(i <= n); printf("ntsuma = %0.fnn",suma); }
  8. 8. Ciclos anidados 8 Ejemplo #8: El siguiente programa imprime una tabla de m filas por n columnas y un carácter de entrada. //filascolumnas.c #include <stdio.h> int filas, columnas; int i, j; char elCar; void main() { printf("¿Cuantas filas?: "); scanf("%d",&filas); printf("¿Cuantas columnas?: "); scanf("%d",&columnas); printf("¿Que caracter?:"); fflush(stdin); elCar=getchar(); /* bucle externo */ for(i = 0; i < filas; i++) { /*bucle interno */ for(j = 0; j < columnas; j++) putchar(elCar); putchar('n'); } }
  9. 9. Ciclos anidados 9 Ejercicios resueltos 1. Diseñar e implementar un programa que solicite a su usuario un valor no negativo n y visualice la siguiente salida: 1 2 3 … n-1 n 1 2 3 … n-1 …. 1 Solución en Lenguaje C: //triangulonum.c #include <stdio.h> int k, i ,n; void main(void) { do { printf("Introduzca un valor entero:"); scanf("%d",&n); }while(n<=0); i = n; while(i >= 1) { k = 1; while(k <= i) { printf("%dt",k); k++; } printf("n"); i--; } }
  10. 10. Ciclos anidados 10 2. Una aplicación de las computadoras es dibujar gráficos de barra(llamados histogramas). Escriba un programa que dibuje un gráfico como el siguiente donde la cantidad de asteriscos de cada línea corresponda al número que está a la par. Solución 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 3. | *** | 5. | ***** | 7. | ******* | 9. | ********* |____________
  11. 11. Ciclos anidados 11 printf(" |"); for(i=1;i<=12;i++) printf("_"); printf("nn"); }//fin del programa 3. Diseñar un programa que produzca la siguiente salida: ZYXWVUTSRQPONMLKJIHGFEDCBA YXWVUTSRQPONMLKJIHGFEDCBA XWVUTSRQPONMLKJIHGFEDCBA WVUTSRQPONMLKJIHGFEDCBA VUTSRQPONMLKJIHGFEDCBA UTSRQPONMLKJIHGFEDCBA TSRQPONMLKJIHGFEDCBA SRQPONMLKJIHGFEDCBA RQPONMLKJIHGFEDCBA QPONMLKJIHGFEDCBA PONMLKJIHGFEDCBA ONMLKJIHGFEDCBA NMLKJIHGFEDCBA MLKJIHGFEDCBA LKJIHGFEDCBA KJIHGFEDCBA JIHGFEDCBA IHGFEDCBA HGFEDCBA GFEDCBA FEDCBA EDCBA DCBA CBA BA A
  12. 12. Ciclos anidados 12 Solución en Lenguaje C: //abc.c #include <stdio.h> int i , fila; char caracter = 'Z'; void main(void) { for(fila = 1; fila <= 28; fila++) { for(i = caracter; i >= 'A'; i--) { printf("%c",i); } caracter--; printf("n"); } } 4. Escribir un programa que dé como resultado la siguiente figura: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  13. 13. Ciclos anidados 13 Solución en Lenguaje C: //diamanteirregular.c #include <stdio.h> int fil, col; void main(void) { for(fil = 1; fil <= 6; fil++) { if(fil %2 == 0) printf(" "); for(col = 1; col <= 9; col++) printf("* "); printf("n"); } }
  14. 14. Ciclos anidados 14 Ejercicios propuestos 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 están en un mismo año 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 nivelación. Diseñe 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 nivelación. 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 utilización de repeticiones(utilizando estructuras for anidadas) y minimice el número de enunciados printf. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  15. 15. Ciclos anidados 15 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 deberán 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 línea empiece con un número correcto de espacios en blanco. (A) (B) (C) (D) * ********** ********** * ** ********* ********* ** *** ******** ******** *** **** ******* ******* **** ***** ****** ****** ***** ****** ***** ***** ****** ******* **** **** ******* ******** *** *** ******** ********* ** ** ********* ********** * * ********** 7. Una compañía de seguros tiene contratados a n vendedores. Cada uno hace tres ventas a la semana. Su política de pagos es que un vendedor recibe un sueldo base, y un 10% extra por comisiones de sus ventas. El gerente de su compañía desea saber cuánto 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. * ** *** **** ***** ****** ******* ******** *********

×