SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
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
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");
}
}
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);
}
}
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;
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
}
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);
}
}
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);
}
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');
}
}
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--;
}
}
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. | *********
|____________
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
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:
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
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");
}
}
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.
*
* *
* * * *
* * * * * *
* * * * * * * *
* * * * * *
* * * *
* *
*
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.
*
**
***
****
*****
******
*******
********
*********

Mais conteúdo relacionado

Mais procurados

Practica 11 Laboratorio de Computación para Ingenieros FI
Practica 11 Laboratorio de Computación para Ingenieros FIPractica 11 Laboratorio de Computación para Ingenieros FI
Practica 11 Laboratorio de Computación para Ingenieros FIJorge Iván Alba Hernández
 
Ejercicios resueltos de punteros 12a15
Ejercicios resueltos de punteros 12a15Ejercicios resueltos de punteros 12a15
Ejercicios resueltos de punteros 12a15rasave
 
LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO
LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO
LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO Guillermo Iván Prisco Pérez
 
Ejercicios resueltos en el Laboratorio de estructuras struct registros
Ejercicios resueltos en el Laboratorio de estructuras struct registrosEjercicios resueltos en el Laboratorio de estructuras struct registros
Ejercicios resueltos en el Laboratorio de estructuras struct registrosrasave
 
Metodos numéricos, códigos en Matlab
Metodos numéricos, códigos en MatlabMetodos numéricos, códigos en Matlab
Metodos numéricos, códigos en MatlabBryan José Sarango
 
52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigoepetekaun
 
Estructuras repetitivas(while, for, repeat)
Estructuras repetitivas(while, for, repeat)Estructuras repetitivas(while, for, repeat)
Estructuras repetitivas(while, for, repeat)Rommel Lòpez
 
Ejercicios de programacion en c++
Ejercicios de programacion en c++Ejercicios de programacion en c++
Ejercicios de programacion en c++Tony Pesantez
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Juan Astudillo
 

Mais procurados (20)

Practica 11 Laboratorio de Computación para Ingenieros FI
Practica 11 Laboratorio de Computación para Ingenieros FIPractica 11 Laboratorio de Computación para Ingenieros FI
Practica 11 Laboratorio de Computación para Ingenieros FI
 
Estructura repetitiva for y while
Estructura repetitiva for y whileEstructura repetitiva for y while
Estructura repetitiva for y while
 
06 - Arrays y matrices en lenguaje C
06 - Arrays y matrices en lenguaje C06 - Arrays y matrices en lenguaje C
06 - Arrays y matrices en lenguaje C
 
Sistema hexadecimal
Sistema hexadecimalSistema hexadecimal
Sistema hexadecimal
 
Ejercicios resueltos de punteros 12a15
Ejercicios resueltos de punteros 12a15Ejercicios resueltos de punteros 12a15
Ejercicios resueltos de punteros 12a15
 
LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO
LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO
LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO
 
Ejercicios resueltos en el Laboratorio de estructuras struct registros
Ejercicios resueltos en el Laboratorio de estructuras struct registrosEjercicios resueltos en el Laboratorio de estructuras struct registros
Ejercicios resueltos en el Laboratorio de estructuras struct registros
 
Metodos numéricos, códigos en Matlab
Metodos numéricos, códigos en MatlabMetodos numéricos, códigos en Matlab
Metodos numéricos, códigos en Matlab
 
Elementos de un arreglo
Elementos de un arregloElementos de un arreglo
Elementos de un arreglo
 
Sintaxis del lenguaje c++
Sintaxis del lenguaje c++Sintaxis del lenguaje c++
Sintaxis del lenguaje c++
 
Acumuladores y Contadores
Acumuladores y ContadoresAcumuladores y Contadores
Acumuladores y Contadores
 
C++ y sus librerias
C++ y sus libreriasC++ y sus librerias
C++ y sus librerias
 
Notacion sigma 01_2014
Notacion sigma 01_2014Notacion sigma 01_2014
Notacion sigma 01_2014
 
52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo
 
Estructuras repetitivas(while, for, repeat)
Estructuras repetitivas(while, for, repeat)Estructuras repetitivas(while, for, repeat)
Estructuras repetitivas(while, for, repeat)
 
Programación 3: colas
Programación 3: colasProgramación 3: colas
Programación 3: colas
 
Ejercicios de programacion en c++
Ejercicios de programacion en c++Ejercicios de programacion en c++
Ejercicios de programacion en c++
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
 
Ciclo while y do while
Ciclo while y do whileCiclo while y do while
Ciclo while y do while
 
Strrev
StrrevStrrev
Strrev
 

Semelhante a Bucles anidados 2012

Semelhante a Bucles anidados 2012 (20)

Tema 2 - Programación básica en C (III)
Tema 2  - Programación básica en C (III)Tema 2  - Programación básica en C (III)
Tema 2 - Programación básica en C (III)
 
03 iteracion
03 iteracion03 iteracion
03 iteracion
 
Laboratorio1 entrada-salida de datos / Lenguance C
Laboratorio1   entrada-salida de datos / Lenguance CLaboratorio1   entrada-salida de datos / Lenguance C
Laboratorio1 entrada-salida de datos / Lenguance C
 
Ejercicios introduccion a la programación en C
Ejercicios  introduccion a la programación en CEjercicios  introduccion a la programación en C
Ejercicios introduccion a la programación en C
 
Ejercicios C
Ejercicios CEjercicios C
Ejercicios C
 
6.funciones y recursividad en c++
6.funciones y recursividad en c++6.funciones y recursividad en c++
6.funciones y recursividad en c++
 
Ejemplos c
Ejemplos cEjemplos c
Ejemplos c
 
Ejercicios3
Ejercicios3Ejercicios3
Ejercicios3
 
Fundamentos de la programacion u2 ejercicios
Fundamentos de la programacion u2 ejerciciosFundamentos de la programacion u2 ejercicios
Fundamentos de la programacion u2 ejercicios
 
Programas sencillos en lenguaje C
Programas sencillos en lenguaje CProgramas sencillos en lenguaje C
Programas sencillos en lenguaje C
 
Programas básicos en C
Programas básicos en C Programas básicos en C
Programas básicos en C
 
Cpp
CppCpp
Cpp
 
Cpp
CppCpp
Cpp
 
Practicas bloque 2
Practicas bloque 2Practicas bloque 2
Practicas bloque 2
 
Pres arreglosmat animacion
Pres arreglosmat animacionPres arreglosmat animacion
Pres arreglosmat animacion
 
Pseudocodigo
PseudocodigoPseudocodigo
Pseudocodigo
 
Fundamentos de Programacion - Unidad 4 control de flujo
Fundamentos de Programacion - Unidad 4 control de flujoFundamentos de Programacion - Unidad 4 control de flujo
Fundamentos de Programacion - Unidad 4 control de flujo
 
MODELO PASO DE MENSAJES
MODELO PASO DE MENSAJESMODELO PASO DE MENSAJES
MODELO PASO DE MENSAJES
 
Practica 10 Laboratorio de Computación para Ingenieros FI
Practica 10 Laboratorio de Computación para Ingenieros FIPractica 10 Laboratorio de Computación para Ingenieros FI
Practica 10 Laboratorio de Computación para Ingenieros FI
 
Lenguaje de programación
Lenguaje de programaciónLenguaje de programación
Lenguaje de programación
 

Último

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 

Último (11)

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 

Bucles anidados 2012

  • 1. 2012 M.Sc. Ana María Salgado G. UNAN - LEON 24/04/2012 Bucles anidados
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. * ** *** **** ***** ****** ******* ******** *********