Sunteți pe pagina 1din 119

Cuandoserepitenunasecuenciadeinstruccionesun

nmerodeterminadodeveces,sedenominaSENTENCIAS
REPETITIVAS(Bucles).Seejecutanmientrassecumpleuna
determinadacondicindeevaluacin
Diseo de bucles
La repeticin se realiza mediante:
1.-Contador
2.- En forma interactiva entre usuario y programa
3.- La funcin parte entera.

PreTest

PosTest

# conocido de

3 tipos

Pre test
mientras

PosTest
Repetir
/hacer

Numero inst.
Conocidas
desde

Mientras(<cond>)
inicio
<instrs>;
<Variable para bucle>

fin

Llamado tambin bucle con entrada


controlada, es aquel que repite un
grupo de acciones mientras que el
resultado de la condicin lgica sea
verdadera.
En otros trminos, si el resultado de
evaluar la condicin es verdadera se
ejecuta por lo menos UNA instruccin o
ms. En otro caso NO se ejecuta
ninguna instruccin.
Sintaxis

mientras(< condicin >)


inicio
<instrucciones>;
fin

Diagrama de Flujo de Datos

Bucles vs Condicionales

Aplicacin1
Escribir un programa que permita encontrar la
sumaacumuladadelaserie:
2
3
4
5
k
1 + 2 + 3 + 4 +.+ n
El programa debe ser interactivo, es decir;
despus de cada ejecucin, el sistema enva el
mensaje:
Desea continuar..? (S / N). Si edita S contina
ejecutandoelprograma,enotrocasofinaliza.

