You are on page 1of 8

Tema: Estructuras de Iteracin, Simples ( while, do-while) y

Compuesta (for) en lenguaje C.


Propsito: Conocer, comprender y utilizar las estructuras de iteracin en la
solucin de problemas.
Sintaxis while:
while (condicin)
{
instruccin;
}
Donde condicin es una expresin booleana que puede estar formada por
constantes, variables y/o los operadores aritmticos, relacionales y lgicos. El
resultado de la condicin ser nicamente un Verdadero o un Falso; si el
resultado es verdadero se ejecutar la instruccin dentro del cuerpo del ciclo y
se volver a probar la condicin, en tanto sea verdadero el resultado de la
condicin el ciclo se volver a ejecutar, en caso de que el resultado de la
condicin sea falso no se ejecutara el ciclo. Es decir, el ciclo puede ejecutarse
cero o ms veces.
Problema1: Generar y sumar los primeros n nmeros naturales
(1+2+3,,+n).
#include<stdio>
#include<stdlib>
main()
{
int nat=0, n, suma=0;
printf("Cuantos numeros naturales deseas generar y sumar:");
scanf("%d",&n);
while(nat<n)
{
nat=nat+1;//nat++//Contador
printf("%d\n",nat);
suma=suma+nat;//Acumulador
}
printf("___\n");
printf("%d\n",suma);
system("pause");
}
Problema2: Generar y sumar los n nmeros naturales con un
incremento x=1,2,3,,i
#include<stdio>
#include<stdlib>

main()
{
int nat=0, n, inc, suma=0;
printf("Cuantos numeros naturales deseas generar y sumar:");
scanf("%d",&n);
printf("Incremento:");
scanf("%d",&inc);
while(nat<inc*n)
{
nat=nat+inc;//Contador de inc
printf("%d\n",nat);
suma=suma+nat;//Acumulador
}
printf("___\n");
printf("%d\n",suma);
system("pause");
}
Problema3: Generar y sumar n nmeros pares e impares dentro de los
naturales.
#include<stdio>
#include<stdlib>
#include<conio>
main()
{
int nat=0, n, inc, sumpar=0,i,sumimp=0,cond;
printf("Cuantos numeros naturales deseas generar y sumar:");
scanf("%d",&n);
printf("Incremento:");
scanf("%d",&inc);
gotoxy(1,5);
printf("Pares");
gotoxy(9,5);
printf("Impares");
if(inc%2==0)
cond=inc*n;//pares
else
cond=2*inc*n;//impares
while(nat<cond)
{
nat=nat+inc;
i=i+1;
if(nat%2==0)//pares
{
printf("\n%d\n",nat);
sumpar=sumpar+nat;

}
else//impares
{
printf("\n\t%d\n",nat);
sumimp=sumimp+nat;
}
}
printf("\n____ ____\n");
printf("%d\t%d\n",sumpar,sumimp);
system("pause");
}
Problema4: Clculo del factorial de un nmero entre 0 y 31.
#include <stdio.h>
#include <stdlib.h>
main()
{
int num=-1, num2;
while(num<0)
{
printf("Factorial de: ");
scanf("%d",&num);
if(num<0)
printf("\nNumero incorrecto\n");
}
if(num ==0)
printf("El factorial es: %d\n",1);
else
{
num2=num;
while(num2!=1)
{
num2=num2-1;
num=num*num2;
}
printf("El factorial es: %d \n", num);
}
system("PAUSE");
return 0;
}
Problema5: Clculo de factoriales de nmeros entre el 0 y el 31, hasta
que el usuario decida terminar.
#include <stdlib.h>
#include <string>
main()
{

char ans='S';
int num, num2;
while(ans=='S')
{
num=-1;
while(num<0)
{
printf("Factorial de: ");
scanf("%d",&num);
if(num<0)
printf("\nNumero incorrecto\n");
}
if(num ==0)
printf("El factorial es: %d\n",1);
else
{
num2=num;
while(num2!=1)
{
num2=num2-1;
num=num*num2;
}
printf("El factorial es: %d \n", num);
}
ans=' ';
while(ans!='S' && ans !='N')
{
fflush(stdin);
printf("Continuar S/N:");
scanf("%c",&ans);
ans=toupper(ans);
}
}
}

