Anda di halaman 1dari 79

Centro de Extensin y Proyeccin Social (CEPS)

Algoritmos y Estructura de Datos


55







2.- Estructuras Condicionales
Son estructuras que permiten dar condicin o condiciones para resolver un
algoritmo, son de 3 tipos:
2.1.- Estructuras condicionales Simples
2.2.- Estructuras condicionales Compuestas
2.3.- Estructuras condicionales Anidadas

Estructuras Condicional compuesta

Evala la Condicin lgica y ejecuta una solo instruccin A o instruccin
B.

Sintaxis


Pseudocdigo Diagrama de flujo














Si la condicin es V ejecuta solo <instrucciones A>,

Si la condicin es F, ejecuta solo <instrucciones B>

Aplicacin 1.- Disear un Diagrama de Flujo que calcule el Producto y la
Parte Entera de 2 nmeros m, n enteros. El programa debe solicitar el
ingreso de 2 nmeros m, n y luego:
a).-Calcula el producto de m por n. Si el numero m es mayor n.
b).- Calcula la raz cuadrada si el numero m es menor que n.

Si (<condicin >) entonces
Inicio
<Instrucciones A>
Fin
Sino
Inicio
<Instrucciones B>
fin
Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 56









Ejemplo: Si m = 1 y n =2 entonces la estructura de control a usa es:
SI ( m> n ) entonces
multip m* n
sino
Raiz sqrt(n)
En la presente grfica se ilustra el Diagrama de flujo



Ejecucin: como el resultado de evaluar la condicin es Falso, entonces se
calcula la raz cuadrada del nmero n y enva el mensaje de conformidad






Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
57







Problema 2.- Disear un Diagrama de Flujo que permita validar datos de un
alumno para ingresar al sistema informtico por cdigo =001 y clave = 1010.
Si los datos son correctamente ingresados el diagrama permite ingresar 3
prcticas calificadas pc1, pc2 y pc3,
luego calcula el promedio y muestra
el reporte respectivo. Si los datos
del alumno son incorrectos, debe
emitir un mensaje Sr. Alumno,
Errores en datos
Solucin
La condicin a validar es
Si ( cdigo=001) y (calve = 1010) entonces Leer 3 prcticas y calcular
su Promedio.
Sino
Imprimir el mensaje Sr. Alumno, Errores en datos

Implementacin del Diagrama de flujo





Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 58









Ejecucin:
1.- Modulo de validacin.- Se debe leer cdigo y clave respectivamente.

2- Modulo de ingreso de notas: como los datos de alumno son correctos
entonces ingresar las 3 prcticas calificadas.
Pc1=12, Pc2=10, Pc3=14.
El promedio de prcticas, se ilustra en la siguiente grfica, as como la
conformidad



Programa Pseudocdigo Programa Fuente
Variables
pc1, pc2,pc3,cod, clav : entero
prom: real
Inicio
Imprimir (codigo = ), leer(cod),
Imprimir (Clave = ), leer(clav),
si((cod=001) y (clav=1010)) entonces
Inicio
Imprimir (Ingrese 3 practicas : ),
leer(pc1,pc2,pc3),
prom (pc1+ pc2+ pc3+)/3.0
imprimir(El promedio es =,prom)
fin
sino
inicio
imprimir(Sr, error, adios)
fin
fin

void main()
{ int pc1,pc2,pc3,cod,clav;
float promp;
gotoxy(10,3);cout<<"Ingrese codigo =
";
cin>>cod;
gotoxy(10,4);cout<<"Ingrese clave = ";
cin>>clav;
f((cod==001) && (clav==1010))
{ gotoxy(10,6);cout<<"pc1";cin>>pc1;
gotoxy(10,7);cout<<"pc2=";cin>>pc2;
gotoxy(10,8);cout<<"pc3=";cin>>pc3;
promp=(pc1+pc2+pc3)/3.0;
gotoxy(10,12);
cout<<"Promedio ="<<promp; }
else
{gotoxy(10,14);cout<<"Error, Adios...";
}
getche();
}
Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
59







Estructuras Condicional con Anidamiento
Sintaxis
Si <cond_logica1> entonces
Inicio
<accion1 >
fin
sino
Si <cond_logica2> entonces
Inicio
<accion2 >
fin
sino
<accion3>------------------
Problema 2.- Disear un diagrama de flujo que permita ingresar 3 nmeros
enteros a, b y c. luego el programa averiguar si se cumple una de las tres
relaciones y la que se cumple ejecutar su tarea respectiva. Veamos.
Relacin 1.- Si a = b + c, entones calcular el producto de los 3 nmeros
Relacin 2.- Si b = a + c entones calcular la resta de los 3 nmeros
Relacin 3.- Si c = a + b entones calcular la suma de los 3 nmeros
Si ninguna relacin se cumple, emitir un mensaje: Sr. No existe relacin
Solucin.


Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 60









Ejecucin.- Sean los nmeros a = 6, b = 4 y c = 10. La relacin que se
cumple es la relacin 3, entones el resultado ser: m = a + b + c = 20. Los
resultados se ilustran en la siguiente grfica y su confirmacin respectiva.


Programa Pseudocdigo Programa Fuente
variables
a,b,c, prod,res,suman:entero
Inicio
Imprimir (Ingrese 3 nmeros= ),
leer(a,b,c),
Si(a=b+c) entonces
Inicio
Prod a*b*c
imprimir(El producto =,prod)
fin
Sino
Si(b=a+c) entonces
Inicio
res a-b-c
imprimir(La resta es =,res)
fin
Sino
Si(c=a+b) entonces
Inicio
Suman a+b+c
imprimir(La suma e =,suman)
fin
Sino
Inicio
Imprimir(Sr. No existe relacin)
fin
Fin

void main()
{ int a,b,c,sumas,res,prod;
float promp;
gotoxy(10,3);cout<<"Ingrese a = ";
cin>>a;
gotoxy(10,4);cout<<"Ingrese b = ";
cin>>b;
gotoxy(10,5);cout<<"Ingrese c = ";
cin>>c;
if(a==b+c)
{ prod=a*b*c;
gotoxy(10,17);cout<<"Producto="<<prod
;
}
else
if(b==a+c)
{res=a-b-c;
gotoxy(10,17);cout<<"Producto="<<res;
}
else
if(c==a+b)
{ prod=a+b+c;
gotoxy(10,17);cout<<"Suma =
"<<sumas;
}
else
{ gotoxy(10,17);
cout<<"No existe relacion = ";
}
getche();
}

Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
61







Problema 4.- Disear un diagrama de flujo que permita ingresar a un
usuario cdigo=100 y clave=200. Silos datos de entrada son correctos, el
sistema solicita al usuario que ingrese un numero n y verifica si este nmero
es par o impar y luego enva el reporte segn sea el caso. Si el usuario no
recuerda sus datos en la primera entrada, decide ingresar sus nuevos datos
mediante ncdigo=10 y nclave=12. Si estos son correctos el sistema calcula
la suma de sus datos ingresado y emite un reporte, en caso que sean
incorrectos el sistema solo enva un mensaje de error Segunda opcin,
error.
Solucin.
El usuario tiene 2 cdigos y 2 claves para validar.. El programa
Pseudocdigo es:
Inicio
Imprimir (Ingrese cdigo y clave), leer(cdigo, clave)
Si ((cdigo = 10) y ( clave = 200)) entonces
Inicio
Imprimir(Bienvenidos:), leer(n)
Si (n resto 2 = 0) entonces
inicio
Imprimir (El nmero es par)
fin
Sino
inicio
Imprimir(El nmero es impar)
fin
Fin
Sino
Imprimir(ingrese nuevos datos :), leer(ncodigo, nclave)
Si (( ncodigo=10 ) y ( nclave=12 ) ) entonces
Inicio
Suma_codigo ncodigo+ nclave,
Imprimir(Suma_codigo)
Fin
Sino
Imprimir(Segunda opcin, error :)
Fin

Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 62









Implementacin en Borland c++
void main()
{ int codigo,clave, ncodigo,nclave,n,Suma_codigo=0;
gotoxy(10,3);cout<<"Ingrese codigo = "; cin>>codigo;
gotoxy(10,4);cout<<"Ingrese clave = "; cin>>clave;
if((codigo==10) && (clave==200))
{clrscr();
gotoxy(10,4);cout<<" Bienvenido..";
gotoxy(10,5);cout<<" Ingrese n = ";cin>>n;
if(n%2==0)
{ gotoxy(10,7);cout<<" El nmero es par";
}
else
{ gotoxy(10,7);cout<<" El nmero es impar";
}
}
else
{clrscr(); gotoxy(10,3);cout<<"Ingrese ncodigo = "; cin>>ncodigo;
gotoxy(10,4);cout<<"Ingrese nclave = "; cin>>nclave;
if((ncodigo==10) && (nclave==12))
{clrscr(); Suma_codigo=ncodigo+ nclave;
gotoxy(10,7);cout<<" LA SUMA ES = "<<Suma_codigo;
}
}
getche();
}
Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
63