Inicio
EnterossumS=0,i=1,n;letraresp;
Mientras (resp=S)
inicio
imprimir("Ingreseun#deelementos:";leer(n);
Mientras(i<=n)
Inicio
sumaS=sumaS+pow(1,i+1)
i=i+1
Fin
Imprimir("Suma=:",sumaS)
Imprimir("nuevaoperacion..?(S/N)",leer(resp)
sumaS=0
fin// del mientras resp==s
Fin

Aplicacin2
Escribirunprogramaquepermitaleerunnmero
compuestopormsdeundgitoyluegomostrar:
Total de dgitos, total de dgitos pares e impares,
nmeroinvertido,totaldesumadedgitosparese
impares respectivamente. El programa debe ser
interactivo,esdecir;despusdecadaejecucin,el
sistemaenvaelmensaje:
Desea continuar..? (S / N). Si edita S contina
ejecutandoelprograma,enotrocasofinaliza.

Inicio
Enterosr,d,n,inv=0,par=0,impar=0,nd,sump=0,sumimpar=0;charresp='s';
Mientras(resp=='s')
Inicio
imprimir("Ingreseunnmeroconmasde1dgito:";leer(n);
r=n;nd=0;//inicializcontadordedgitos
Mientras(n>0)
Inicio
d=n%10;
nd=nd+1;
Si(d%2==0)entonces
inicio
par++;sump+=d;
fin
Sino
Inicio
impar++;sumimpar+=d;
Fin
inv=inv*10+d;n=n/10;
Fin
Imprimir(nd,inv,par,sump,impar,sumimpar)
Imprimir(Continuar(s/n),leer(resp;
Fin
Fin

Llamado bucle con salida controlada, ejecuta


<instrucciones>lomismoquelaestructuramientras,con
la diferencia que primero ejecuta una <instruccin> y
luego verifica la <condicin>.
Sintaxis

hacer /repetir
<instrucciones>
mientras (<cond>);

figura 1

figura 2

primero ejecuta una <instruccin> y luego verifica


la <condicin>. Cuando la salida es :
1.- F: continuar repitiendo el proceso. figura 1
2.- V : continuar repitiendo el proceso. figura 2
Sintaxis

repetir
<instrucciones>
hasta que <cond>

hacer
<instrucciones>
mientras <cond>

Aplicacin:leerEdadyverificarlalgicadefigura1y2

Ahora,usando
1.-Operadorlgicoy

2.- Operador Lgico O:


2.1.- PSeInt: Hasta..Que !(Edad<0 || Edad>100)
2.2.- En c++ : Mientras(!(!(edad<0 || edad>100)));

Anlisis de Estructura Pos test (bucles):


Paraproponerlasolucindeunproblemamedianteunprogramaenla
prctica,existenLenguajesdeprogramacinestructuradosqueusan
unadelassiguientesalternativas:
1.-CuandoresultadodelacondicinesF(no),continuarhaciendo
instrucciones.UsadoporelcompiladorPascalVerfigura1.
2.-CuandoresultadodelacondicinesV(si),continuarhaciendo
instrucciones.UsadoporelcompiladorC++5.02,javaVerfigura2.
Comoseobservaenlasfiguras,primeroserealizalainstruccin;

Aplicacin.- Calcular el factorial de un numero n, sabiendo que n nunca debe


ser negativo. El programa ser interactivo
Variables
i=1,fact,n: enteros;
hacer
escribir Ingrese n = ";leer
n;
mientras n<0 ;
fact=1;
Hacer
fact=fact*i;
i=i+1;
mientras i<=n ;
escribir El factorial es =
,fact;
Fin

Proceso Repetir_FActorial
definir resp como caracter;
definir n,i, fact como enteros;
repetir
i<-1;
fact<-1;
repetir
Escribir "Ingrese n=
";leer n;
Hasta Que (n>0)
Repetir
fact<-fact*i
i<-i+1;
Hasta Que (i>n)
escribir " El factorial es =
",fact;
escribir "Desea hacer buevo
calculo..? (S/N) ==>"; Leer
resp; sin bajar;
Hasta Que resp!='S'
si resp='N' entonces
Escribir " Gracias por su
visita...";

Aplicacin: Disear un programa que permita encontrar la suma acumulada


de la serie = 1*1 + 2*2 + 3*3+.+n*n.
Considerar que a<=b, sino intercambiar
voidmain()
{inti,ldi,ldd,suma=0,aux;
system("color1b");system("titlePorCordovaNeriT.");
do{clrscr();system("color1b");
gotoxy(10,3);cout<<"ingeseldi=";cin>>ldi;
gotoxy(10,4);cout<<"ingeseldd=";cin>>ldd;
if(ldi<=ldd)
{gotoxy(10,7);cout<<"correcto";
}
else
{gotoxy(10,7);cout<<"Intercambiaresusdatos:";
aux=ldi;ldi=ldd;ldd=aux;
}
}while(!(ldi<=ldd));
gotoxy(10,9);cout<<"Datoscorrectos";
for(inti=ldi;ldi<=ldd;ldi++)
{suma=suma+ldi*ldi;
gotoxy(10,12);cout<<"laSumaes="<<suma;
}getche();}

Disear un programa que permita decomposer un


numero n en la suma de dos numeros a, b
cuadrados, donde a<=b. El programa debe ser
interactivo

voidmain(){intN,a=0,b,num,t=0;charresp
system("titlePorCordovaNeriTeodoro");system("color5a");
do {clrscr();system("color1b");gotoxy(10,2);
cout<<"DESCOMPONERNUMEROENSUMADECUADRADOS";
gotoxy(10,5);cout<<"IngreseNumero=";cin>>N;
do{b=0;
do { num=pow(a,2)+pow(b,2);
if((num==N)&&(a<=b))
{gotoxy(10,8+t);
t++;
cout<<t<<".-"<<num<<"="<<a<<"^2+"<<b<<"^2,";
gotoxy(40,8+t-1);cout<<"condicion:"<<a<<"<="<<b;
}
b++;
}while(b<=N);
a++;
}while(a<=N);
gotoxy(10,10);cout<<"Totaldeformas="<<t;
t=0;
gotoxy(10,14);cout<<"Sr.quiereingresarnuevonumero
<S/N>:";resp=toupper(getch());
}while(resp=='S');getch();
}
Tutor : Crdova Neri T

25

Aplicacin . Disear un programa que permita validar un numero de entrada de


solo 1 digito, se tiene solo 3 oportunidades
voidmain()
{intn,ne=0,d,aux,num,nd=0;system("color4a");
system("titlePorCordovaNeriT.");
gotoxy(15,1);cout<<"MODULOVALIDAR;
do{ ne++;
gotoxy(10,4);cout<<"Intento#:"<<ne<<",";
gotoxy(30,4);cout<<"Lequedan"<<(4-ne)<<"intentos";
if(ne<=3)
{gotoxy(10,6);clreol();system("color1b");
cout<<"Ingresenumero=";cin>>n;
}
else
{clrscr();system("color4a");gotoxy(25,12);
cout<<"Sr.execedioalternativas,hastaluego";getche();exit(0);
}
}while(n<10);
aux=n;
while(aux>0){d=aux%10;nd++;aux=aux/10;}
gotoxy(10,9);cout<<"Elnumero"<<n<<"tiene"<<nd<<"digitos";getche();
}
Tutor : Crdova Neri T

26

Aplicacin1.-:Disearunprogramaquepermitaencontrarlasumaacumuladade
la:
1
2
3
n
serie= 1 + 2 + 3+.+n

Inicio
enterosi=1,sumaS=0,n,dato;
Imprimir("ingreseterminos),
;leer(n)//validon
hacer
Imprimir(""Ingresenmerodetrminos=";leer(n);
mientras(n<1);
Imprimir("Udsumar"<<n<<"trminosdelaserie";
Hacer
sumaS=sumaS+pow(i,i);
i++;
mientras (i<=n);
Imprimir("Lasumaes,sumaS)

2
3
4
k
serie= 1 + 2 + 3+.+n
voidmain()
{inti=1,sumaS=0,n,dato;
do{gotoxy(10,4);cout<<"Ingresenmerodetrminos=";cin>>n;
} while(n<1);
cout<<"Udsumar"<<n<<"trminosdelaserie";
do{sumaS=sumaS+pow(i,i+1);
i++;
}while (i<=n);
cout<<"Lasumaes=<<sumaS

Aplicacion 2.- Disearunprogramaquepermitaleernnumerosenterosyluego


mostrar:
a).-Sumadenumerosparespositivos
b).-Sumadenumerosparesnegativos
c).-Sumadenumerosimparespositivos
d).-Sumadenumerosimparesnegativos

voidmain()
{intn,k=0,a,i=1,spp=0,spn=0,sip=0,simpp=0,simpn=0;
gotoxy(10,2);cout<<"Ingresetotaldenumeros=";cin>>n;
do{k++;gotoxy(10,3+k);cout<<"Ingresenumero"<<k<<"=";cin>>a;
if(a%2==0)
{if(a>0)
{spp=spp+a;}
else
{spn=spn+a;}
}
else
{if(a>0)
{simpp=simpp+a;}
else
{simpn=simpn+a;}
}
i++;
}while(i<=n);
gotoxy(10,17);cout<<"SumaParesPositivos="<<spp;
gotoxy(10,18);cout<<"SumaParesNegativos="<<spn;
gotoxy(10,21);cout<<"SumaImparesPositivos="<<simpp;
gotoxy(10,22);cout<<"SumaImparesNegativos="<<simpn;getche();
}

Aplicacin 2.-- disearunprogramaquepermitavalidardatosdeusuario


por:
User=100,clave=123.elusuariosolodisponede3opcionesparaintentode
validaciondedatos.Silosdatossoncorrectoselsistemasolicitaqueingrese
4practicas,identificarlamenoryluegosacarpromedioeliminandolamenor
nota.Mostrarelestadodelalumno:Aprobado/Desaprobado.Elsistemadebe
procesarnalumnos.

voidmain()
{system("color1b");intuser,clave,pc1,pc2,pc3,pc4,min=20;
charresp;
system("titlePorCordovaNerit.");
intn,k=0,a,i=1,spp=0,spn=0,sip=0,simpp=0,simpn=0;
gotoxy(15,6);cout<<"<<<<MODULODEVALIDACION>>>>>>";
gotoxy(20,8);cout<<"___________________________";
gotoxy(20,14);cout<<"___________________________";
do{
gotoxy(25,10);clreol();system("color1b");cout<<"Usuario=";cin>>user;
gotoxy(25,12);clreol();system("color1b");cout<<"Clave=";cin>>clave;
gotoxy(35,12);cout<<"****";
if((user==100)&&(clave==123))
{gotoxy(25,16);cout<<"Bienvenido....";
}
i++;
}while(!((user==100)&&(clave==123)));
gotoxy(25,18);cout<<"CONTINUAR...................";getche();
clrscr();

do{k++;clrscr();system("color6A");
gotoxy(25,6);cout<<">>>SISTEMAACADEMICO<<<<";
gotoxy(20,7);cout<<"_____________________________________";
do{gotoxy(25,9);clreol();system("color6A");cout<<"IngresePc1=;cin>>pc1;
}while(pc1<0||pc1>20);
gotoxy(25,10);cout<<"IngresPc2=";cin>>pc2;
gotoxy(25,11);cout<<"IngresPc3=";cin>>pc3;
gotoxy(25,12);cout<<"IngresPc4=";cin>>pc4;
if(min>pc1){min=pc1;}
if(min>pc2){min=pc2;}
if(min>pc3){min=pc3;}
if(min>pc4){min=pc4;}
gotoxy(55,12);cout<<"Notaminima="<<min;
floatpp=((pc1+pc2+pc3+pc4)-min)/3.0;
gotoxy(25,14);cout<<"Promediodepracticas="<<pp;
if(pp>11.5)
{gotoxy(60,14);cout<<"APROBADO";}
else
{gotoxy(60,14);cout<<"DESAPROBADO";}
gotoxy(10,23);cout<<"Deseaprocesarnotasdenuevoalumno..?<S/N>==>";
resp=getch();
}while(resp=='S');
if(resp=='N'){clrscr();system("color4a");gotoxy(20,12);cout<<"Graciasvisitagetche();}

Problema 2.Algunos nmeros enteros se pueden representar


como suma de dos enteros al cuadrado.
por ejemplo 50 = 12 + 72 = 52 + 52. Disear un
programa que determine la cantidad de formas
distintas t en las que se puede escribir un numero
entero n como suma de dos cuadrados a2 + b2
donde 0 a b n.
Por ejemplo
si n = 50 entonces
hay dos formas
por lo que t = 2.

Tutor : Crdova Neri T

CordovaNeriT.

33
33

#definelinea"-----------------------------------------------"
voidmain()
{intN,a,b,num,t=0;
charresp;system("titlePorCordovaNeriTeodoro");system("color5a");
do
{clrscr();system("color1b");gotoxy(10,2);
cout<<"DESCOMPONERNUMEROENSUMADECUADRADOS";
gotoxy(5,3);cout<<"____________________________________________";
gotoxy(10,5);cout<<"IngreseNumero=";cin>>N;
a=1;
do{
b=1;
do
{num=pow(a,2)+pow(b,2);
if((num==N)&&(a<=b))
{t++;
gotoxy(10,8+t);cout<<t<<".-"<<num<<"="<<a<<"^2+"<<b<<"^2,";
gotoxy(40,8+t);cout<<"condicion:"<<a<<"<="<<b;
}
b++;
}while(b<=N);
a++;
}while(a<=N);
gotoxy(10,12);cout<<"Totaldeformas="<<t;getche();
t=0;//actualizar
gotoxy(10,16);cout<<"Sr.quiereingresarnuevonumero<S/N>:";resp=toupper(getch());
}while(resp=='S');getch();

34

Aplicacin . Disear un programa que permita validar un numero de entrada de


solo 1 digito, se tiene solo 3 oportunidades
voidmain()
{intn,ne=0,d,aux,num,nd=0;system("color4a");
system("titlePorCordovaNeriT.");
gotoxy(15,1);cout<<"MODULOVALIDAR;
do{ ne++;
gotoxy(10,4);cout<<"Intento#:"<<ne<<",";
gotoxy(30,4);cout<<"Lequedan"<<(4-ne)<<"intentos";
if(ne<=3)
{gotoxy(10,6);clreol();system("color1b");
cout<<"Ingresenumero=";cin>>n;
}
else
{clrscr();system("color4a");gotoxy(25,12);
cout<<"Sr.execedioalternativas,hastaluego";getche();exit(0);
}
}while(n<10);
aux=n;
while(aux>0){d=aux%10;nd++;aux=aux/10;}
gotoxy(10,9);cout<<"Elnumero"<<n<<"tiene"<<nd<<"digitos";getche();
}
Tutor : Crdova Neri T

35

Aplicacion

Inicio
enterosi=1,sumaS=0,n,dato;
Imprimir("ingreseterminos),
;leer(n)//validon

hacer
Imprimir(""Ingresenmerodetrminos=";leer(n);
mientras(n<1);
Imprimir("Udsumar"<<n<<"trminosdelaserie";
Hacer
sumaS=sumaS+pow(i,i+1);
i++;
mientras (i<=n);
Imprimir("Lasumaes,sumaS)

3.- Estructura Repetitiva: desde/para

Conceptualizaciom
1

Contador
inicializado

Condicion
booleana

Incrementar
el contador

i=1

i<=n

i= i+1

desde ( i = 1 hasta n) hacer


Tutor : Crdova Neri T

37

3.- Estructura Repetitiva: desde/para


Permiterealizarinstruccionesconociendo
elnmerodeiteraciones.
Sintaxis:
desde (inicializar;<condicin>; contador)
inicio
<instrs>;
fin
donde:
1.-inicializar:indicavalordondeiniciaelbucle.
2.-<condicin>: se evala antes de cada
iteracin. Si es verdadera, se ejecuta el bloque
de <instrs>, en caso contrario se termina la
estructuraysesaltaalainstruccinsiguiente.
3.-Contador:eslainstruccinaejecutarse
cuandoseterminacadaiteracin

Tutor : Crdova Neri T

38

Aplicacin

2
3
4
k
Programa para sumar serie 1 + 2 + 3+.+ n

Permiterealizarinstruccionesconociendo
el nmero de iteraciones.

Diagrama de flujo de datos

Sintaxis:
desde (inicializar;<condicin>; contador)

inicio
<instrs>;
fin
donde:
1.-inicializar:indicavalordondeiniciael
bucle.
2.-<condicin>: se evala antes de cada
iteracin. Si es verdadera, se ejecuta el
bloque de <instrs>, en caso contrario se
termina la estructura y se salta a la
instruccinsiguiente.
3.-Contador:eslainstruccinaejecutarse
Tutor : Crdova Neri T
cuandoseterminacadaiteracin

39

Problema 1- Disear un programa que permita encontrar la suma


acumuladadelaserie:
2
3
4
5
k
1 + 2 + 3 + 4 +.+ n
debe calcular mediante los 2 criterios:
a).- Sumar dese 1 hasta p( p: trminos a usar)
b).- Definir un intervalo [c..d] donde se desea sumar, considerando
que c<=d en otro caso intercambiarlo.
Elprogramadebeserinteractivo,esdecir;despusdecadaejecucin,el
sistemaenvaelmensaje:Deseacontinuar..?(S/N).SieditaScontina
ejecutandoelprograma,enotrocasofinaliza

Tutor : Crdova Neri T

40

voidmain()
{intcont,min=21,nota,k=0,n,i=1,sumaS=0;charresp;
system("titleCordovaNeriT.");
//registrar();//validaelnumerodenotasaleer
do{clrscr();system("color1b");
gotoxy(10,2);cout<<"234k";
gotoxy(10,3);cout<<"SUMANDOSERIE:1+2+3+...+n";
gotoxy(5,4);cout<<"----------------------------------------------";
gotoxy(10,6);cout<<"Ingreseterminos=";cin>>n;
for(i=1;i<=n;i++)
{
sumaS=sumaS+pow(i,i+1);
}
gotoxy(10,9);cout<<"Lasumaes="<<sumaS;
gotoxy(10,13);cout<<"Sr.deseacontinuar..?(S/N)==>";
cin>>resp;
sumaS=0;
}while(resp=='S');
}
Tutor : Crdova Neri T

41

Aplicacin.-ParalosprocesosmostradosenelsiguienteDFD,disearunprograma
quepermitacalcularelpromediodenotas

Tutor : Crdova Neri T

42

menor edad y el numero que se repiten .


voidmain()
{intcont,min=21,i,nota,k=0,n;
system("titleCordovaNeriT.");system("color1b");
gotoxy(10,2);cout<<"BUSCANDOMENORNOTA";
gotoxy(5,3);cout<<"----------------------------------";
gotoxy(10,5);cout<<"Ingresenotas=";cin>>n;
for(i=1;i<=n;i++)
{gotoxy(5,7);cout<<"#Nota";
gotoxy(4,8);cout<<"---------------------";
do{k++;gotoxy(8,8+k);clreol();system("color1b");
cout<<i<<".-";cin>>nota;
}while(nota<0);
if(nota<min)
{min=nota;cont=1;
}
else
if(nota==min)
{cont++;}
}
gotoxy(4,12+n);cout<<"Lamenornotaes"<<min<<"yserepite"<<cont<<veces";
getche();}
43

Programa para leer n notas y mostrar la mayor nota.


voidmain()
{inti,n,mayor=-1,nota;
system("color1b");system("titlePorCordovaNeriT.");
gotoxy(10,4);cout<<"Ingresen=";cin>>n;
for(i=1;i<=n;i++)
{gotoxy(10,5+i);
cout<<"nota"<<i<<".-";cin>>nota;
if(nota>mayor)
{
mayor=nota;
}
}
gotoxy(10,14);cout<<"Mayornota="<<mayor;
getche();
}

Tutor : Crdova Neri T

44
44

Programa para leer n notas y mostrar la mayor nota.


voidmain()
{inti,n,mayor=-1,nota,no=0;
system("color1b");system("titlePorCordovaNeriT.");
do{no++;
if(no<=3)
{gotoxy(30,3);cout<<"Operacion="<<no;
gotoxy(50,3);cout<<"Lequedan"<<4-no;
gotoxy(10,4);clreol();system("color1b");cout<<"Ingresen=";cin>>n;
}
else
{clrscr();gotoxy(30,12);system("color4a");
cout<<"Salirdelsistema";getche();exit(0);
}
}while(n<0);
for(i=1;i<=n;i++)
{do{gotoxy(10,5+i);clreol();system("color1b");
cout<<"nota"<<i<<".-";cin>>nota;
if(nota>mayor)
{mayor=nota;}
}while(nota<0||nota>20);
}
gotoxy(10,14);cout<<"Mayornota="<<mayor;getche();}
45

Problema 3.- Disear un programa que permita generar una tabla de


multiplicar de orden 12 *12 y luego :
1.- Dar un reporte del total de

nmeros dentro de la tabla con un


dgito
3.- Dar un reporte del total de
nmeros dentro de la tabla con dos
dgitos
4.-Dar un reporte del total de
nmeros dentro de la tabla con tres
dgitos
5.- Encontrar el nmero mayor y
mostrarlo en forma invertida ( 144
441)
6.- Usando respuesta en 5),
encontrar el total de dgitos pares y
mostrarlasumaacumulada
7.- Usando respuesta en 5),
encontrar el totalde dgitos impares
ymostrarlasumaacumulada.
Tutor : Crdova Neri T

46

voidmain()
{inti,j,mult,und=0,dosd=0,tresd=0,may=0;
system("titlePorCordovaNeriT.for_tabla_Mult.cpp");system("color1E");
gotoxy(15,2);cout<<"TABLADEMULTIPLICARDE12*12";
gotoxy(5,3);cout<<"------------------------------------------------------";
for(i=1;i<=12;i++)
{for(j=1;j<=12;j++)
{mult=i*j;gotoxy(2+4*i,4+j);cout<<mult;
if(mult<10){und++;}
else
if((mult<100)&&(mult>9)){dosd++;}
else
if((mult>99)&&(mult<1000)){tresd++;may=mult;}
}
}
gotoxy(5,18);cout<<"------------------------------------------------------";
gotoxy(12,19);cout<<"Enlatablahay:";
gotoxy(12,21);cout<<"1.-"<<und<<"numerosde1digito.";
gotoxy(12,22);cout<<"2.-"<<dosd<<"numerosde2digitos.";
gotoxy(12,23);cout<<"3.-"<<tresd<<"numerosde3digitos.";
gotoxy(12,24);cout<<"4.-"<<"Elmayornumerode3digitoses:"<<may;
getche();
}
Tutor : Crdova Neri T

47

Nmeros amigos:

Modulodevalidacion

Dos nmeros amigos son dos son


nmeros enteros positivos a y b tales que a
es la suma de los divisores propios de b, y b
es la suma de los divisores propios de a. (la
unidad se considera divisor propio, pero no lo
es el mismo nmero).
Un ejemplo es el par de naturales (220, 284),
ya que:
Los divisores propios de 220 son 1, 2, 4, 5, 10,
11, 20, 22, 44, 55 y 110, que suman 284.
Los divisores propios de 284 son 1, 2, 4, 71 y
142, que suman 220.
Si un nmero es amigo de s mismo (es igual
a la suma de sus divisores propios), recibe el
nombre de nmero perfecto.

Tutor : Crdova Neri T

48
48

Tutor : Crdova Neri T

49

voidmain()
{intnv=0,i,j,ni=0,n,k,a,b,sumadiva=0,sumadivb=0;
charuser[5],clave[4],resp='S',opc,resp1;
system("titlePor:CordovaNeri,T:FOR_DO_IF_VALD_2010_IF_LP_ABRIL");
system("color1b");system("color4A");
do{ni++;
if(ni<=3)
{clrscr();system("color1b");
gotoxy(27,4);cout<<"==>VALIDANDODATOSDELUSUARIO<==";
gotoxy(10,8);cout<<linea;
gotoxy(10,14);cout<<linea;
gotoxy(25,10);cout<<"Usuario=";gotoxy(25,11);cout<<"Clave=";

gotoxy(35,16);cout<<"IntentoNumero"<<ni;
for(i=0;i<4;i++)
{gotoxy(35+i,10);user[i]=getch();cout<<"*";
}
for(j=0;j<3;j++)
{gotoxy(35+j,11);clave[j]=getch();cout<<"*";
}
}
else
{clrscr();system("color4a");gotoxy(20,12);
textcolor(16);cout<<"Ud.superosusalternativas...hastaluego";getche();exit(0);
}
}while((strcmp(strupr(user),"FIIS")!=0)&&(strcmp(clave,"123")!=0));
Tutor : Crdova Neri T

50

gotoxy(5,7);cout<<"------------------------------------------------------------------";
do
{gotoxy(15,6);clreol();system("color8b");cout<<"Ingrese#A=";cin>>a;
}while(a<1);
do
{gotoxy(48,6);clreol();system("color8b");cout<<"Ingrese#B=";cin>>b;
}while(b<1);
k=0;
for(i=1;i<a;i++)
{if(a%i==0)

{sumadiva=sumadiva+i;
gotoxy(5,8+k);cout<<"DivisoresdeA="<<i;k++;
}
}
gotoxy(10,20);cout<<"Sumadedivisores="<<sumadiva;
inth=0;
for(j=1;j<b;j++)
{if(b%j==0)
{sumadivb=sumadivb+j;
gotoxy(50,8+h);cout<<"DivisoresdeB="<<j;h++;
}
}

Tutor : Crdova Neri T

51

gotoxy(43,20);cout<<"Sumadedivisores="<<sumadivb;
gotoxy(8,19);cout<<"------------------------------------------------------------------";
if(sumadiva==b&&sumadivb==a)
{gotoxy(8,22);cout<<"Losnumeros"<<a<<"y"<<b<<"sonAMIGOS";
}
else
{gotoxy(8,22);cout<<"LOSNUMEROSNOSONAMIGOS";getche();
}
n++;
gotoxy(8,23);cout<<"Sr.deseairalMenuPrincipal..?(S/N)==>";
resp=toupper(getch());//cin>>resp;
}//findewhile(res=='S')

Tutor : Crdova Neri T

52

Aplicacin

2
3
4
k
Programa para sumar serie 1 + 2 + 3+.+ n

Inicio
enterosi=1,sumaS=0,n;
Imprimir("ingreseterminos),leer(n)//validon
hacer
Imprimir(""Ingresenmerodetrminos=";leer(n);
mientras(n<1);
Imprimir("Udsumar"<<n<<"trminosdelaserie";
desde(i=1,i<=n,i++)
inicio
sumaS=sumaS+pow(i,i+1);
fin
Imprimir("Lasumaes,sumaS)
Fin

Tutor : Crdova Neri T

53

Disear un programa que permita leer un entero n>0. debe validar y


solo tiene 3 intentos, caso contrario salir del programa. Si es correcto
calcule factorial y mostrarlo. asimismo contar su numero de cifras. El

programa debe ser interactivo, mostrando el nuero de consultas


Modulo Principal: Aloja instrs. de todo el programa

Moduloparavalidadatodeentrada:n>0para
Calcularsufactorial.El usuario solo tiene 3
intentos.Enotrocasofinalizar
Modulo para instrs de calcular el factorial de n.

Tutor : Crdova Neri T

54

Tutor : Crdova Neri T

55

Modo interactivo

Tutor : Crdova Neri T

56

Inicio
enteros n,fact=1,i,nd=0,d,nvi=0, nvcs=0,
Imprimir(" ingrese terminos ), leer(n) // valido n
hacer
nvcs++; imprimir(" Consulta #:" ,nvcs);
hacer
nvi++; //numero de veces intentos
imprimir(" Intento # :" ,nvi);
if(nvi<=3) imprimir(" Ingrese = ), leer(n);
sino imprimir(" Dato incorrecto, excedio intentos ..")
mientrase(n<0);
imprimir(" Dato correcto, continuar..);
desde(i=1;i<=n;i++)
inicio
fact=i*fact;
fin
imprimir(Factorial de ,n," = ,fact;
aux=fact;
mientras(aux>0)
inicio
d%=10; nd++; aux/=10;
fin
imprimir(" Factorial de ,n," = ,fact," tiene ,nd," cifras ";
nvi=0; fact=1; nd=0;
imprimir(" Sr. desea continua..?(S/N)==>"; leer(resp)
mientras(resp=='S');

fin

Tutor : Crdova Neri T

57

Programa para leer n edades de nios y luego mostrar lo0 solicitado en la


siguiente interface:

58

voidmain(){//FOR_MAYOR_SEC_2015.cpp
system("titlePorCordovaNeriT.for_mayor_SEC_2014_prg2.cpp");
ntn,i,edad=1;
intmax=0,cont=0,sec=0,posic=0,ord=0,a,aux1,x,p,j=0,nv=0,d;
gotoxy(10,2);cout<<"POBLACIONNIOS";
gotoxy(5,3);cout<<"-----------------------------------------";
gotoxy(10,5);cout<<"Ingresenumerodeedades=";cin>>n;
for(i=1;i<=n;i++)
{do{gotoxy(20,6+i);clreol();cout<<"Edad["<<i<<"]=";cin>>edad;
}
while(edad<1||edad>9);]
if(edad>0&&edad<10)
{j++;

if(max<edad)
{max=edad;cont=1;posic=j;}
else
{if(max==edad)
{cont++;posic=posic*10+j;}
}
sec=sec*10+edad;
}
}
//Ordenar

59

for(a=1;a<=9;a++)
{aux1=sec;nv=0;
while(aux1>0)
{d=aux1%10;
if(d==a)
{nv=nv+1;}
aux1=aux1/10;
}
ord=a*((pow(10,nv)-1)/9)+ord*pow(10,nv);
}system("color1b");
gotoxy(15,13);cout<<"REPORTESDEEDADESDENIOS";
gotoxy(5,14);cout<<"-----------------------------------------";
gotoxy(10,15);cout<<"Mayor:";
gotoxy(10,16);cout<<"Veces:";
gotoxy(10,17);cout<<"Secuencia:";
gotoxy(10,18);cout<<"Pocisiones:";
gotoxy(10,19);cout<<"Ordenado:";
gotoxy(25,15);cout<<max;
gotoxy(25,16);cout<<cont;
gotoxy(25,17);cout<<sec;
gotoxy(25,18);cout<<posic;
gotoxy(25,19);cout<<ord;getche();}
60

Variables//FOR_MAYOR_SEC_2015.cpp
ntn,i,edad=1;max=0,cont=0,sec=0,posic=0,ord=0,a,aux1,x,p,j=0,nv=0,d;

Inicio
Imprimir"Ingresenumerodeedades=,leern;
desdei=1hastanhacer
inicio
Imprimir"Edad["<<i<<"]=";leeredad;
si(edad>0&&edad<10)entonces
inicio
j++;

si(max<edad)entonces
iniciomax=edad;cont=1;posic=j;
fin
sino
inicio
si(max=edad)entonces
inicio
cont++;posic=posic*10+j;
fin
fin
sec=sec*10+edad;
fin

61

Recorridoa:1..9consec=426AUX1=<-SEC
1.- CUANDO a=1 d=4,2,6
Mientras 426>0 hacer
inicio
d<-426 % 10 //d=6
si (6==1 ) entonces
inicio
No hace nada, es F, nv<-0
fin
aux1=aux1/10 //aux1=42
fin
Mientras 42>0 entonces
Inicio
d<-42%10 //d=2;
Si (2==1) es F nv<-0
aux1=42/10 // aux1=4
Mientras 4>0 hacer
inicio
d=4%10 //d=4
si ( 4==2) entonces es F, nv<-0
Aux1<-4/10 =0 con lo cual termina la descomp de sec
fin
Ord=1*((pow(10,0)-1)/9+ord*pow(10,0)=0

62

Recorridoa:1..9consec=426AUX1=<-SEC
2.- CUANDO a=2 d=4,2,6
Mientras 426>0 hacer
inicio
d<-426 % 10 //d=6
si (6==2 ) entonces
inicio
No hace nada, es F, nv<-0
fin
aux1=aux1/10 //aux1=42
fin
Mientras 42>0 entonces
Inicio
d<-42%10 //d=2;

Si (2==2) es F nv<-1
aux1=42/10 // aux1=4
Mientras 4>0 hacer
inicio
d <- 4%10 //d=4
si ( 4==2) entonces es V , nv<-0+1 =1
Aux1 <- 4/10 =0 con lo cual termina la descomp de sec
fin
Ord=2*((pow(10,1)-1)/9+ord*pow(10,1)=2

63

As, recorre hasta a=9 con la cual finaliza la


comparacin y luego muentras los datos
ordenadosenformaascendente

64

voidmain(){//paranios,adultosyancianos
intn,i,edad=1;max1=0,cont1=0,sec1=0,posic1=0,ord1=0,a,aux1,x,p,j=0;
intmax2=0,cont2=0,sec2=0,posic2=0,ord2=0,b,aux2,y,q,k=0;
intmax3=0,cont3=0,sec3=0,posic3=0,ord3=0,c,aux3,z,r,l=0;
gotoxy(20,8);cout<<"Ingresenumerodeedades=";cin>>n;
for(i=1;i<=n;i++){
do{gotoxy(20,10+i);clreol();cout<<"Ingreseedad=";cin>>edad;}
while(edad<1||edad>60);
//Paranios
if(edad>0&&edad<10){

j++;if(max1<edad){
max1=edad;cont1=1;posic1=j;}
else{ if(max1==edad){
cont1++;posic1=posic1*10+j;}
}
sec1=sec1*10+edad;}//ParaAdultos
if(edad>9&&edad<18){k++;

if(max2<edad){

max2=edad;cont2=1;posic2=k;}
else{

if(max2==edad){cont2++;posic2=posic2*10+k;}}
sec2=sec2*100+edad;}
65

//ParaMayores
if(edad>17&&edad<61){

l++;if(max3<edad){max3=edad;
cont3=1;posic3=l;}
else{

if(max3==edad){cont3++;posic3=posic3*10+l;}
}
sec3=sec3*100+edad;}
}//OrdenarNios
for(a=1;a<=9;a++)
{aux1=sec1;x=0;
while(aux1>0)
{p=aux1%10;
if(p==a)
{x=x+1;}
aux1=aux1/10;
}
ord1=a*((pow(10,x)-1)/9)+ord1*pow(10,x);
}

66

Adultos
for(b=10;b<=17;b++)
{aux2=sec2;y=0;
while(aux2>0)
{q=aux2%100;
if(q==b){y=y+1;}
aux2=aux2/100;
}
ord2=b*((pow(100,y)-1)/99)+ord2*pow(100,y);
}//Mayores
for(c=18;c<=60;c++)
{aux3=sec3;z=0;
while(aux3>0)
{r=aux3%100;
if(r==c){z=z+1;}
aux3=aux3/100;
}
ord3=c*((pow(100,z)-1)/99)+ord3*pow(100,z);
}

67

//Mostrarreporte
clrscr();system("color1b");
gotoxy(2,11);cout<<"Edades:";gotoxy(20,10);cout<<"Ninos";
gotoxy(20,11);cout<<"1..9";gotoxy(40,10);cout<<"Adultos";
gotoxy(40,11);cout<<"10..17";gotoxy(60,10);cout<<"Mayores";
gotoxy(60,11);cout<<"18..60";
gotoxy(2,13);cout<<"Mayor:";gotoxy(2,14);cout<<"Veces:";
gotoxy(2,15);cout<<"Secuencia:";gotoxy(2,16);cout<<"Pocisiones:";
gotoxy(2,17);cout<<"Ordenado:";
gotoxy(20,13);cout<<max1;gotoxy(40,13);cout<<max2;
gotoxy(60,13);cout<<max3;
gotoxy(20,14);cout<<cont1;gotoxy(40,14);cout<<cont2;
gotoxy(60,14);cout<<cont3;
gotoxy(20,15);cout<<sec1;gotoxy(40,15);cout<<sec2;
gotoxy(60,15);cout<<sec3;
gotoxy(20,16);cout<<posic1;gotoxy(40,16);cout<<posic2;
gotoxy(60,16);cout<<posic3;
gotoxy(20,17);cout<<ord1;gotoxy(40,17);cout<<ord2;
gotoxy(60,17);cout<<ord3;
getche();
}
68

SECUENCIADIGITOS
voidmain(){//for_ordena_asc_2015.cpp
system("titlePorCordovaNeriT.for_mayor_SEC_2014_prg2.cpp");
ntn,i,edad=1;
intmax=0,cont=0,sec=0,posic=0,ord=0,a,aux1,x,p,j=0,nv=0,d;
gotoxy(10,2);cout<<"POBLACIONNIOS";
gotoxy(5,3);cout<<"-----------------------------------------";
gotoxy(10,5);cout<<"Ingresenumerodeedades=";cin>>n;
for(i=1;i<=n;i++)
{do{gotoxy(20,6+i);clreol();cout<<"Edad["<<i<<"]=";cin>>edad;
}
while(edad<1||edad>9);]
if(edad>0&&edad<10)
{j++;

if(max<edad)
{max=edad;cont=1;posic=j;}
else
{if(max==edad)
{cont++;posic=posic*10+j;}
}
sec=sec*10+edad;
}
}

69

Launiversidadaplicatrestiposdeexmenesasuspostulantes:Lospostulantesque
obtengan por lo menos dos exmenes aprobados (mayor o igual a 11) son
Admitidos, en caso contrario son Rechazados. En base a esto se pide disear un
programaquepermita:
MostrarporcadapostulanteelmensajeAdmitidooRechazado
PresentarelnumerodeingresantesporFacultad
c)Facultadconmayorymenornumerodeingresantes.
d)Elnumerototaldenoingresantesalasdiferentesfacultades
Ahora,silosdatosdelinformticosonincorrectoselsistemaenvaelmensajeSr.
Sus datos fueron ledos con error, Desea continuar ..?. El sistema solo debe
aceptar3errores,luegofinalizaconelmensajeGracias por consultar...
70

Presentacin1:InformacindefacultadesPresentacin2:Ingresoporfacultad

Presentacin
3:
Informacin
de
facultades I y sus 3
notas:11,13,15

Presentacin
3.-
Resultados
de

despusdeingresar6
facultades
Tutor : Crdova Neri T

AddYourTe
71
71

ariables

j,cont_sist=0,cont_ind=0,cont_quim=0,cont_amb=0,cont,
k=0,nota,notas=0,nno=0:Enteros
cfac,nomb[10],nomb1[10]:cadenaopc='S:carcter
Inicio
imprimir(FACULTADES:'S','I','Q','A')
Desdei<-1hasta800hacer
inicio
imprimir(Alumno#:,);
hacer
imprimir(IngreseFacultad=,leer(fac)
if(fac=='S'||fac=='I'||fac=='Q'||fac=='A')
inicio(imprimir(Facultad,fac,"existe:";
fin
sino
inicioimprimir(FacultadNoexiste,
mientras(!(fac=='S'||fac=='I'||fac=='Q'||fac=='A'));
k=0;

72

Desdehasta3hacer//leer3notasporfacultad
{inicio
hacer
//estoyenlafacyleo3notas
k++;
Im,primir(Ingrese3notas),leernota
mientrasnota<0)||(nota>20));
//formolistadodenotas
notas=notas+nota*pow(100,nno);
nno++;
//lanotaleidaloverificosiesaprobadaentoncescuento
si(nota>10)entonces//cuentolasnotasaprobadas
{cont++;
}
fin//findelforparalecturade3practicasporfacultad
imprimir(NotasIngresadas=,notas);
notas=0;//actualizo
73
nno=0;

//veosiexisten2omasnotasaprobadas

si(cont>=2)entonces//Siexisten2omasnotasaprobadas..
inicio
Imprimir("AlumnoADMITIDOenFacultad,,fac)
//acumulolosingresantesporfacultad
Encasoquefaccorrespondaa
inicio
'A':cont_amb++;
'I':cont_ind++;
'Q':cont_quim++;
'S':cont_sist++;
fin
cont=0;
}//finifcont>=2
sino
imprimir(AlumnoRECHAZADOenFacultad,fac,}
}//findelforde8000
Imprimir(LosingresantesporFacultad
74

75

voidmain()
{system("titlePorCordovaNeriT.");
intj,cont_sist=0,cont_ind=0,cont_quim=0,cont_amb=0,
cont,k=0,nota,notas=0,nno=0;;
charfac,nomb[10],nomb1[10],opc='S';
while(opc=='S')
{clrscr();system("color2F");
gotoxy(25,9);cout<<"SISTEMADEEXAMENDEADMISION2012";
gotoxy(23,10);cout<<"------------------------------------------";
gotoxy(28,12);cout<<"FACULTADES:'S','I','Q','A'";
//gotoxy(15,13);cout<<"------------------------------------------";
getche();system("color1b");

76

for(inti=1;i<=8;i++)//maximo8000alumnos
{system("color1b");gotoxy(5,5);cout<<"Alumno#:"<<i;
do{
clrscr();system("color1b");
gotoxy(5,6);cout<<"IngreseFacultad=";
fac=toupper(getche());

if(fac=='S' || fac=='I'|| fac=='Q'|| fac=='A')


{gotoxy(40,6);cout<<"Facultad<"<<fac<<">existe:";
}
else
{
gotoxy(40,6);cout<<"Facultad<"<<fac<<">Noexiste:";
}
}while(!(fac=='S'||fac=='I'||fac=='Q'||fac=='A'));
k=0;clrscr();system("color1b");
//lecturadelasnotasycontamoslasnotasaprobadas
77

for(int j=1;j<=3;j++)//leer3notasporfacultad
{do
{//estoyenlafacyleo3notas
k++;
gotoxy(5,7);cout<<"Ud.estaenlaFacultad"<<fac<<":";
gotoxy(5,8);cout<<linea;
gotoxy(5,9);clreol();system("color1b");
cout<<"Ingrese3notasporalaFacultad"<<fac<<"=";cin>>nota;
}while((nota<0) || (nota>20));
//formolistadodenotas
notas=notas+nota*pow(100,nno);
nno++;
//lanotaleidaloverificosiesaprobadaentoncescuento

if(nota>10) // cuento las notas aprobadas


{cont++;
}
}//findelforparalecturade3practicasporfacultad

78

gotoxy(5,10);cout<<"NotasIngresadas="<<notas;
notas=0;//actualizo
nno=0;
//veosiexisten2omasnotasaprobadas
if(cont>=2) // Si existen 2 o mas notas aprobadas ..
{gotoxy(5,15);cout<<"AlumnoADMITIDOenFacultad<<"<<fac<<">>
";
getche();clrscr();//acumulolosingresantesporfacultad
switch(fac)
{case'A':cont_amb++;break;case'I':cont_ind++;break;
case'Q':cont_quim++;break;case'S':cont_sist++;break;
}
cont=0;
}//finifcont>=2
else
{gotoxy(5,15);system("color4a");
cout<<"AlumnoRECHAZADOenFacultad<<"<<fac<<">>";getche();
}
}//findelforde8000
79

system("color1b");
gotoxy(5,18);cout<<"LosingresantesporFacultadson:";
gotoxy(5,19);cout<<"Sistemas="<<cont_sist;
gotoxy(5,20);cout<<"Industriales="<<cont_ind;
gotoxy(5,21);cout<<"Quimica="<<cont_quim;
gotoxy(5,22);cout<<"Ambientales="<<cont_amb;
cont_sist=0,cont_ind=0,cont_quim=0,cont_amb=0;
gotoxy(10,23);
cout<<"Procesearnuevoexamendeadmision..?(S/N)==>";
opc=toupper(getche());
}
}//findelmain
http://www.listamusical.com/videos/compadres-de-tarma-mulizay-huayno/p_i3xA8N10k
80

81

Aplicacin1
Escribir un programa que permita encontrar la
sumaacumuladadelaserie:
2
3
4
5
k
1 + 2 + 3 + 4 +.+ n
El programa debe ser interactivo, es decir;
despus de cada ejecucin, el sistema enva el
mensaje:
Desea continuar..? (S / N). Si edita S contina
ejecutandoelprograma,enotrocasofinaliza.

82

Inicio
EnterossumS=0,i=1,n;letraresp;
Mientras (resp=S)
inicio
imprimir("Ingreseun#deelementos:";leer(n);
Mientras(i<=n)
Inicio
sumaS=sumaS+pow(1,i+1)
i=i+1
Fin
Imprimir("Suma=:",sumaS)
Imprimir("nuevaoperacion..?(S/N)",leer(resp)
sumaS=0
fin// del mientras resp==s
Fin
83

Aplicacin2
Escribirunprogramaquepermitaleerunnmero
compuestopormsdeundgitoyluegomostrar:
Total de dgitos, total de dgitos pares e impares,
nmeroinvertido,totaldesumadedgitosparese
impares respectivamente. El programa debe ser
interactivo,esdecir;despusdecadaejecucin,el
sistemaenvaelmensaje:
Desea continuar..? (S / N). Si edita S contina
ejecutandoelprograma,enotrocasofinaliza.

84

85

Inicio
Enterosr,d,n,inv=0,par=0,impar=0,nd,sump=0,sumimpar=0;charresp='s';
Mientras(resp=='s')
Inicio
imprimir("Ingreseunnmeroconmasde1dgito:";leer(n);
r=n;nd=0;//inicializcontadordedgitos
Mientras(n>0)
Inicio
d=n%10;
nd=nd+1;
Si(d%2==0)entonces
inicio
par++;sump+=d;
fin
Sino
Inicio
impar++;sumimpar+=d;
Fin
inv=inv*10+d;n=n/10;
Fin
Imprimir(nd,inv,par,sump,impar,sumimpar)
Imprimir(Continuar(s/n),leer(resp;
Fin
Fin

86

Llamado
bucle
con
salida
controlada, ejecuta <instrucciones>
lo mismo que la estructura mientras,
con la diferencia que primero
ejecuta una <instruccin> y luego
verifica la <condicin>. Cuando
salida es V: continuar repitiendo el
proceso, si es F: continuar con
otras instrucciones
Sintaxis
Figura a
figura b
-----------------------------------------------repetir
hacer
<instrucciones><instrucciones>
hasta que(<cond>) mientras (<cond>)
Tutor : Crdova Neri T

87

Enparticular.-Leeredad
1.-Sedebeverificarqueseencuentraen:1..60
Instruccin:Ingresaredad=20
Condicin:20>0y20<61..?
Vy
V=V.
Conclusin:edadesaceptadaysaledelbucle.

2.-
Instruccin:leeredad=-12
Condicin:-12>0y-12<61.?
FyV=F
Conclusin:volveraleernuevaedad.conlacualseiniciael
bucle
Tutor : Crdova Neri T

88

Ilustracin.-Leeredadkedades
ycalcularsupromedio

Tutor : Crdova Neri T

89

Aplicacin 1.- Disearunprogramaquepermitaleerunnumerodecifrasomas


yluegomostrarloenformainvertida

Tutor : Crdova Neri T

90

Tutor : Crdova Neri T

91

Aplicacin 2.- Disearunprogramaquepermitaleernedades(n>0),luego


mostrarlamenoredad.

Tutor : Crdova Neri T

92

Tutor : Crdova Neri T

93

Aplicacin

4.-

Disear un programa
que permita leer n
nmeros enteros, la
lecturafinalizacuando
se lee un numero
negativo.

Mostrar

cuantos

nmeros

ingresados

son

impares y cuantos
sonpares

Tutor : Crdova Neri T

94

Inicio
enterosi=1,sumaS=0,n,dato;
Imprimir("ingreseterminos),
;leer(n)//validon

hacer
Imprimir(""Ingresenmerodetrminos=";leer(n);
mientras(n<1);
Imprimir("Udsumar"<<n<<"trminosdelaserie";
Hacer
sumaS=sumaS+pow(i,i+1);
i++;
mientras (i<=n);
Imprimir("Lasumaes,sumaS)
Tutor : Crdova Neri T

95

Estructura Repetitiva: conoce el nmero de iteraciones


Permiterealizarinstruccionesconociendo
elnmerodeiteraciones.
Sintaxis:
desde (inicializar;<condicin>; contador)
inicio
<instrs>;
fin
donde:
1.-inicializar:indicavalordondeiniciaelbucle.
2.-<condicin>: se evala antes de cada
iteracin. Si es verdadera, se ejecuta el bloque
de <instrs>, en caso contrario se termina la
estructuraysesaltaalainstruccinsiguiente.
3.-Contador:eslainstruccinaejecutarse
cuandoseterminacadaiteracin
for(i=valor_inicial;i<=valorfinal;i++)
inicio
<intrs>;
fin
Tutor : Crdova Neri T

96

Aplicacin

2
3
4
k
Programa para sumar serie 1 + 2 + 3+.+ n

Inicio
enterosi=1,sumaS=0,n;
Imprimir("ingreseterminos),leer(n)//validon
hacer
Imprimir(""Ingresenmerodetrminos=";leer(n);
mientras(n<1);
Imprimir("Udsumar"<<n<<"trminosdelaserie";
desde(i=1,i<=n,i++)
inicio
sumaS=sumaS+pow(i,i+1);
fin
Imprimir("Lasumaes,sumaS)
Fin

Tutor : Crdova Neri T

97

Disear un programa que permita leer un entero n>0. debe validar y


solo tiene 3 intentos, caso contrario salir del programa. Si es correcto
calcule factorial y mostrarlo. asimismo contar su numero de cifras. El
programa debe ser interactivo, mostrando el nuero de consultas
Modulo Principal: Aloja instrs. de todo el programa

Moduloparavalidadatodeentrada:n>0para
Calcularsufactorial.El usuario solo tiene 3
intentos.Enotrocasofinalizar
Modulo para instrs de calcular el factorial de n.

Tutor : Crdova Neri T

98

Tutor : Crdova Neri T

99

Tutor : Crdova Neri T

100

Inicio
enteros n,fact=1,i,nd=0,d,nvi=0, nvcs=0,
Imprimir(" ingrese terminos ), leer(n) // valido n
hacer
nvcs++; imprimir(" Consulta #:" ,nvcs);
hacer
nvi++; //numero de veces intentos
imprimir(" Intento # :" ,nvi);
if(nvi<=3) imprimir(" Ingrese = ), leer(n);
sino imprimir(" Dato incorrecto, excedio intentos ..")
mientrase(n<0);
imprimir(" Dato correcto, continuar..);
desde(i=1;i<=n;i++)
inicio
fact=i*fact;
fin
imprimir(Factorial de ,n," = ,fact;
aux=fact;
mientras(aux>0)
inicio
d%=10; nd++; aux/=10;
fin
imprimir(" Factorial de ,n," = ,fact," tiene ,nd," cifras ";
nvi=0; fact=1; nd=0;
imprimir(" Sr. desea continua..?(S/N)==>"; leer(resp)
mientras(resp=='S');

fin

Tutor : Crdova Neri T

101

Aplicacin.- Disear un programa


que permita leer un numero entero
positivoformadopor3omasdgitos,
luego:
1.- Mostrar los nmeros formados
solopor3dgitos parese Impares
descompuesto
del
numero
ingresado.
2.-DelnumeroParmostrar:
2.1.Secuenciadedgitospares.
2.2.-Sumadedgitospares
Formaanlogaparanmeros
Imparesdescompuestos

102

//WHILE_SUMA_DIG.cpp
voidmain()
{intn,d,sumap=0,sumaip=0,nvi=0,nv=0,secp=0,secip=0;
system("color1b");system("titlePorCordovaNeriTeodoro");
gotoxy(10,2);cout<<"Ingresenumero=";cin>>n;
intdd,ki=0,k=0,d2,sumaap=0,secaap=0,sumaiip=0;
Intseciip=0,kii=0,kk=0,np=0,par=0,impar=0,nip=0;
while(n>0)
{d=n%1000;
if(d%2==0)
{par=par+d*pow(1000,np);np++;
gotoxy(10,4);cout<<"NumerosPares="<<par;
while(d>0)

{dd=d%10;
if(dd%2==0)

{sumap=sumap+dd;secp=secp+dd*pow(10,k);k++;
}
else

{sumaip=sumaip+dd;secip=secip+dd*pow(10,ki);ki++;
}
d=d/10;
}
}
else

103

{impar=impar+d*pow(1000,nip);nip++;
gotoxy(5,12);cout<<"------------------------------------";
gotoxy(10,14);cout<<"NumerosImPares="<<impar;
while(d>0)
{d2=d%10;
if(d2%2==0)
{sumaap=sumaap+d2;secaap=secaap+d2*pow(10,kk);kk++;}
else
{sumaiip=sumaiip+d2;seciip=seciip+d2*pow(10,kii);kii++;
}
d=d/10;
}
}
n=n/1000;
}
gotoxy(10,6);cout<<"Secuenciapar="<<secp;
gotoxy(10,7);cout<<"Sumapares="<<sumap;
gotoxy(10,9);cout<<"SecuenciaImpar="<<secip;
gotoxy(10,10);cout<<"Sumaimpares="<<sumaip;
gotoxy(10,16);cout<<"Secuenciapar="<<secaap;
gotoxy(10,17);cout<<"Sumapares="<<sumaap;
gotoxy(10,19);cout<<"SecuenciaImpar="<<seciip;
gotoxy(10,20);cout<<"sumaimpares="<<sumaiip;getche();
104
}

Aplicacin .Disear un programa


que permita leer 2
nmeros
enteros
positivos.Luegomostrar
los nmeros pero sus
ltimos
dgitos
intercambiados

105

//sec_cambios_num.cpp
voidmain()
{inta,b,d1,d2;
system("color1b");system("titlePorCordovaNeriTeodoro");
gotoxy(10,2);cout<<"INTERCAMBIODEDIGITOS";
gotoxy(10,4);cout<<"Ingresenumeroa=";cin>>a;
gotoxy(10,5);cout<<"Ingresenumerob=";cin>>b;
d1=a%10;
d2=b%10;
a=a-d1+d2;
b=b-d2+d1;
//Salidaderesultados
gotoxy(10,7);cout<<"Losdigitosaintercambiarson"<<d1<<","<<d2;
gotoxy(10,9);cout<<"Losnuevosnumerosson:";
gotoxy(10,11);cout<<"a="<<a;
gotoxy(10,12);cout<<"b="<<b;
getche();
}

106

Aplicacin .- Pseudocdigo para calcular el tiempo, en horas y


minutos que emplea un profesor para calificar un grupo de
exmenes.SetienentrestiposdeexamenA,B,Cyeltiempo
enminutosrequeridoparacadatiposon:
A=5min,B=7minyC=8min.

107

/profes_Horas_Exam.cpp
voidmain()
{intca,cb,cc,hora,min,tiempo;
system("color1b");
system("titlePorCordovaNeriTeodoro");
gotoxy(10,2);cout<<"TIEMPODECALIFICACION";
gotoxy(5,3);cout<<"--------------------------------------";

gotoxy(10,5);cout<<"Ingresecantidaddeexamenesdetipoa=";cin>>ca;
gotoxy(10,6);cout<<"Ingresecantidaddeexamenesdetipob=";cin>>cb;
gotoxy(10,7);cout<<"Ingresecantidaddeexamenesdetipoc=";cin>>cb;

tiempo=(ca*5)+(cb*7)+(cc*8);
hora=tiempo/60;

min=tiempo%60;
gotoxy(10,10);
cout<<"Seemplea"<<hora<<"horascon"<<min<<"minutos";
getche();
}

108

Aplicacin

109

//if_emplados_categ.cpp
voidmain()
{intcant,sw=0;
floatpago,bonf,desc=25;
charcat,prod;
system("color1b");
system("titlePrCordovaNeriteodoro");
gotoxy(10,1);cout<<"PALNILLASDEEMPLEADOS";
gotoxy(5,2);cout<<"----------------------------------";
gotoxy(10,4);cout<<"Ingresarcategora:";cin>>cat;
gotoxy(10,5);cout<<"Ingreseproductoqueproduce(T)ejas,
(L)osetas:";cin>>prod;
gotoxy(10,6);cout<<"Ingresarcantidadproducida:
;cin>>cant;
//Clculos
110

switch(prod)
{case'T':switch(cat)
{ {case'A':pago=2.50*cant;break;
case'B':pago=2.00*cant;break;

case'C':pago=1.50*cant;break;
default:
{gotoxy(10,8);cout<<"Categoranoexiste";getche();
}
}//FINDET
break;
case'L':switch(cat)
{case'A':pago=2.00*cant;break;

case'B':pago=1.50*cant;break;
case'C':pago=1.00*cant;break;
default:
{gotoxy(10,9);cout<<"Categoranoexiste";getche();
}
}//FNDEL
break;
}
111
}//fincasoprincipal

if(cant<=250)
{bonf=0;
}
else
if(cant<=500)
{bonf=50.00;
}
else
if(cant<=1000)
{bonf=100.00;
}
else
{bonf=150.00;
}
pago=pago+bonf-desc;
gotoxy(10,12);cout<<"Supagoes:S/."<<pago;getche();
}
112

Aplicacin

113

Aplicacin .- TAROT Pseudocdigo para buscar el nmero del tarot de una


persona; para hallar el nmero del tarot, se tiene que sumar cada uno de los
nmerosdelafechadenacimientodeunapersonayacontinuacinreducirloshasta
obtenerunsolodgito.Porejemplo,paraunafecha:17/10/1970,serealiza:

17+10+1970=1997
1+9+9+7=26
Elnmerodeltarotcalculadoes8:2+6=8
Pararealizarestecalculo,elalgoritmopideunafechaenelformato
dd/mm/aa,dondeddeseldia,mmeselmesyaaeselao.
Lasumadecadaunadeestasvariablesquecomponelafecha,serealiza
mediantelaoperacin:nro=dd+mm+aa,queenvaloreses:
nro=17+10+1970=1997
Luego,tenemosquedescomponernro,hallandocadadgitoeirsumndolo.
Paraestecasoemplearemoslasoperaciones:

digito nroMod10,parahallarcadadgito.

tarot
tarot+digito,parasumarcadadgito

nro
nroDiv10,paraacortarelnmero
Alacabarlaprimeraiteracindelbucle,obtendremoselvalorde26paralavariable
tarot, pero como el enunciado nos pide que el nmero del tarot sea de un solo
digito,entoncesesnecesariorepetirelmismoproceso,paralocualhacemos
nro=tarotutilizandootrobuclequeseaexterno.
114

Variables a utilizar en el pseudocdigo


digitocadadigitodelnmero
ddadenacimiento
mmesdenacimiento
aaodenacimiento
nronmeroalcualvamosacalculareltarot
tarotnmerodetarot
Inicio
//Definireinicializarvariables
entero:d,m,a,nro=0,digito,tarot=00

115

//Leerdatos
Escribir(Ingresarfecha)
Leer(d,m,a)
nro=d+m+a
Mientras(nro>9)Hacer
inicio
tarot=0
Mientras(nro>0)Hacer
INICIO
digito=nroMod10
tarot=tarot+digito
nro=nroDiv10
FIN
nro=tarot
fin
Escribir(Elnmerodeltarotes,tarot)
Fin
116

//while_tarot.cpp
voidmain()
{intdigito,d,m,a,nro=0,tarot=0;system("color1b");
system("titlePrCordovaNeriteodoro");
gotoxy(10,1);cout<<"GENERANDO,SUTAROT";
gotoxy(5,2);cout<<"----------------------------------";
gotoxy(10,4);cout<<"Ingresardiadenacimientos=";cin>>d;
gotoxy(10,5);cout<<"Ingresarmesdenacimientos=";cin>>m;
gotoxy(10,6);cout<<"Ingresaranniodenacimientos=";cin>>a;
nro=d+m+a;
while(nro>9)
{tarot=0;
while(nro>0)
{digito=nro%10;

tarot=tarot+digito;
nro=nro/10;
}
nro=tarot;
}
gotoxy(10,9);cout<<"ElnumerodelTarotes"<<tarot;
getche();
}
117

I Cdigo Generado: -ElproblemasebasaengenerarelCdigode


Usuario (Alumno, Empleado, Ciudadano, Vehculo, etc. ) durante el
proceso de Registro de datos en el sistema Informtico. Este proceso se
conoceconelnombredeAlgoritmo del Modulo 11 ,elcualconsisteen
que el usuario ingresa un numero entero (defina el tamao) y luego se
descompone en la suma de factores de multiplicacin usando los dgitos
desde2..9,yelresultadoseextraeelresto,aesteseleasignaunaletra
de La cadena ABCDEFGHIJK correspondiente al valor del resto y el
ndicedelaletraubicadaenlacaderarespectivamente.
Ejemplo:Generarcdigode2empleados,cdigoregistradoenlaBase
deDatosdelSistemadePlanilladelaUniversidad
Empleado 1: Monzon: Ingresocdigo:838509
SumadeFactores=8*2+3*3+8*4+5*5+0*6+9*7=145
Modulo11=145%11=2Asignacindeletra=C
Cdigo Generado: 838509C
Empleado 2: Crdova : Ingresocdigo:848139
SumadeFactores=8*2+4*3+8*4+1*5+3*6+9*7=146
Modulo11=164%11=3Asignacindeletra=D
Cdigo Generado: 848139D

118

voidmain()
{system("color4a");charletra[11]={"ABCDEFK"};
intcodigo,i,sum=0,t,k,mod11;gotoxy(5,6);
cout<<"Ingresecodigo=";cin>>codigo;
k=codigo;t=1;
while(t<=6)

{sum=sum+(8-t)*(codigo%10);
gotoxy(5,10+t);
cout<<"Suma["<<t<<"]="<<(8-t)<<"*"<<codigo%10<<"="<<sum<<"+";
codigo=codigo/10;t++;
}
mod11=sum%11;
for(i=0;i<=10;i++)
{if(mod11==0)
{gotoxy(10,12);cout<<"codigoAutogenerado="<<k<<"A";}
if(sum==1)
{gotoxy(10,13);cout<<"codigoAutogenerado="<<k<<"B";}
if(mod11==2)
{gotoxy(10,14);cout<<"codigoAutogenerado="<<k<<"C";}
if(mod11==3)
{gotoxy(10,20);cout<<"codigoAutogenerado==>"<<k<<letra[3];
}
}

119

S-ar putea să vă placă și