Sintaxis do-while.
do
{
Instruccin;
}while(condicin);
Donde condicin es una expresin booleana que puede estar formada por
constantes, variables y/o los operadores aritmticos, relacionales y lgicos. El
resultado de la condicin ser nicamente un Verdadero o un Falso; si el
resultado es verdadero se ejecutar la instruccin simple o compuesta dentro
del cuerpo del ciclo y se volver a probar la condicin, en tanto sea verdadero
el resultado de la condicin el ciclo se volver a ejecutar, en caso de que el
resultado de la condicin sea falso no se ejecutara el ciclo. El ciclo se ejecutar
una o ms veces.

Problema1: Mostrar el cdigo ASCII ampliado desde 0 hasta 255.


#include<stdio>
#include<stdlib>
main()
{
int num=0;
do
{
printf("%d = %c\n",num, char(num));
num++;
}while(num<256);
system("pause");
}
Problema2: Calcular el promedio de tres calificaciones hasta una precisin
con un decimal, de n alumnos.
#include<stdio>
#include<stdlib>
main()
{
char nom[30];
float cal1, cal2, cal3, prom;
int numalu,i=0;
printf("Numero de alumnos:");
scanf("%d",&numalu);
do
{

fflush(stdin);
printf("Nombre:");
scanf("%[^\n]",&nom);
printf("Calificacion1:");
scanf("%f",&cal1);
printf("Calificacion2:");
scanf("%f",&cal2);
printf("Calificacion3:");
scanf("%f",&cal3);
prom=(cal1+cal2+cal3)/3;
printf("%s tiene el promedio %.1f\n",nom,prom);
i++;
}while(i<numalu);
system("pause");
}
Problema3: Codificacin de caracteres. Leer un carcter ASCII y escribir en su
lugar un carcter codificado. Si el carcter es letra o digito, ser remplazado
por el siguiente carcter de la secuencia, excepto en los casos de Z que ser
remplazado por A y z por a, 9 por 0. De este modo 1 se convierte en 2, C en D,
p en q, etc. Cualquier carcter distinto de letra o digito ser remplazado por un
asterisco (*). La codificacin terminar hasta que se introduzca un asterisco (*).
#include<stdio>
#include<stdlib>
main()
{
char car, carsal;
int bandera;
bandera=1;
do
{
printf("Teclea un caracter:");
scanf("%c",&car);
fflush(stdin);
if(car=='*')
bandera=0;
else
if(car>='0' && car<'9' || car>='A' && car<'Z' || car>='a' && car<'z')
carsal=char((int)car+1);
else
if(car=='9')
carsal='0';
else
if(car=='Z')
carsal='A';
else

if(car=='z')
carsal='a';
else
carsal='*';
printf("Caracter codificado=%c\n",carsal);
}while(bandera!=0);
}
Problema4: Convertir una temperatura leda en grados Fahrenheit a grados
Celsius, usando la frmula: C=(5/9)*(F-32).
#include<stdio>
#include<string>
main()
{
float c,f;
char resp;
printf("CONVERSION DE GRADOS FAHRENHEIT A CENTIGRADOS\n");
do
{
printf("Grados Fahrenheit:");
scanf("%f",&f);
c=(5.0/9.0)*(f-32.0);//agregar los decimales para trabajar con flotantes
printf("%.1f grados fahrenheit es igual a %.1f grados Celsius\n",f,c);
do
{
fflush(stdin);
printf("Continuar S/N:");
scanf("%c",&resp);
resp=toupper(resp);
}while(resp !='S' && resp !='N');
}while(resp=='S');
}
Problema5: Generar y sumar los primeros n nmeros naturales (1,2,3,).
#include<stdio>
#include<conio>
#include<math>
#include<ctype>
int main()
{
char resp;
int n, nat, sumnat;
do
{
nat=0;

sumnat=0;
printf("Cuantos numeros naturales quieres sumar:");
scanf("%d",&n);
while(nat<n)
{
nat++;
printf("%d\n",nat);
sumnat=sumnat+nat;
}
printf("____");
printf("\n%d",sumnat);
do
{
fflush(stdin);
printf("\nContinuar S/N:");
scanf("%c",&resp);
resp=toupper(resp);
}while(resp !='S' && resp !='N');
}while(resp=='S');
return 0;
}

You might also like