Diseo del Diagrama de Flujo

















Ejecucin.- Si usa sus primeros datos y este comete error, entonces le
solicita los segundos datos y a estos los acumula. Ver la siguiente grfica.




A continuacin, se describen ms ejemplos, primero se desarrollan
programas pseudocdigo y en la siguiente seccin se ilustra los
Diagramas de Flujo de Datos.

Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 64










Aplicacin 5.- Disear un programa que permita determinar si un entero A
es divisible por otro B.
Solucin
Variables: a, b, r; enteros
Inicio
imprimir (Ingrese el Valor de A: ),Leer (a)
imprimir ( Ingrese el Valor de B: ),Leer( b)
Si (b mod a=0) entonces
inicio
imprimir ( Si es Divisible )
fin
Sino
inicio
imprimir ( No es Divisible)
fin
Fin
Aplicacin 6.- Disear un programa para que calcule e imprima los valores
de las races reales de una ecuacin de segundo grado:
Ax^2+Bx+C=0
Se debe ingresar los coeficientes de la ecuacin A, B y C.
Solucin
Variables
a, b, c: enteros raz : reales
Inicio
imprimir ( Ingrese el Coeficiente A:), Leer( a)
imprimir ( Ingrese el Coeficiente B:), Leer (b)
imprimir ( Ingrese el Coeficiente C:), Leer (c)
raz (ver formulas en Diagrama de Flujo)
imprimir ( El valor de la raz es:, raz)
Fin
Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
65








Aplicacin 7.- La tasa de inters sobre un prstamo es de 8% si la cantidad
es menor o igual que S/. 200, pero es de 6% si excede a 200. Hacer un
programa para que ingrese la cantidad y reporte el inters y el monto total.
Solucin
Variables
inte, monto, montoa: reales
Inicio
imprimir ( Ingrese el Prstamo: ), Leer( monto)
Si (monto<=200) entonces
inicio
inte monto*0.08
montoa (monto*0.08)+monto
fin
Sino
Si (monto>200) entonces
inicio
inte monto*0.06
montoa (monto*0.06)+monto)
Fin

imprimir ( El inters es:, inte)
imprimir ( El monto actual es:, montoa)
Fin
Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 66









Implementacion en Borland c++ 5.02

void main()
{ float inte, monto, montoa;
gotoxy(10,3);cout<<"Ingrese el Prstamo:" ; cin>>monto;
if(monto<=200)
{ inte= monto*0.08;
montoa=(monto*0.08)+monto;
}
else
if(monto>200)
{
inte = monto*0.06;
montoa=(monto*0.06)+monto;
}
gotoxy(10,12);cout<<"El inters es ="<<inte;
gotoxy(10,14);cout<<"El monto actual es:"<<montoa;
getche();
}
Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
67







Aplicacin 8.- Hacer un programa de tal manera que se ingrese las 2
evaluaciones de un alumno y luego genere un reporte de APROBADO si el
promedio es mayor o igual a 10.5 y DESPROBADO en caso contrario.
Solucin
Variables
n1, n2: enteros promedio: real
Inicio:
imprimir ( Ingrese Nota 1: ), Leer (n1)
imprimir( Ingrese Nota 2: ), Leer (n2)
promedio (n1+n2)/2
Si (promedio>=10.5) entonces
inicio
imprimir ( APROBADO)
fin
Sino
inicio
imprimir ( DESAPROBADO )
fin
Fin

Aplicacin 9.- La comisin de las ventas totales es como sigue:
a) Si ventas < S/. 80, entonces no hay comisin
b) Si S/. 80 <= ventas <= S/. 600 entonces la comisin es igual al 12%
de las ventas
c) Si ventas > 600 entonces la comisin es igual al 15% de las ventas
Hacer un programa para que se ingrese las ventas y se reporte la
comisin.

Solucin

Variables
ven, comisin: reales
Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 68









Inicio
imprimir ( Ingrese el monto de la venta:),Leer (ven)
Si (ven < 80) entonces
comisin 0
Sino
Si (ven>=80 y ven<=600) entonces
comisin ven*0.12
Sino
Si (ven > 600) entonces
comisin ven*0.15
imprimir ( La comisin es: , comisin)
Fin
Aplicacin 10.- Hacer un programa para calcular el peso semanal de un
trabajador. Se debe ingresar el nombre, pago, por hora y el nmero de horas
trabajadas. Si normalmente se trabaja 40 horas a la semana y por cada hora
extra trabajada se paga 1.5 veces la hora normal, reportar el nombre y el
pago semanal del trabajador.
Solucin
Variables
ph, nh, phe, pt, nhe : reales nom : cadena
Inicio
imprimir ( Ingrese el nombre del trabajador:),Leer( nom)
imprimir ( Ingrese el pago por hora:), Leer (ph)
imprimir ( Ingrese el nmero de horas trabajadas:),Leer (nh)
Si (nh<=40) entonces
pt nh*ph
Sino
Si (nh>40) entonces
inicio
nhe nh-40
phe ph*1.5
pt (40*ph)+(nhe*phe)
fin
imprimir ( El trabajador es:, nom)
imprimir ( El pago semanal es:, pt)
Fin
Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
69







Aplicacin 11.- Se repartir la herencia entre los hijos de un seor como
sigue: Si la cantidad de hijos es menor que 4; se repartir exactamente entre
el nmero de hijos; si son 4 o ms hijos, la mitad le tocara al hermano mayor
y el resto se dividir entre los dems hermanos. Hacer un programa para
que reporte cuanto le corresponde a cada hijo. Se debe ingresar la herencia
y el nmero de hijos.
Solucin
Variables
herencia, nh, mh, mhm: enteros
Inicio
imprimir ( Ingrese el monto de la herencia:),Leer (herencia)
imprimir ( Ingrese el nmero de hijos:), Leer (nh)
Si (nh<4) entonces
mh herencia/nh
imprimir ( El monto a repartir entre los hijos:, mh)
Sino
Si (nh>=4) entonces
inicio
mhm herencia/2
mh mhm/(nh-1)
imprimir ( El monto para el hermano mayor es de:,
mhm)
imprimir ( El monto para los dems hijos es de:, mh)
Fin
Fin
Aplicacin 12.- Una empresa comercial desea hacer un programa para
calcular el precio neto de un artculo de acuerdo a lo siguiente:
a) si la venta es al contado se le da el 40% de descuento.
b) si la venta es a plazos y:
T<12 meses se recargara al 30%, T>12 meses se recargara al 60%
Se debe ingresar el precio del artculo, el cdigo de venta (c) contado, (b)
plazos y si la venta es a plazos se debe ingresar el tiempo de pago.

Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 70









Solucin
Variables
pr, pn, des: reales co : carcter tiempo: entero
Inicio
imprimir ( Ingrese el precio del artculo:), Leer( pr)
imprimir ( Ingrese el cdigo de venta:), Leer (co)
Si (co=c) entonces
inicio
des pr*0.40, pn pr-des
fin
Sino
Si (co=p) entonces
inicio
imprimir ( Ingrese el tiempo de pago en meses:), Leer(tiempo)
Si (tiempo>12) entonces
inicio
des pr*0.60, pn pr+des
fin
Sino
Si (tiempo<12) entonces
inicio
des pr*0.30
pn pr+des
fin
imprimir ( El pago neto es:, pn)
Fin

Aplicacin 13.- En un tringulo se cumple lo siguiente:
s>0, s>b, s>c ,donde s: semiperimetro a, b, c: Lados del triangulo
Hacer un programa para que se ingresen los valores de los del tringulo de
los lados del tringulo y si estos valores cumplen las condiciones calcular el
rea del tringulo en caso contrario reportar DATOS INCORRECTOS
AREA=(S(S-A)(S-B)(S-C))^0.5

Solucin
Variables s, a, b, c: enteros
rea: real
Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
71







Inicio
imprimir ( Ingrese el lado a:), Leer (a)
imprimir ( Ingrese el lado b:), Leer b)
imprimir ( Ingrese el lado c:), Leer (c)
imprimir ( Ingrese el semiperimetro del tringulo:), Leer (s)
Si (s>a y s>b y s>c)
rea ((s*((s-a)*(s-b)*(s-c))))^0.5
imprimir ( El rea del tringulo es: , rea)
Sino
imprimir ( DATOS INCORRECTOS)
Fin
Aplicacin 14.- Calcular el valor de la funcin de acuerdo a lo siguiente:
Y=x^2+5 Si x<=0
Y=3x-1 Si 0<x<2
Y=x^2-4x+5 Si x>=2
Solucin
Variables
x, y: reales
Inicio
imprimir ( Ingrese el valor de x:), Leer (x)
Si (x<=0) entonces
inicio
y x^2+5
imprimir ( El valor de y es:, y)
fin
Sino
Si (x>0 y x<2) entonces
inicio
y 3*x-1
Imprimir ( El valor de y es:, y)
fin
Sino
Si (x>=2) entonces
inicio
y x^2-4*x+5
imprimir ( El valor de y es:, y)
fin
Fin
Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 72









Aplicacin 15.- Los empleados de una fbrica trabajan en dos turnos:
diurno y nocturno. Se desea calcular el jornal diario de acuerdo a los
siguientes puntos:
- La tarifa de las horas diurnas es de S/. 1.5
- La tarifa de las horas nocturnas es de S/. 2.25
- En caso de ser domingo la tarifa aumentara en S/. 1 en el turno
diurno y S/. 1.25 en el turno nocturno.
Se debe leer el turno, las horas trabajadas y el da de la semana.
Solucin
Variables: turno, das: cadena, td, tn, cd, ht; enteros, pago: real
Inicio
imprimir ( Ingrese el turno:),Leer (turno)
imprimir ( Ingrese el da:), Leer (das)
imprimir ( Ingrese el nmero de horas trabajadas: ); Leer (ht)
Si (turno=diurno) entonces
inicio
Si (das<>domingo) entonces
pago ht*1.5
fin
Sino
Si (das=domingo) entonces
pago ht*(1.5+1)
Sino
Si (turno=nocturno) entonces
Si (das<>domingo)
pago ht*2.25
Sino
Si (das=domingo) entonces
pago ht*(2.25+1.25)
Fin
imprimir ( El pago diario es de:, pago)
Fin
Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
73








A continuacin se implementan estos programas pseudocdigo en Dfd.
Se deja constancia que las formulas en muchos diagramas se muestran
una parte, pero estas se encuentran en su correspondiente
pseudocdigo .
Diagrama de Flujo de Datos
Para didctica, se ha redactar el enunciado de los problemas

Aplicacin 5.-Escriba un programa para determinar si un entero A es
divisible por otro B.



































Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 74









Aplicacin 6.- Hacer un programa para que calcule e imprima los valores
de las races reales de una ecuacin de segundo grado:











































Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
75







Aplicacin 7.- La tasa de inters sobre un prstamo es de 8% si la cantidad
es menor o igual que S/. 200, pero es de 6% si excede a 200. Hacer un
programa para que ingrese la cantidad y reporte el inters y el monto total.








































Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 76









Aplicacin 8.-Hacer un programa de tal manera que se ingrese las 2
evaluaciones de un alumno reporte APROBADO si el promedio es mayor o
igual a 10.5 y DESAPROBADO en caso contrario





























Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
77







Aplicacin 9.-La comisin de las ventas totales es como sigue:
a) Si ventas < S/. 80, entonces no hay comisin
b) Si S/. 80 <= ventas <= S/. 600 entonces la comisin es igual al 12%
de las ventas
c) Si ventas > 600 entonces la comisin es igual al 15% de las ventas
Hacer un programa para que se ingrese las ventas y se reporte la
comisin.














Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 78









Aplicacin 10.-Hacer un programa para calcular el pago semanal de un
trabajador. Se debe ingresar el nombre, pago por hora y el nmero de horas
trabajadas. Si normalmente se trabaja 40 horas a la semana y por cada hora
extra trabajada se paga 1.5 veces la hora normal, reportar el nombre y el
pago semanal del trabajador.

Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
79







Aplicacin 11.-Se repartir la herencia entre los hijos de un seor como
sigue: Si la cantidad de hijos es menor que 4; se repartir exactamente entre
el nmero de hijos; si son 4 o ms hijos, la mitad le tocara al hermano mayor
y el resto se dividir entre los dems hermanos. Hacer un programa para
que reporte cuanto le corresponde a cada hijo. Se debe ingresar la herencia
y el nmero de hijos.



































Aplicacin 12.- Una empresa comercial desea hacer un programa para
calcular el precio neto de un artculo de acuerdo a lo siguiente:
Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 80









a) si la venta es al contado se le da el 40% de descuento.
b) si la venta es a plazos y:
T<12 meses se recargara al 30%, T>12 meses se recargara al 60%
Se debe ingresar el precio del artculo, el cdigo de venta (c) contado, (b)
plazos y si la venta es a plazos se debe ingresar el tiempo de pago.






























Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
81







Aplicacin 13.-En un tringulo se cumple lo siguiente: s>0, s>b, s>c ,donde
s: semiperimetro a, b, c: Lados del tringulo. Hacer un programa para que
se ingresen los valores de los del tringulo de los lados del tringulo y si
estos valores cumplen las condiciones calcular el rea del tringulo en caso
contrario reportar DATOS INCORRECTOS.
AREA=(S(S-A)(S-B)(S-C))^0.5


























Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 82









Aplicacin 14.- Calcular el valor de la funcin de acuerdo a las siguientes
condiciones:
Y=x^2+5 Si x<=0
Y=3x-1 Si 0<x<2
Y=x^2-4x+5 Si x>=2




Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
83







Aplicacin 15.- Los empleados de una fbrica trabajan en dos turnos:
diurno y nocturno. Se desea calcular el jornal diario de acuerdo a los
siguientes puntos:
- La tarifa de las horas diurnas es de S/. 1.5
- La tarifa de las horas nocturnas es de S/. 2.25
- En caso de ser domingo la tarifa aumentara en S/. 1 en el turno
diurno y S/. 1.25 en el turno nocturno. Se debe leer el turno, las horas
trabajadas y el da de la semana.


Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 84










3.- Estructuras de Control Repetitivas
Permiten ejecutar sentencias hasta satisfacer una condicin Lgica.

Repetitiva con Entrada Controlada: Mientras
Realiza 0,1 2,.., o ms tareas.
Sintaxis



Aplicacin 1.- Disear un diagrama de flujo que permita calcular la suma
acumulada de la serie: 1+2+3+4+5.
Solucin.
a).- Se define un contador (cont) para que incremente elementos a sumar y
un acumulador (acum) que vaya acumulando los valores segn como
avance el contador.
b).- La condicin de terminacin est controlado por el contador, el cual
avanza hasta que se menor o igual a 5.
c).- Se debe inicializar el contador en 1 y el acumulador en 0
Programa Pseudocdigo.

Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
85







Programa Pseudocdigo Programa Fuente
Inicio
Imprimir( Bienvenidos :)
Cont 1
Acum 0
Mientras (cont<=5) hacer
Inicio
Acum acum.+ cont
Cont Con t+ 1
Fin
Imprimir (Suma acumulada=,Acum)
Fin.


Diagrama de Flujo de datos
Ejecucin.-
Los resultados se ilustran
en la siguiente grfica y su
confirmacin respectiva.




void main()
{ int cont=1,acum=0;

gotoxy(10,3);cout<<"Bienvenidos";

while(cont<=5)
{ acum= acum+cont;
cont++;
}

gotoxy(10,4);
cout<<"Suma es = "<<acum;
getche();
}
Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 86









Aplicacin 2.- Disear un diagrama de flujo que permita ingresar al usuario
un elemento de la serie y luego un segundo elemento de tal manera que
ambos elementos definen un grupo de elementos de la serie y luego calcular
la suma acumulada de la serie: 1+2+3+4+5+ 6 ++ n..
Solucin.
a).- Se define un Contador (Cont_I) para que defina lado izquierdo de la
serie y Lado_d, lado derecho como segundo elemento de la serie. Ambos
elementos definen un intervalo, bajo el cual se calcula la suma. Asimismo se
define el acumulador (Acum) que va acumulando los valores segn como
avance el contador.
b).- La condicin de terminacin est controlado por: Cont_I <= Lado_d ,
ambos deben leerse desde el teclado
c).- Se debe inicializar el acumulador en 0
Programa Pseudocdigo. Programa Fuente

Inicio
Imprimir( Ingrese lado izquierdo ),
leer(ldi);
Imprimir( Ingrese lado derecho );l
eer(ldd)
acum 0
Mientras (Cont_I<=Lado_d) hacer
Inicio
Acum acum.+ Cont_I
Cont_I Con t_I+ 1
Fin

Imprimir (La suma es =: ,Acum)
Fin


void main()
{ int ldi,ldd,acum=0;
gotoxy(10,3);cout<<"Bienvenidos";
gotoxy(10,5);cout<<"Lado
Izquierdo";cin>>ldi;
gotoxy(10,6);cout<<"Lado
Derrecho";cin>>ldd;
while(ldi<=ldd)
{ acum= acum+ldi;
ldi++;
}
gotoxy(10,8); cout<<"Suma de
"<<ldi<<" a "<<ldd<<" es = "<<acum;
getche();
}
Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
87







Ahora se disea el Diagrama de Flujo

















Ejecucin.- usando Cont_I=3 y Lado_d=5 , el resultado debe
ser: 3+4+5=12.
Los resultados se ilustran en las siguientes grficas y su confirmacin.





Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 88









Aplicacin 3.- Disear un diagrama de flujo que permita ingresar datos tipo
entero y luego calcular la sumatoria y el promedio del conjunto de datos.
Finaliza el ingreso de notas si edita 0.
Solucin. El programa solicita un dato, verifica si es diferente de cero,
entonces acumula; se genera bucles hasta editar 0.


















Ejecucin .- ingrese los nmeros: 11,15 y 14 , los resultados se ilustran a
continuacin,

Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
89









Programa Pseudocdigo Programa Fuente


variables
m,acum 0 : enteros
Inicio
imprimir(Ingrese datos= );
leer(n)

mientras(n!=0) hacer
inicio
acum acum+n
imprimir(Ingrese datos= );
leer(n)
fin
imprimir(Suma es = ,acum)
fin
Aplicacin 4.- Disear un programa que permita leer m cursos definidos,
por el usuario y por cada curso n alumnos, n>1 y por cada alumno
identificarlo por cdigo solo de 3 dgitos, nombre y leer 3 practicas, luego
calcular el promedio de practicas eliminando la menor nota. Mostrar el
promedio de practicas indicando el estado Aprobado o Desaprobado.
Solucin. El programa solicita
Interface para ingresar Nmero
de cursos y nmero de alumnos
por curso.
Interface donde se ingresa o de
alumnos
void main()
{ int n,acum=0;
gotoxy(10,3);cout<<"Bienvenidos";
gotoxy(10,5);cout<<"Dato = ";cin>>n;
while(n!=0)
{acum= acum+n;
gotoxy(10,5);cout<<"Dato =
";cin>>n;
}
gotoxy(10,8); cout<<"Suma =
"<<acum;
getche();
}
Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 90










variables
n,i,cu=0,co, pc1,pc2,pc3,menorp: enteros
nomb : cadena de longitud 20 caracteres, resp='S': caracter
Inicio
imprimir(SISTEMA ACADEMICO ");
mientras((resp=='S')|| (resp=='s')) hacer
Inicio
cu=cu+1;
imprimir(Curso No.:",cu);
imprimir(Ingrese total alumnos = ");leer(n);
i=1;
mientras(i<=n) hacer
Inicio
imprimir(Ingrese datos= );
imprimir(Alumno No.: ",i," .- ");
imprimir(Codigo = "); leer(cod);
si((cod>99) y (cod<1000)) hacer
Inicio
imprimir(Es Correcto.....");
imprimir(Nombre=");leer(nomb);
imprimir(Pc1=");leer(pc1);
si((pc1>=0) y (pc1<21)) entonces
Inicio
imprimir(Pc1 es correcto continuar");
imprimir(Pc2 =");leer(pc2);
si((pc2>=0) y (pc2<21)) entonces
Inicio
imprimir(Pc2 es correcto continuar");
imprimir(Pc2 =");leer(pc3);
menorp=20;
Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
91







si(menorp>pc1) menorp=pc1;
si(menorp>pc2) menorp=pc2;
si(menorp>pc3) menorp=pc3;
imprimir(Menor =",menorp);
pp=((pc1+pc2+pc3)-menorp)/2;
imprimir(Promedio = ",pp);
si(pp>10) entonces
imprimir(APROBADO);
sino
imprimir(DESAPROBADO");
fin
sino
imprimir(Error en Pc2, adios...");
fin
fin
sino
imprimir(Error en Pc1, adios...");
fin
fin
sino
imprimir(Es InCorrecto.....");
i=i+1;
fin
imprimir(Sr. desea procesar siguiente curso...?(S/N)==>");leer(resp)
si(resp=='N') entonces
inicio
imprimir(Ud proceso ",cu," cursos");
exit(0);
fin
fin
fin
Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 92









Implementacin en Borland c++ 5.02
void main()
{ system("title Por Cordova neri; T."); system("color AD");
int n,i,cu=0,cod; char nomb[20], resp='S';
gotoxy(20,2);cout<<" SISTEMA ACADEMICO ";
gotoxy(10,3);cout<<" ___________________________________";
while((resp=='S')|| (resp=='s'))
{clrscr();system("color 4a");cu++;
gotoxy(10,2); cout<<" Curso No.:"<<cu;
gotoxy(20,5);cout<<"Ingrese total alumnos = ";cin>>n;
int pc1,pc2,pc3,menorp;
i=1;
while(i<=n)
{ clrscr();system("color 1b");
gotoxy(25,7); cout<<"Alumno No.: "<<i<<" .- ";
gotoxy(25,8); cout<<"Codigo = ";; cin>>cod;
if((cod>99) && (cod<1000))
{gotoxy(55,8);cout<<"Es Correcto.....";
gotoxy(25,9);cout<<"Nombre=";gets(nomb);
gotoxy(25,11);cout<<"Pc1=";cin>>pc1;
if((pc1>=0) && (pc1<21))
{gotoxy(55,11);cout<<"Pc1 es correcto continuar";
gotoxy(25,12);cout<<"Pc2 =";cin>>pc2;
if((pc2>=0) && (pc2<21))
{ gotoxy(55,12);cout<<"Pc2 es correcto continuar";
gotoxy(25,13);cout<<"Pc2 =";cin>>pc3;
menorp=20;
if(menorp>pc1) {menorp=pc1; }
if(menorp>pc2) {menorp=pc2; }
if(menorp>pc3) {menorp=pc3; }
gotoxy(55,13);cout<<"Menor ="<<menorp;
Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
93







float pp=((pc1+pc2+pc3)-menorp)/2;
gotoxy(25,16);cout<<"Promedio = "<<pp;
if(pp>10)
{gotoxy(45,16);cout<<"APROBADO"; getche();
}
else
{gotoxy(45,16);cout<<"DESAPROBADO"; getche();
}
}
else
{gotoxy(25,11);cout<<"Error en Pc2, adios...";
}
}
else
{ gotoxy(25,11);cout<<"Error en Pc1, adios...";
}
}
else
{gotoxy(55,8);cout<<"Es InCorrecto-.....";
}
i++;
}
gotoxy(10,23);
cout<<"Sr. desea procesar sigte curso...?(S/N)==>"; resp=getch();
if(resp=='N')
{clrscr(); system("color 7b");
gotoxy(20,12);cout<<"Ud proceso "<<cu<<" cursos";getche(); exit(0);
}
}
}
Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 94









Aplicacin 5.- Disear un programa que permita leer un numero entero
formado por dos 0 mas dgitos, luego mostrar:
Numero invertido, total de dgitos pares, e impares , secuencia de dgitos
pares e impares
Solucin. El programa solicita
Inicio
variables
int n,secimpar=0,nnr=0,imp=0,secpar=0,pa=0,
nr=0,d,inv=0: enteros;
imprim ir( INVERTIR NUMERO ");
imprim ir( ___________________________________");
imprim ir( Ingrese numero n =");leer(n);
si(n>99) entonces
Inicio
mientras(n>0) hacer
inicio
d=n%10;
si (d%2==0) entonces
inicio
pa++; secpar=secpar+d*pow(10,nr); nr++;
fin
sino
inicio
imp++; secimpar=secimpar+d*pow(10,nnr); nnr++;
fin
inv=inv*10+d;
n=n/10;
fin
imprim ir( Numero invertido = ",inv);
imprim ir( Total de pares = ",pa);
imprim ir( Secuencia par = ",secpar);
imprim ir( Total de impares = ",imp );
imprim ir( Secuencia impar = ",secimpar);
fin
sino
imprim ir( Numero incorrecto........ "); fin
Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
95







Implementacin en Borland c++ 5.02
void main()
{ system("title Por Cordova neri; T."); system("color F9");
int n,secimpar=0,nnr=0,imp=0,secpar=0,pa=0, nr=0,d,inv=0;
gotoxy(20,2);cout<<" INVERTIR NUMERO ";
gotoxy(10,3);cout<<" ___________________________________";
gotoxy(20,5);cout<<"Ingrese numero n =";cin>>n;
if (n>99)
{ while(n>0)
{d=n%10;
if (d%2==0)
{ pa++; secpar=secpar+d*pow(10,nr); nr++;
}
else
{ imp++; secimpar=secimpar+d*pow(10,nnr); nnr++;
}
inv=inv*10+d;
n=n/10;
}
gotoxy(20,7);cout<<"Numero invertido= "<<inv;
gotoxy(20,8);cout<<"Total de pares = "<<pa;
gotoxy(20,9);cout<<"Secuencia par = "<<secpar;
gotoxy(20,11);cout<<"Total de impares = "<<imp ;
gotoxy(20,12);cout<<"Secuencia impar = "<<secimpar;
}
else
{ gotoxy(20,5);cout<<"Numero incorrecto........ ";
}
getche();
}
Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 96










Estructura de Control con nmero de instrucciones conocidas



desde V
c
<-- V
i
hasta V
f
Hacer
Inicio
<Instrucciones>
Fin

Se ejecuta una serie de instrucciones hasta que vi=vf





Observacin: Se debe cumplir que Vi <= Vf

Aplicacin 1.- Disear un programa pseudocdigo y diagrama de flujo que
permita leer el nmero de trminos de la serie 1+2+3+4+5+.+n y luego
calcular la suma acumulada.

Solucin.
a).- Se define un contador (cont) como variable de control y n el nmero de
trminos a ingresar. Para sumar se define la variable Acum que va
acumulando los valores segn como avance el contador.
b).- La condicin de terminacin est controlado por el contador, el cual
avanza hasta que se menor o igual a n, dato ingresado por el usuario.
c).- Se debe inicializar el Acumulador en cero.




Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
97








Programa Pseudocdigo Programa Fuente
Inicio
Imprimir( Ingrese Nmero de Trminos:),
leer(n)
Acum.=0
dese cont1 Hasta n hacer
Inicio
Acum acum.+ cont
Fin
Imprimir (La suma es =, Acum)
Fin.

Diagrama de Flujo

void main()
{ int n,acum=0;
gotoxy(10,4);
cout<<"Ingrese total datos ";
cin>>n;

for(int cont=1;cont<=n;cont++)
{acum=acum+cont;
}
gotoxy(10,7);cout<<"suma es
="<<acum;

getche();
}
Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 98









Ejecucin.- Ingresando nmero de elementos: n=6
Acum: 1+2+3+4+5+6 = 21
En la siguiente grfica, se ilustra los procedimientos de ejecucin.
Lectura y Proceso:
Al ejecutar, el programa le solicita que ingrese el nmero de elementos de la
serie a sumar, para nuestro caso ingrese 6.





Aplicacin 2.- Disear un diagrama de flujo que permita leer n datos de tipo
entero y luego genere un reporte que muestre el nmero mayor.
Solucin. Se definen las siguientes variables:
n : para leer el nmero de elementos.
Dato : para lectura de los elementos
Mximo : para almacenar el nmero mayor.
Se usa la estructura de control repetitiva dese. que permite leer desde el
segundo elementos hasta el total y luego se usa la estructura condicional
si.., para comparar dos datos y si es verdadera la respuesta asigne o
cargue el dato la variable mximo.

Finalmente se imprime la variable mxima.


Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
99









Diagrama de flujo de datos




Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 100









Ejecucin:

Aplicacin 3.- Disear un diagrama de flujo que permita conocer el nmero
total de puntos que se encuentran en el interior de la elipse:
X*x/16 + y*y / 9=1
Solucin.
Se definen las siguientes variables:
Punto : para contar el total de puntos (x,y)
Radio: para verificar la condicin: radio<1 entonces existe punto
interior a
La elipse.
Se definen 2 bucles:
Un bucle externo y un Bucle Interno
El bucle externo: est definido para cada valor de las abscisas (puntos en el
eje x)
El bucle Interno: est definido para cada valor de las ordenadas (puntos en
el eje y).
A continuacin se ilustra el diagrama de flujo.



Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
101








Ejecucin: La ejecucin del diagrama genera el reporte punto por punto,
tal como se ilustra en la siguiente grfica.






Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 102









Implementado en el lenguaje de programacin Borland C ++ 5.0




Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
103







Problemas resueltos usando tcnica de Pseudocdigo

Aplicacin1.--Disear un programa que permita calcular en forma
independiente la suma de los nmeros pares e impares en el rango de 1 a
50.
Programa Pseudocdigo Programa DFD

Variable
n, sp=0, si=0,a,i=1: enteros
Inicio
imprimir (Ingrese total de
nmeros),
leer(n)
Mientras
Inicio
Imprimir (Ingrese numero =),
leer(a)
Si (n mod 2=0) entonces
inicio
Sp sp+a
fin
Sino
Si (n mod 2 <>0) entonces
inicio
Si si+a
fin
i=i+1
fin
imprimir ( La suma de pares es:,sp)
imprimir ( La suma de impares es:,si)
Fin

Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 104









Aplicacin 2.- Calcular y visualizar la suma y el producto de los nmeros
impares comprendidos entre 20 y 80.

Solucin
Programa Pseudocdigo Programa DFD


Variables
p, s, n: enteros
Inicio
n 20
p 1
s 0
Mientras (n<=80)
Inicio
Si (n mod 2<>0 entonces
inicio
s s+n
p p*n
Fin
n n+1
fin
imprimir ( La suma de los
impares es:, s)
imprimir ( El producto de los
impares es:, p)
Fin.
Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
105







Aplicacin 3.- Disear un programa que permita leer n nmeros enteros y
obtener el promedio de los positivos y el promedio de los negativos.
Solucin

Programa Pseudocdigo Programa DFD
Variables
n, l 1,nmero, cp 0,
cn 0, sp 0, sn 0:
enteros
pp,pn:real
Inicio
imprimir ( Ingrese total), Leer (n)
Mientras (l<=n)
inicio
imprimir (Ingrese Nmero:),
Leer(nmero)
Si (nmero>0) entonces
inicio
sp sp+nmero
cp cp+1
fin
Sino
inicio
sn sn+nmero
cn cn+1
fin
l l+1
fin
pp sp/cp
pn sn/cn
imprimir ( El promedio de los
positivos es:, pp)
imprimir ( El promedio de los negativos es:, pn)
Fin


Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 106









Aplicacin 4.- Calcular la suma de los cuadrados de los 15 primeros
nmeros naturales.
Solucin
Variables
n, suma: enteros
Inicio
n 1
mientras(n<=15) hacer
inicio
suma suma+n^2
n n+1
fin
imprimir ( La suma es:, suma)
Fin

Aplicacin 5.- Disear un programa
que permita ingresar n nmeros y
luego calcular el promedio de ellos.
Solucin
Variables:
n, l, suma, cantidad : enteros
promedio: reales
Inicio:
cantidad 0, suma 0
imprimir ( Ingrese total:), Leer (n)
l 1
Mientras (l<=n)
inicio
suma suma + l
cantidad cantidad+1

l l+1
fin
promedio suma/cantidad
imprimir(Promedio= :, promedio)
Fin

Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
107








Aplicacin 6.- Disear un programa que permita Ingresar nmeros
enteros, visualizar la suma de los nmeros pares de la lista, cuantos
nmeros pares existen y cual es la medio de los nmeros impares.
Solucin
Variables
n,sp,si,cp,ci,mni,l,ni:enteros
Inicio
sp 0, cp 0, i 1

imprimir ( Total:) Leer (n)
Mientras(i<=n) hacer
inicio
Si (n mod 2=0) entonces
inicio
sp sp+n
cp cp+1
Sino
inicio
si si+n
Fin
Fin
mni si/2
imprimir (La suma de pares
es:, sp)
imprimir (La cantidad de
pares es:, cp)
imprimir (La media = ,mni)
Fin
Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 108









Aplicacin 7.- Disear un programa que permita leer un numero
entero,positivo formado por do o mas cifras, luego mostrarlo en forma
invertida, secuencia de nmeros pares y secuencia de nmeros impares.

Variables
N, inv0, i=1,secpar=0,secimp=0,nr=0,nnr=0,
imprimir(Ingrese n= ), leer(n)
Si (n>9) entonces
Inicio
Mientras (n>0 ) hacer
d n mod 10
inv inv*10+d
n n/10
si(d mod 2=0) entonces
inicio
fin
secpar secpar+d*pow(10,nr)
nr nr+1
sin
inicio
secimp secimp+d*pow(10,nnr)
nnr nnr+1
fin
fin
Fin
Sino
Imprimr(Error, hasta luego..)
fin
Fin




Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
109








Diagrama de flujo de datos













.











Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 110









Compendio de problemas en Pseudocdigo: Se mostrara problemas
resueltos en pseudocdigo e implementados en el software libre
PSeInt. En las siguientes pantallas se ilustra su instalacin.















Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
111








En la siguiente figura se ilustra la tcnica para implementar un Programa
Pseudocdigo en el ordenado, veamos:
1.- Primero.- SEn el editor del programa PSeInt se edita las
instrucciones del pseudocdigo y luego se ejecuta usando el botn
que permite generar el reporte respectivo
2.- Segundo.- El programa Pseudocdigo se expresa en un Diagrama de
flujo de datos usando el botn .

Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 112









Aplicacin 1- Disear un programa que permita implementar un Juego
simple y que pide al usuario que adivine un numero en 10 intentos, cuando
este ingresa nmeros.
Variables
Intent, num_secr: enetros
INICIO
Intent 9;
num_secr ALEATORIO(100)+1;
imprimir( "Adivine su numero (de 1 a 100):))";leer (num),
Mientras(( num_sec<>num) y ( intentos>0)) Hacer
Inicio
Si (num_sec>num) Entonces
inicio
imprimir( ""Muy bajo");
Fin
Sino
imprimir( " "Muy alto");
imprimir("Le quedan ",intentos," intentos:");
imprimir("Ingrese nuevo numero:);
Leer(num);
intent<- intent-1;
Fin
Si (intentos=0) Entonces
imprimir("El numero era: ", num_sec);
Sino
imprimir("Suerte, adivino en ",11- intentos, " intentos.");
Fin
Fin


Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
113







Aplicacin 2.- Disear un programa que permita leer un nmero y luego
factorizarlo y mostrar sus elementos.
Solucin
Variables Factoriza, factor_primo: boleano. n,div: enteros
Inicio
imprimir("Ingrese numero = ");Leer( n);
factoriza verdad;
Mientras (factoriza y n>1) hacer
Inicio
Div 0;
Si (n/2 = trunc(n/2)) Entonces
inicio
imprimir( 2)
n n/2;
Fin
Sino
inicio
div 1;
factor_primo Verdad;
Mientras (div<=rundc(n) y factor_primo ) Hacer
Inicio
div div+2;
Si (n /div = trunc(n/div) Entonces
factor_primo Falso;

Si (factor_primo ) Entonces
imprimir( n );
factoriza falso;
sino
imprimir(div) ; n n/div;
factor_primo verdad
Fin
Fin
FIN
Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 114










Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
115







Aplicacin 3.- Disear un programa que
permita leer n nmeros enteros definidos por
usuario, luego calcular el promedio de los n
nmeros ingresaos
Solucin
variables
n, sumaac : enteros,
Inicio
imprimir(" Ingrese datos: )
Leer (n),
sumaac 0;
desde i 1 hasta n Hacer
inicio
imprimir("Ingrese dato ",i,"=";
leer(dato),
sumaac sumaac +dato;
Fin
prom sumaac /n;
imprimir(" El promedio es: ",prom);
Fin
Aplicacin 4.- Resolver problema 3,
usando estructura repetitivas
MIENTRAS
Solucin
variables n,i, sumaac: enteros,
Inicio
sumaac 0, i 1,
imprimir(" Ingrese la cantidad de datos: ) ",Leer (n),
Mientras (i<=n ) hacer
Inicio
sumaac sumaac +dato;
imprimir("Ingrese dato ",i,"="; leer(dato),
Fin
imprimir("Suma =", sumaac ),
Fin
Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 116










COMPENDIO DE PROBLEMAS

Problema 1.- Disear un programa que permita a un usuario leer un
NUMERO entero positivo compuesto como mnimo 6 y mximo 8 dgitos,
asimismo el usuario ingresa un DIGITO a buscar en NUMERO. Por lo tanto,
el programa debe brindar al usuario los siguientes reportes; numero
invertido, total de dgitos repetidos, la secuencia que forma y la suma de
este cuando el usuario ingresa un digito a buscar, Total de dgitos no
repetidos, su secuencia y su suma respectiva. Asimismo de la secuencia no
repetida mostrar la secuencia formada por solo nmeros pares as como de
los impares, (Ver Figura, parte de RESULTADOS)

Problema 2.-Disee un programa que permita calcular la suma acumulada
de la siguiente serie:
Para lo cual se debe leer el elemento desde donde desea iniciar la suma y
luego el elemento hasta
donde se debe sumar. Se

Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
117







debe validar que el primer elemento sea estrictamente menor o igual al
segundo elemento. Luego realicen los siguientes reportes:
2.1.-La suma acumulada de la serie
2.2.-El resultado de 1), mostrarlo en forma Invertida
2.3-El total de cifras que tiene resultado 1).
2.4.-Total de cifras Pares segn resultado 1)

2.5.-Secuencia de cifras Pares
segn 1)
2.6.-Suma de cifras Pares segn
5)
2.7.-Total de cifras ImPares segn
resultado 2.1)
2.8.-Secuencia de cifras ImPares
segn 1)
2.9.-Suma de cifras Impares
segn 2.8)
En la siguiente interface se ilustra
como debe presentar sus respuestas.
El programa debe ser Interactivo con el usuario, es decir, ejecutar el
mensaje:
Desea continuar..? (S/N)..

Problema 3.-Disear un programa que permita a un usuario validar sus
datos de entrada por Clave=Per y cdigo=100P, si los datos de
entrada son correctos el sistema enva el mensaje Procesando Edades
de Poblacin en el Per , solicitando inmediatamente que ingrese
Numero de Departamentos(Solo en el rango 1..30 ), por cada
Departamento debe ingresar Nmero de Distritos(Solo en el rango 1..50 ) y
por cada Distrito debe ingresar cantidad de Pobladores,(solo en el rango
1..10000) donde por cada Poblador ingrese su Edad(Solo en el rango
1..100), luego genere reportes para conocer( ver figura):
Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 118









a) Promedio de Edades de pobladores en cada Distrito
b) Promedio de edades de Pobladores en cada Departamento

El programa debe ser Interactivo, es decir despus de cada consulta debe
preguntar Sr. Desea hacer una siguiente consulta..?(S/N)==> .
Si el usuario ingrese datos incorrectos, entonces el programa indica el
nmero de error as como el nmero de intentos que le queda. Si el nmero
de errores es mayor que 3, el programa finaliza enviando el mensaje
Debido a errores, Hasta luego
Problema 4.- Disear un programa que permita a un usuario validar sus
datos de entrada por cdigo=tcn, si los datos de entrada son correctos el
sistema enva el mensaje Bienvenidos as como el nmero de consulta
y la fecha respectiva , luego solicita que ingrese un numero entero
comprendido en el rango 1..99, este nmero permite calcular el factorial y
con su resultado se debe mostrar el nmero total de dgitos, el nmero de
dgitos nulos y dgitos no nulos, asimismo el menor y mayor digito.
Adicionalmente, el programa debe ser interactivo, es decir; cada vez que se
repite un nuevo proceso, el sistema solicita que ingrese el cdigo de
validacin mostrando el nmero de Consultas a la fecha(Este nmero es
diferente al total de errores que cometa el usuario en su validacin de

Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
119







cdigo). Asimismo, si el usuario no desea continuar, el sistema enva el
mensaje de agradecimientos mostrando el nmero total de consultas.
Ahora si el dato de validacin es incorrecto (recuerde que solo se dispone de
3 alternativas), superado este nmero el sistema enva el mensaje FIN DE
SESION, PUES SUPERO MAS DE INTENTENTOS "
PROCEDIMIENTOS
4.1.- Primera ejecucin del programa: en esta interfase, el Sistema le
advierte al usuario que SOLO dispone de 3 Alternativas para ingresar al
sistema a calcular el factorial de un nmero, para lo cual debe validando su
cdigoTCN (observe que el valor esta en letras maysculas) Asimismo le
indica el Numero de consulta y la fecha correspondiente.
En esta interface, el usuario ingresa su cdigo=tc, cdigo que es
incorrecto. Ante este error el sistema enva el mensaje de error y el nmero
de oportunidades que quedan, tal como se ilustra en la figura.
4.2.- La siguiente interface ilustra el error numero 2 cometido por el usuario
al ingresar un cdigo=3tcn, cdigo que no est registrado en el sistema.

Se deja constancia que el nmero de consultas no cambia, pero si el
contador de errores, como mximo 3.




Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 120










4.3.- En la siguiente interface, el usuario ingresa correctamente su cdigo
tcn (observe que est en letras minsculas)
4.4.- A consecuencia del paso 3, el sistema enva el mensaje de
Bienvenida y el nmero de errores ( 2) en este caso.
4.5.- A continuacin, el sistema solicita que ingrese un numero SOLO en el
rango 1..99 (se debe validar descartando los negativos y los nmeros mayores a
99). En esta interface se calcula el factorial del nmero ingresado y otros resultados
(total de dgitos, total de dgitos nulos, total de dgitos diferentes de 0, digito menor y
digito mayor ), tal como se ilustra en la figura.


Si el usuario contesta la pregunta con s , entonces se debe reiniciar el sistema
mostrando el nmero de Consultas actuales (4) y la fecha, tal como se ilustra en
la siguiente interface.






Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
121







4.6.- El usuario despus en su consulta nmero 4, ingresa el nmero 14 y los
resultados se ilustran en la siguiente interface



4.7.- Si el usuario responde con n, el sistema envi la siguiente interface,
indicando los agradecimientos por las diferentes consultas as como el total de
consultas realizadas.


Problema 5.-Disear un programa que
permite leer 2 nmeros enteros y luego
genere un reporte que permita visualizar
tales nmeros en forma intercambiada,
tal como se ilustra en la siguiente
interface.



Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 122









Problema 6.-La siguiente figura, representa una Interface para calcular el
Promedio Final de n alumnos(n>1), donde por cada alumno, se lee 4
prcticas calificadas con notas solo en el rango de 0..20 y luego se calcula
su promedio de prcticas (pp) eliminando la prctica con menor nota.



Para que el alumno tenga derecho a rendir Exmenes Parcial (exp.) y Final
(exf.), el promedio de prcticas debe ser mayor que 6,6. En otro caso El
alumno esta desaprobado en el ciclo
El promedio final (pf.) se calcula mediante: pf= (pp+exp+exf). Si pf >10
entonces Alumno Aprobado. En otro caso alumno puede rendir examen
sustitutorio (exs). Para calcular
el nuevo promedio final (pf), se
considera el examen
sustitutorio el cual reemplaza al
examen parcial o final
dependiendo cual tiene menor
nota. Si pf>10 entonces
Alumno Aprobado, en otro caso Alumno Desaprobado.
Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
123







Problema 7.-Disear un Programa que permita al usuario ingresar n
empleados(n<=100), a continuacin por cada empleado ingresar su sueldo
respectivo. El programa debe generar reportes para conocer:
a).- Suma acumulada de sueldo de empleados en el rango 100..1000
b).- Suma acumulada de sueldo de empleados en el rango 1000..1999
c).- Suma acumulada de sueldo de empleados en el rango 2000..3000.
Obs. Se deja al lector que muestre la cantidad de Empleados por cada
rango de sueldo.
Problema 8.-Una empresa, premia a sus Empleados de un cierto producto
por las ventas del da bajo las siguientes condiciones:
a) Si ventas < S/. 80, entonces no hay comisin
b) Si ventas est en el rango de : 80..600 entonces la comisin es igual al
12%
c) Si ventas est en el rango de: 601..1000 entonces la comisin es igual al
15%
Disear un programa que permita leer nombre de empleado, nombre de
producto y el total respectivo, luego hacer un reporte de la comisin.
Tambin si las ventas no satisfacen la
Condicin a), enviar el mensaje Sr. ..Sus ventas No ameritan comisin.
Si las ventas exceden la condicin c), enva el mensaje Felicitaciones,
ser ascendido..


Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 124









Problema 9.-Disee un programa que
permita validar datos de usuario para
ingresar al sistema de consultas, donde el
usuario se identifica por cdigo=100 y
clave=tlcn.
a).- La validacion se debe realizar primero
el codigo y luego la clave. La clave debe
visualizarse con el * . El usuario
ingresa su codigo, si este es correcto, el
sistema solicita que ingrese clave, si esta
contiene error, el sistema envia el mensaje
Es Incorrecto, hasta luego . con lo cual
finaliza el programa. Analogo para el
codigo
b)- Si los datos son correctamente
ingresados, el sistema envia las siguientes
alternativas, tal como se ilustra en el
siguiente formulario, donde cada opcion
realiza las siguientes tareas:
<F> Formar intervalo: se trata de formar un
intervalo I:[a,b], donde a<b. para lo cual el
usuario ingresa los numeros enteros a,b.
Ejemplo.
*.- Si a=2 y b= 8 el sistema envia el
mensaje intervalo es correcto
* .- pero si a=8 y b=2, el sistemema envia
el mensaje de obseracion, mostrado en el
formulario adjunto, pero el miso debe
intercabiar los valores y mostrar que el
intrevalo es correcto I:2<8 o [2..8] . luego calcula el resto de 8 entre 2.

Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
125







<M> Mayor de 3 Numeros : El usuario ingresa 3 numeros enteros positivos
y luego el sistema muestra el mayor respectivamente, ademas indicando si
es numero Par o Impar
<N> Numero de Cifras: El usuario ingresa un numero entero positivo como
minimo de 1 cifra y maximo de k>1 cifras, luego el sistema debe identificar y
mostrar el total de cifras del numero ingresado.
< I > Numero de Capicua(Palindromico): La palabra capica (en
matemticas, nmero palndromo) se refiere a cualquier nmero que se lee
igual de izquierda a derecha y de derecha a izquierda (Ejemplos: 121 ) El
trmino se origina en la expresin
catalana capicua (cabeza y cola).

Definicin.- Un nmero palindrmico es
un nmero simtrico escrito en cualquier
base a tal que a
1
a
2
a
3
| a
3
a
2
a
1
.
Todos los nmeros de base 10 con un
dgito {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} son
palindrmicos.
Existen nueve nmeros palindrmicos de dos dgitos: {11, 22, 33,
44, 55, 66, 77, 88, 99}.
Noventa de tres dgitos: {101, 111, 121,, 181, 191, 202, 212,, 292,
303, 313,, 898, 909, 919, 929,, 979, 989, 999}
Noventa con cuatro dgitos: {1001, 1111, 1221, 1331, 1441, 1551,
1661, 1771, 1881, 1991,, 9009, 9119, 9229, 9339, 9449, 9559,
9669, 9779, 9889, 9999},
Novecientos de cinco dgitos: {10001, 11011, 11111, 11211, 11311,
11411, 11511,,}
Un pequeo truco para hallarlos sera sumar un nmero con otro en el
que le damos la vuelta a sus cifras. Por ejemplo a m me encanta el
nmero 17, y para buscar un nmero capica a partir del 17 lo que
tengo que hacer es: 17+71=88 (capica).
Ejemplo: partimos del nmero 96:
Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 126









96 + 69 = 165; 165 + 561 = 726; 726 + 627 = 1353; 1353 + 3531 =
4884
<S> Salir: Permite finalizar con el sistema
Si el usuario ingresa una letra que no corresponde a las opciones, el
sistema enva el mensaje Opcin no disponible y finaliza.

Problema 10.-Disear un programa que permita Leer o ingresar Edades de n
alumnos(n es definido por usuario) y luego mostrar la Menor edad y la posicin
Actual del dato ingresado.
En la siguiente grafica se ilustra la lectura y los reportes, as como las edades
cuando se tiene que actualizar
Verificar: n=3, con las siguientes datos

Nombres Ana Lus Pedro
Edades 30 15 28
posicin 1 2 3

El programa debe ser Interactivo, es decir; despus de finalizar con el ingreso
de los datos, el sistema enva el mensaje de
Desea continuar(S/N). Debe validar la
edicin solo de S o N. por cada error debe
mostrar el mensaje Ingrese nueva letra,
error # . Cuando edita S, contina con la
lectura de nuevos datos y si edita N, el programa
finaliza indicando el nmero de consultas realizadas.
10.- Disear un programa interactivo que permita
a un usuario Validar sus datos de ingreso al
sistema. Los datos pueden ser: una letra o un
digito. Si el usuario ingresa un dgito, el sistema
confirma que dato es un DGITO y luego solicita que ingrese un nmero



Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
127







entero mayor o igual a 10 y menor que 10000. Luego puede ocurrir que:
I.- Si el nmero es par, entonces el programa
debe realizar las siguientes tareas:
a).-Mostrar el numero en forma invertida
b).-Conocer el nmero total de dgitos.
c).-Conocer el nmero total de dgitos pares.
(Ver figura.)
d) Conocer el nmero total de dgitos impares
(ver figura.)
II.- Si el nmero es impar, entonces el sistema confirma que el dato es un
DGITO y luego el programa debe calcular y mostrar el factorial del ltimo
digito. Ahora, si el usuario ingresa una letra, el sistema confirma mediante el
mensaje, que el dato es una LETRA, luego solicita que ingrese una cadena,
de la cual mostrar su longitud y por cada posicin del carcter, formar la
secuencia respectiva. Ver figura
Problema 11.- Disear un Programa que permita leer un numero entero n,
en Base Decimal y devuelve su equivalente en el Sistema Binario. En la
siguiente interface se ilustra el ejemplo.

Problema 12.- Disear un Programa que
permita leer un numero entero n(n>1) en
Base Binaria y devuelve el numero
expresado en base Decimal. En la
siguiente interface se ilustra el ejemplo


Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 128









Problema 13.- Algunos nmeros enteros se pueden representar como
suma de dos enteros al cuadrado, por ejemplo 50 = 1
2
+ 7
2
= 52 + 52.
Escribe 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 a
2

+ b
2
donde 0 a b n. Por ejemplo, si n = 50 entonces hay dos formas,
por lo que t = 2.
Entrada: Un numero entero n tal que 1 n 2,000,000,000.
Salida: Un numero entero t.

Problema 14.- Escribe un programa que determine el valor mximo p y el
valor mnimo q que toma la funcin f(x) = (ax + b)/(cx + d) en los enteros que
se encuentran en el intervalo dado por m y n (incluyndolos). Observa que
es posible que la funcin no este definida en todos los puntos de ese
intervalo. Adems, deber determinar los enteros r y s en los cuales se
alcanzan estos valores (es decir, tales que f(r) = p y f(s) = q). En caso de
que haya varios enteros r y s con esa propiedad, se deben dar aquellos
cuyos valores sean los menores posibles. Por ejemplo, si f(x) = (x + 2)/(x - 2)
y el intervalo est dado por m = -2 y n = 3 entonces vemos que f(-2) = 0, f(-
1) = -1/3, f(0) = -1, f(1) = -3, f(2) no est definida y f(3) = 5, por lo que r = 3 y
s = 1.
Entrada: Seis nmeros enteros a, b, c, d, m, n (con m n) separados por
espacios y todos ellos en el intervalo de -1000 a 1000 (incluyndolos).
Puedes suponer que el intervalo m x n contiene al menos un entero x en
el cual la funcin f(x) est definida (y por lo tanto el mximo y el mnimo
existen).
Salida: Dos nmeros enteros r, s, separados por espacios.
Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
129








Problema 15.-Euclides y Euler: Dados dos enteros positivos p y q, su
mximo comn divisor es el entero
positivo ms grande que los divide a
ambos exactamente y se puede
calcular con el algoritmo de Euclides
(el cual puedes investigar cmo
funciona casi en cualquier lugar). Si el mximo comn divisor de p y q es
igual a 1, entonces se dice que p y q son primos relativos. La funcin j(n) de
Euler es igual a la cantidad de enteros en el intervalo del 1 al n que son
primos relativos con n. Por ejemplo, j(9) = 6 debido a que 9 es primo relativo
con los seis enteros 1, 2, 4, 5, 7 y 8.
Escribe un programa que, dados dos enteros p y q, encuentre el mximo
valor m que toma la funcin j(n) de entre todos los enteros n en el intervalo
de p a q, adems del menor valor de n en ese intervalo tal que j(n) = m.
Ejemplo, si p = 4 y q = 10 entonces j(4) = 2, j(5) = 4, j(6) = 2, j(7) = 6, j(8) =
4, j(9) = 6 y j(10) = 4 por lo que m = 6 y n = 7.
Entrada: Dos nmeros enteros p y q tales que 1 p q 1,000,000.
Salida: Un numero entero m y un nmero entero n.
Problema 16.- Nmeros menores que dos mil: Imagine que tiene una
lista de nmeros enteros (todos ellos menores que dos mil) a la cual se le
han suprimido las separaciones. Por ejemplo, si
comenz con la lista 31, 415, 9, 265 entonces
obtuvo la cadena s = 314159265. Ahora usted
quiere recuperar una lista de nmeros enteros
(todos ellos menores que dos mil) agrupando los
dgitos tanto como sea posible desde el principio
de la cadena. En nuestro caso, obtendr la lista
314, 1592, 65 con p = 3 elementos. Despus
Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 130









usted realiza la misma operacin pero comenzando desde el final de la lista.
En nuestro caso, obtendr la lista 314, 159, 265 con f = 3 elementos. Escriba
un programa que dada la cadena de dgitos encuentre cuantos elementos p
y f contienen cada una de las listas.
Entrada: Una cadena s que contiene entre 1 y 1000 dgitos.
Salida: Dos nmeros enteros p y f separados por un espacio.
Problema 17.- Diferencias de cuadrados: Algunos enteros se pueden
representar como diferencia de dos enteros al cuadrado, por ejemplo 15 = 4
2

- 1
2
= 8
2
- 7
2
. Escribe un programa que determine la cantidad de formas
distintas t en las que se puede escribir un numero entero n como diferencia
de dos cuadrados a
2
- b
2
donde a b 0.
Entrada: Un nmero entero n tal que 0 n 1,000,000.
Salida: Un nmero entero t.
Problema 18.-Sumas de nmeros consecutivos
Escribe un programa que determine la cantidad f de formas en las que se
puede escribir un nmero entero positivo n como suma de uno o ms
nmeros enteros positivos consecutivos. Tu programa tambin debe
determinar el nmero ms pequeo p que forma parte de alguna de estas
sumas. Por ejemplo: Si n = 33 entonces
f = 4 y p = 3 ya que 3 + 4 + 5 + 6 + 7 + 8 = 10 + 11 + 12 = 16 + 17 = 33.
Entrada: Un nmero entero n en el intervalo de 1 a 1,000,000
(incluyndolos).
Salida: Dos nmero enteros f y p.

Problema 19.- Puntos dentro de un tringulo: Considera un tringulo T
dado por sus tres vrtices (a, b), (c, d) y (e, f) con coordenadas enteras.
Algunos puntos de coordenadas enteras estn sobre los lados de T y otros
puntos de coordenadas enteras estn dentro de T. Escribe un programa que
Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
131







encuentre las cantidades s y t de puntos sobre los lados y dentro de T,
respectivamente.
Por ejemplo, si los vrtices de T tienen las coordenadas (0, 1), (4, 3) y (2, 5)
entonces s = 6 y t = 4 ya que los 6 puntos (0, 1), (2, 2), (4, 3), (3, 4), (2, 5) y
(1, 3) estn sobre los lados de T mientras que los 4 puntos (1, 2), (2, 3), (2,
4) y (3, 3) estn dentro de T.
Entrada: Seis nmeros enteros a, b, c, d, e, f separados por espacios y
todos ellos en el intervalo de -1000 a 1000 (incluyndolos). Puedes suponer
que los tres vrtices de T no estn alineados y por lo tanto forman un
tringulo.
Salida: Dos nmeros enteros s y t separados por un espacio.

Problema 20.- Boletos por besos: Para ir hacia su escuela, Juan aborda
un camin. Cuando Juan sube al camin y deposita las monedas en la
alcanca, el conductor le da un boleto con un nmero de serie consecutivo, el
cual generalmente llega a la basura. Sin embargo, un da l se entera de
algo interesante. Si la suma de los dgitos de dicho boleto es 21, l lo puede
cambiar con quien quiera por un beso. Juan quiere conseguir muchos besos
de la persona que est enamorado y ella ha aceptado drselos a cambio de
dichos boletos, pero no es tan fcil conseguirlos. Juan ha decidido que si el
boleto que le da el conductor no suma 21, esperar hasta que una persona
suba despus de l y sume 21, y le pedir a esta su boleto, para lo cual
debe ir realizando las cuentas a mano, cosa que es muy tediosa. Ayuda a
Juan escribiendo un programa que dado un numero n de 7 dgitos, le
proporcione el numero p de personas que deben abordar despus de el para
que obtenga el boleto deseado y m, donde m representa los 7 dgitos de
dicho boleto. Cuando un tiraje de boletos termina, es decir llega a 9999999,
el conductor toma otro tiraje comenzando nuevamente en el nmero
0000000.
Universidad Nacional de Ingeniera -


Algoritmos y Estructura de Datos 132









Entrada: Un numero entero n de 7 dgitos (que posiblemente comienza con
ceros).
Salida: Un numero entero p y un nmero m de 7 dgitos.

Problema 21.-No te salgas: Una pulga muy especial se encuentra en la
esquina de una mesa y quieres que brinque hasta la esquina contraria de la
misma mesa. Lo especial de la pulga es que se ha aprendido una sucesin
numrica y la usara para determinar cmo brinca. Cada vez que aplaudas, la
pulga decidir si se queda donde esta o si da un brinco cuya longitud est
determinada por el termino correspondiente de la sucesin. Los brincos
siempre sern paralelos a los lados de la mesa y siempre debern alejar a la
pulga de su posicin inicial. Lo ideal es que la pulga logre llegar a la esquina
contraria de la mesa. Sin embargo, basta con que llegue a una posicin tan
cercana como sea posible. Lo que no est permitido es que la pulga salte
hacia afuera de la mesa (le ha costado mucho subir a la mesa como para
que ahora la dejes caer). Ejemplo, si la sucesin de n = 7 saltos de la pulga
fuera s = (3, 1, 4, 1, 5, 9, 2) y la mesa midiera a = 5 por b = 6 entonces la
pulga podra lograr su objetivo si su sucesin de brincos fuera arriba, arriba,
derecha, arriba, nada, nada y derecha. Por otro lado, si su sucesin fuera
arriba, arriba, derecha, nada, nada, nada, nada entonces no llegara a la
esquina contraria pero tampoco se saldra de la mesa.
Entrada: El archivo de texto contendr un rengln con tres enteros n, a y b
separados por espacios seguido de un rengln con n enteros positivos s1,
s2, ..., sn y separados por espacios.
Puedes suponer que todos estos enteros estn en el rango de 1 a 1000,
incluyndolos.
Salida: El archivo de texto nts.sal deber contener un rengln con tres
enteros n, c y d separados por espacios seguido de un rengln con n
enteros positivos t1, t2, ..., tn y separados por espacios. Los valores de c y d
Centro de Extensin y Proyeccin Social (CEPS)


Algoritmos y Estructura de Datos
133







representan la coordenada a la que llega la pulga y para 1 i n, el valor de
ti es 0 si la pulga no dio el salto de longitud si, 1 si lo dio hacia arriba y 2 si lo
dio hacia la derecha.
Evaluacin: 1 punto si los n saltos indicados dejan a la pulga en la
coordenada ( c, d) de la mesa. En ese caso, 9(c2 + d2)/(a2 + b2) puntos
adicionales. El primer ejemplo de salida mostrado abajo obtendra 1 +
9(52+62)/(52+62) = 10 puntos, el segundo ejemplo 1 + 9(42+42)/(52+62) = 4
puntos y el tercer ejemplo 0 puntos porque la pulga se sali de la mesa.

Problema 22.- Disear un programa que permita jugar al Master Mind.
Para ello se escribir el Programa de la siguiente forma:
Generar cuatro valores enteros aleatorios entre 0 y 9 distintos entre s.
Preguntar al usuario por cuatro valores enteros.
Considerando ambas combinaciones, indicar cuntos nmeros comunes
estn en la misma posicin y cuntos valores comunes estn en distinta
posicin. Ejemplo: 3786 y 8760 uno colocado (el 7) y dos descolocados
(8 y 6) . Se terminar el programa cuando el jugador acierte la combinacin
o haya agotado sus intentos (constante MAXINTENTOS con valor 10).

Anda mungkin juga menyukai