Centro de Extensión y Proyección Social (CEPS)
2.- Estructuras Condicionales Son estructuras que permiten dar condición 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
Evalúa la Condición lógica y ejecuta una solo instrucción A o instrucción B. Sintaxis
Pseudocódigo
Diagrama de flujo
Si (
) entonces Inicio Fin Sino Inicio fin
Si la condición es V ejecuta solo , Si la condición es F, ejecuta solo Aplicación 1.- Diseñar un Diagrama de Flujo que calcule el Producto y la
Parte Entera de 2 números m, n enteros. enteros. El programa programa debe solicitar el ingreso de 2 números m, n y luego: a).-Calcula el producto de m por n. Si el numero numero m es mayor mayor n. b).- Calcula la raíz cuadrada si el numero numero m es menor que n. Algoritmos y Estructura de Datos 55
Universidad Nacional de Ingeniería
-
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 gráfica se ilustra el Diagrama de flujo
Ejecución: como el resultado de evaluar la condición es Falso, entonces se
calcula la raíz cuadrada del número número n y envía envía el mensaje de de conformidad
Algoritmos y Estructura de Datos
56
Centro de Extensión y Proyección Social (CEPS)
Problema 2.- Diseñar un Diagrama de Flujo que permita validar datos de un
alumno para ingresar al sistema informático por código =001 y clave = 1010. Si los datos son correctamente ingresados el diagrama permite ingresar 3 prácticas 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” Solución
La condición a validar es Si ( código=001) código=001) y (calve = 1010) entonces Leer 3 prácticas y calcular calcular su Promedio. Sino Imprimir el mensaje “Sr. Alumno, Errores en datos”
Implementación del Diagrama de flujo
Algoritmos y Estructura de Datos 57
Universidad Nacional de Ingeniería
-
Ejecución: 1.- Modulo de validación.- Se debe leer código y clave respectivamente. 2- Modulo de ingreso de notas: como los datos de alumno son correctos
entonces ingresar las 3 prácticas calificadas. Pc1=12, Pc2=10, Pc3=14. El promedio de prácticas, se ilustra en la siguiente gráfica, así como la conformidad
Programa Pseudocódigo
Programa Fuente
Variables pc1, pc2,pc3,cod, clav : entero void main() { int pc1,pc2,pc3,cod,clav; prom: real float promp; 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
Algoritmos y Estructura de Datos
gotoxy(10,3);cout<<"Ingrese codigo = "; cin>>cod; gotoxy(10,4);cout<<"Ingrese gotoxy(10,4);cout<<"Ingres e clave clave = "; cin>>clav; f((cod==001) && (clav==1010)) { gotoxy(10,6);cout<<"pc1";cin>>pc gotoxy(10,6);cout<<"pc1";cin>>pc1; 1; 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 ="<
58
Centro de Extensión y Proyección Social (CEPS)
Estructuras Condicional con Anidamiento Sintaxis Si entonces Inicio fin sino Si entonces Inicio fin sino ------------------
Problema 2.- Diseñar un diagrama de flujo que permita ingresar 3 números
enteros a, b y c. luego el programa programa averiguar si se cumple una una de las tres relaciones y la que se cumple ejecutar su tarea respectiva. Veamos. Relación 1.- Si a = b + c, entones calcular el producto producto de los 3 números Relación 2.- Si b = a + c entones calcular la resta de los 3 números Relación 3.- Si c = a + b entones calcular la suma de los 3 números Si ninguna relación se cumple, emitir un mensaje: ‘ Sr. No existe relación ’
Solución.
Algoritmos y Estructura de Datos 59
Universidad Nacional de Ingeniería
-
los números números a = 6, b = 4 y c = 10. La relación que se Ejecución.- Sean los cumple es la relación 3, entones entones el resultado será: m = a + b + c = 20. Los resultados se ilustran en la siguiente gráfica y su confirmación respectiva.
Programa Pseudocódigo
variables a,b,c, prod,res,suman:entero Inicio Imprimir (Ingrese 3 números= “), 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 relación”)
fin
Programa Fuente
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 gotoxy(10,5);cout<<"Ingrese c = "; cin>>c; if(a==b+c) { prod=a*b*c; gotoxy(10,17);cout<<"Producto="<
gotoxy(10,3);cout<<"Ingrese ncodigo = "; cin>>ncodigo;
gotoxy(10,4);cout<<"Ingrese gotoxy(10,4);cout<<"Ingre se nclave = "; cin>>nclave; if((ncodigo==10) && (nclave==12)) {clrscr(); Suma_codigo=ncodigo+ nclave; gotoxy(10,7);cout<<" LA SUMA ES = "<
Algoritmos y Estructura de Datos
62
Centro de Extensión y Proyección Social (CEPS)
Diseño del Diagrama de Flujo
Ejecución.- Si usa sus primeros datos y este comete error, entonces le
solicita los segundos datos y a estos los acumula. Ver la siguiente gráfica.
A continuación, se describen más ejemplos, primero se desarrollan programas pseudocódigo y en la siguiente sección se ilustra los Diagramas de Flujo de Datos.
Algoritmos y Estructura de Datos 63
Universidad Nacional de Ingeniería
-
Aplicación 5.- Diseñar un programa que permita determinar si un entero A
es divisible por otro B. Solución
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 Aplicación 6.- Diseñar un programa para que calcule e imprima los valores
de las raíces reales de una ecuación de segundo grado: Ax^2+Bx+C=0 Se debe ingresar los coeficientes de la ecuación A, B y C. Solución
Variables a, b, c: enteros
raíz : reales
Inicio imprimir ( “Ingrese el Coeficiente A:”),
Leer( a)
imprimir ( “Ingrese el Coeficiente Coeficiente B:”), Leer (b) imprimir ( “Ingrese el Coeficiente Coeficiente C:”), Leer (c)
raíz
(ver formulas en Diagrama de Flujo)
imprimir ( “El valor de la raíz es:”, raíz)
Fin Algoritmos y Estructura de Datos
64
Centro de Extensión y Proyección Social (CEPS)
Aplicación 7.- La tasa de interés sobre un préstamo es de 8% si la cantidad
es menor o igual que S/. 200, pero es de 6% si excede a 200. 200. Hacer un programa para que ingrese la cantidad y reporte el interés y el monto total. Solución
Variables inte, monto, montoa: reales Inicio imprimir ( “Ingrese el Préstamo:” ), 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 interés es:”, inte) imprimir ( “El monto actual es:”, montoa)
Fin
Algoritmos y Estructura de Datos 65
Universidad Nacional de Ingeniería
-
Implementacion en Borland c++ 5.02
void main() { float inte, monto, montoa; gotoxy(10,3);cout<<"Ingrese gotoxy(10,3);cout<<"Ingre se el Préstamo:" ; 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 interés es ="<
Algoritmos y Estructura de Datos
66
Centro de Extensión y Proyección Social (CEPS)
Aplicación 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. Solución
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 Aplicación 9.- La comisión de las ventas totales es como sigue:
a) Si ventas < S/. 80, entonces no hay comisión b) Si S/. 80 <= ventas <= S/. 600 entonces la comisión es igual al 12% de las ventas c) Si ventas > 600 entonces la comisión es igual al 15% de las ventas Hacer un programa para que se ingrese i ngrese las ventas y se reporte la comisión. Solución
Variables ven, comisión: reales Algoritmos y Estructura de Datos 67
Universidad Nacional de Ingeniería
-
Inicio imprimir ( “Ingrese el monto de la venta:”),Leer (ven)
Si (ven < 80) entonces comisión
0
Sino Si (ven>=80 y ven<=600) entonces comisión ven*0.12 Sino Si (ven > 600) entonces comisión ven*0.15 imprimir ( “La comisión es: ”, comisión) Fin Aplicación 10.- Hacer un programa para calcular el peso semanal de un
trabajador. Se debe ingresar el nombre, pago, por hora y el número 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. Solución
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 número 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 Algoritmos y Estructura de Datos
68
Centro de Extensión y Proyección Social (CEPS)
Aplicación 11.- Se repartirá la herencia entre los hijos de un señor como
sigue: Si la cantidad de hijos es menor que 4; se repartirá exactamente entre el número de hijos; si son 4 o más hijos, la mitad le tocara al hermano mayor y el resto se dividirá entre los demás hermanos. Hacer un programa para que reporte cuanto le corresponde a cada hijo. Se debe ingresar la herencia y el número de hijos. Solución
Variables herencia, nh, mh, mhm: enteros Inicio imprimir ( “Ingrese el monto de la herencia:”),Leer (herencia) imprimir ( “Ingrese el número 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 mh
herencia/2 mhm/(nh-1)
imprimir ( “El monto para el hermano mayor es de:”,
mhm) imprimir ( “El monto para los demás hijos es de:”, de:”, mh)
Fin Fin Aplicación 12.- Una empresa comercial desea hacer un programa para
calcular el precio neto neto de un artículo de acuerdo acuerdo a lo siguiente: 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% 60% Se debe ingresar el precio del artículo, el código de venta (c) contado, (b) plazos y si la venta es a plazos se debe ingresar el tiempo de pago.
Algoritmos y Estructura de Datos 69
Universidad Nacional de Ingeniería
-
Solución
Variables pr, pn, des: reales co
: carácter
tiempo: entero
Inicio imprimir ( “Ingrese el precio del artículo:”), Leer( pr) imprimir ( “Ingrese el código de venta:”), Leer (co) Si (co=’c’) entonces
inicio des fin
pr*0.40,
pn
pr-des
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 Aplicación 13.- En un triángulo se cumple lo siguiente:
s>0, s>b, s>c ,donde s: semiperimetro a, b, c: Lados Lados del triangulo Hacer un programa para que se ingresen los valores de los del triángulo de los lados del triángulo y si estos valores cumplen las condiciones calcular el área del triángulo en caso contrario reportar DATOS INCORRECTOS AREA=(S(S-A)(S-B)(S-C))^0.5 Solución
Variables s, a, b, c: enteros Área: real Algoritmos y Estructura de Datos
70
Centro de Extensión y Proyección Social (CEPS)
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 triángulo:”), 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 triángulo es: ”, área) Sino imprimir ( “DATOS INCORRECTOS”)
Fin Aplicación 14.- Calcular el valor de la función de acuerdo a lo siguiente:
Y=x^2+5 Si x<=0 Y=3x-1 Si 0=2 Solución
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 Algoritmos y Estructura de Datos 71
Universidad Nacional de Ingeniería
-
Aplicación 15.- Los empleados de una fábrica 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 día de la semana. Solución
Variables: turno, días: cadena,
td, tn, cd, ht; enteros, pago: real
Inicio imprimir ( “Ingrese el turno:”),Leer (turno) imprimir ( “Ingrese el día:”), Leer (días) Leer (ht) imprimir ( “Ingrese el número de horas trabajadas:” ); Leer Si (turno=”diurno”) entonces
inicio Si (días<>”domingo”) entonces pago
ht*1.5
fin Sino Si (días=”domingo”) entonces pago
ht*(1.5+1)
Sino Si (turno=”nocturno”) entonces
Si (días<>”domingo”) pago
ht*2.25
Sino Si (días=”domingo”) entonces pago ht*(2.25+1.25) Fin imprimir ( “El pago diario es de:”, pago) Fin Algoritmos y Estructura de Datos
72
Centro de Extensión y Proyección Social (CEPS)
A continuación se implementan i mplementan estos programas pseudocódigo en Dfd. Se deja constancia que las formulas en muchos diagramas se muestran una
parte,
pero
estas
se
encuentran
en
su
correspondiente
pseudocódigo . Diagrama de Flujo de Datos
Para didáctica, se ha redactar el enunciado de los problemas Aplicación 5.-Escriba un programa para determinar si un entero A es
divisible por otro B.
Algoritmos y Estructura de Datos 73
Universidad Nacional de Ingeniería
-
Aplicación 6.- Hacer un programa para que calcule e imprima los valores
de las raíces reales de una ecuación de segundo grado:
Algoritmos y Estructura de Datos
74
Centro de Extensión y Proyección Social (CEPS)
Aplicación 7.- La tasa de interés sobre un préstamo es de 8% si la cantidad
es menor o igual igual que S/. 200, pero es de 6% si excede a 200. Hacer un programa para que ingrese la cantidad y reporte el interés y el monto total.
Algoritmos y Estructura de Datos 75
Universidad Nacional de Ingeniería
-
Aplicación 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
Algoritmos y Estructura de Datos
76
Centro de Extensión y Proyección Social (CEPS)
Aplicación 9.-La comisión de las ventas totales es como sigue:
a) Si ventas < S/. 80, entonces no hay comisión b) Si S/. 80 <= ventas <= S/. 600 entonces la comisión es igual al 12% de las ventas c) Si ventas > 600 entonces la comisión es igual al 15% de las ventas Hacer un programa para que se ingrese las ventas y se reporte la comisión.
Algoritmos y Estructura de Datos 77
Universidad Nacional de Ingeniería
-
Aplicación 10.-Hacer un programa para calcular el pago semanal de un
trabajador. Se debe ingresar el nombre, pago por hora y el número 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.
Algoritmos y Estructura de Datos
78
Centro de Extensión y Proyección Social (CEPS)
Aplicación 11.-Se repartirá la herencia entre los hijos de un señor como
sigue: Si la cantidad de hijos es menor que 4; se repartirá exactamente entre el número de hijos; si son 4 o más hijos, la mitad le tocara al hermano mayor y el resto se dividirá entre los demás hermanos. Hacer un programa para que reporte cuanto le corresponde a cada hijo. Se debe ingresar la herencia y el número de hijos.
Aplicación 12.- Una empresa comercial desea hacer un programa para
calcular el precio neto de un artículo de acuerdo a lo siguiente: Algoritmos y Estructura de Datos 79
Universidad Nacional de Ingeniería
-
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 artículo, el código de venta (c) contado, (b) plazos y si la venta es a plazos se debe ingresar el tiempo de pago.
Algoritmos y Estructura de Datos
80
Centro de Extensión y Proyección Social (CEPS)
triángulo se cumple lo siguiente: siguiente: s>0, s>b, s>c ,donde ,donde Aplicación 13.-En un triángulo s: semiperimetro a, b, c: Lados del triángulo. Hacer un un programa para que se ingresen los valores de los del triángulo de los lados del triángulo y si estos valores cumplen las condiciones calcular el área del triángulo en caso contrario reportar DATOS INCORRECTOS. AREA=(S(S-A)(S-B)(S-C))^0.5
Algoritmos y Estructura de Datos 81
Universidad Nacional de Ingeniería
-
Aplicación 14.- Calcular el valor de la función de acuerdo a las siguientes
condiciones: Y=x^2+5
Si x<=0
Y=3x-1
Si 0
Y=x^2-4x+5 Si x>=2
Algoritmos y Estructura de Datos
82
Centro de Extensión y Proyección Social (CEPS)
Aplicación 15.- Los empleados de una fábrica 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 día de la semana.
Algoritmos y Estructura de Datos 83
Universidad Nacional de Ingeniería
-
3.- Estructuras de Control Repetitivas Permiten ejecutar sentencias hasta satisfacer una condición Lógica. Repetitiva con Entrada Controlada: Mientras
Realiza 0,1 2,.., o más tareas. Sintaxis
Aplicación 1.- Diseñar un diagrama de flujo que permita calcular la suma
acumulada de la serie: 1+2+3+4+5. Solución.
a).- Se define un contador (cont) para que incremente elementos a sumar y un acumulador (acum) que vaya acumulando los valores según como avance el contador. b).- La condición de terminación 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 Pseudocódigo.
Algoritmos y Estructura de Datos
84
Centro de Extensión y Proyección Social (CEPS)
Programa Pseudocódigo Pseudocódigo
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.
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 = "<
Diagrama de Flujo de datos
Ejecución.-
Los resultados se ilustran en la siguiente gráfica y su confirmación respectiva.
Algoritmos y Estructura de Datos 85
Universidad Nacional de Ingeniería
-
Aplicación 2.- Diseñar 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.. Solución.
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 según como avance el contador. b).- La condición de terminación está controlado por: Cont_I <= Lado_d , ambos deben leerse desde el teclado c).- Se debe inicializar el acumulador en en 0 Programa Pseudocódigo.
Programa Fuente
void main()
Inicio
{ int ldi,ldd,acum=0;
Imprimir(‘ Ingrese lado izquierdo “),
gotoxy(10,3);cout<<"Bienvenidos";
leer(ldi);
gotoxy(10,5);cout<<"Lado
Imprimir(‘ Ingrese lado derecho “);l
Izquierdo";cin>>ldi;
eer(ldd)
gotoxy(10,6);cout<<"Lado
acum
0
Derrecho";cin>>ldd; while(ldi<=ldd)
Mientras (Cont_I<=Lado_d) hacer
{ acum= acum+ldi;
Inicio Acum
acum.+ Cont_I
Cont_I
Con t_I+ 1
Fin
ldi++; } gotoxy(10,8); cout<<"Suma de "<
Imprimir (‘La suma es =: ’,Acum)
Fin
Algoritmos y Estructura de Datos
}
86
Centro de Extensión y Proyección Social (CEPS)
Ahora se diseña el Diagrama de Flujo
Ejecución.-
usando Cont_I=3 y Lado_d=5 , el resultado debe
ser: 3+4+5=12. Los resultados se ilustran en las siguientes gráficas y su confirmación.
Algoritmos y Estructura de Datos 87
Universidad Nacional de Ingeniería
-
Aplicación 3.- Diseñar 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. Solución. El programa solicita un dato, verifica si es diferente de cero,
entonces acumula; se genera bucles hasta editar 0.
Ejecución .- ingrese los números: 11,15 y 14 , los resultados se ilustran a
continuación,
Algoritmos y Estructura de Datos
88
Centro de Extensión y Proyección Social (CEPS)
Programa Pseudocódigo
void main()
variables m,acum
Programa Fuente
0 : enteros
{ int n,acum=0;
Inicio
gotoxy(10,3);cout<<"Bienvenidos";
imprimir(“Ingrese datos= ”);
gotoxy(10,5);cout<<"Dato = ";cin>>n; while(n!=0)
leer(n)
{acum= acum+n; mientras(n!=0) hacer
";cin>>n;
inicio acum
gotoxy(10,5);cout<<"Dato gotoxy(10,5);cout<<"Dato =
acum+n
imprimir(“Ingrese datos= ”);
leer(n) fin
} gotoxy(10,8); cout<<"Suma = "<
imprimir(“Suma es = ”,acum)
fin Aplicación 4.- Diseñar 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 código solo de 3 dígitos, 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. Desaprobado. Solución. El programa solicita
Interface para ingresar Número de cursos y número de alumnos por curso.
Interface donde donde se ingresa o de alumnos
Algoritmos y Estructura de Datos 89
Universidad Nacional de Ingeniería
-
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= ”);
Alumno No.: ",i," .- "); imprimir(“ Alumno 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; Algoritmos y Estructura de Datos
90
Centro de Extensión y Proyección Social (CEPS)
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 APROBADO); 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
Algoritmos y Estructura de Datos 91
Universidad Nacional de Ingeniería
-
Implementación 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.:"<>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 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 gotoxy(55,13);cout<<"Men or ="<
92
Centro de Extensión y Proyección Social (CEPS)
float pp=((pc1+pc2+pc3)-menorp)/2; gotoxy(25,16);cout<<"Promedio gotoxy(25,16);cout<<"Promedi o = "<10) {gotoxy(45,16);cout<<"APROBADO"; {gotoxy(45,16);cout<<"APRO BADO"; getche(); } else {gotoxy(45,16);cout<<"DESAPROBADO"; {gotoxy(45,16);cout<<"DESA PROBADO"; 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 "<
Algoritmos y Estructura de Datos 93
Universidad Nacional de Ingeniería
-
Aplicación 5.- Diseñar un programa que permita leer un numero entero
formado por dos 0 mas dígitos, luego mostrar: Numero invertido, total de dígitos pares, e impares , secuencia de dígitos pares e impares Solución. 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
Algoritmos y Estructura de Datos
94
Centro de Extensión y Proyección Social (CEPS)
Implementación 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); secpar=secpar+d*pow(10,nr); nr++; } else { imp++; secimpar=secimpar+d* secimpar=secimpar+d*pow(10,nnr); pow(10,nnr); nnr++; } inv=inv*10+d; n=n/10; } gotoxy(20,7);cout<<"Numero gotoxy(20,7);cout<<"Numero invertido= "<
Algoritmos y Estructura de Datos 95
Universidad Nacional de Ingeniería
-
Estructura de Control con número de instrucciones conocidas
desde Vc <-- Vi hasta Vf Hacer Inicio Fin Se ejecuta una serie de instrucciones hasta que vi=vf
Observación: Se debe cumplir que Vi <= Vf Aplicación 1.- Diseñar un programa pseudocódigo y diagrama de flujo que
permita leer el número de términos de la serie 1+2+3+4+5+…….+n y luego calcular la suma acumulada. Solución.
a).- Se define un contador (cont) como variable de control y n el número de términos a ingresar. Para
sumar se define la variable Acum que va
acumulando los valores según como avance el contador. b).- La condición de terminación 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.
Algoritmos y Estructura de Datos
96
Centro de Extensión y Proyección Social (CEPS)
Programa Pseudocódigo
Programa Fuente
Inicio Imprimir(‘ Ingrese Número de Términos :’),
leer(n) Acum.=0 dese cont 1 Hasta n hacer Inicio Acum
acum.+ cont
Fin Imprimir (‘La suma es =’, =’, Acum)
Fin.
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 ="<
Diagrama de Flujo
Algoritmos y Estructura de Datos 97
Universidad Nacional de Ingeniería
-
Ejecución.- Ingresando número de elementos: n=6
Acum: 1+2+3+4+5+6 = 21 En la siguiente gráfica, se ilustra los procedimientos de ejecución. Lectura y Proceso:
Al ejecutar, el programa le solicita que ingrese ingrese el número de elementos de de la serie a sumar, para nuestro caso ingrese 6.
Aplicación 2.- Diseñar un diagrama de flujo que permita leer n datos de tipo
entero y luego genere un reporte r eporte que muestre el número mayor. Solución. Se definen las siguientes variables:
n : para leer el número de elementos. Dato : para lectura de los elementos Máximo : para almacenar el número 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 comparar dos datos y si es verdadera verdadera la respuesta asigne o
cargue el dato la variable máximo. Finalmente se imprime la variable máxima.
Algoritmos y Estructura de Datos
98
Centro de Extensión y Proyección Social (CEPS)
Diagrama de flujo de datos
Algoritmos y Estructura de Datos 99
Universidad Nacional de Ingeniería
-
Ejecución:
Aplicación 3.- Diseñar un diagrama de flujo que permita conocer el número
total de puntos que se encuentran en el interior de la elipse: X*x/16 + y*y / 9=1 Solución.
Se definen las siguientes variables: Punto : para contar el total de puntos (x,y) Radio: para verificar la condición: 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 las ordenadas (puntos (puntos en el eje y). A continuación se ilustra el diagrama diagrama de flujo.
Algoritmos y Estructura de Datos
100
Centro de Extensión y Proyección Social (CEPS)
Ejecución: La ejecución del diagrama genera el reporte punto por punto,
tal como se ilustra en la siguiente gráfica.
Algoritmos y Estructura de Datos 101
Universidad Nacional de Ingeniería
-
Implementado en el lenguaje de programación Borland C ++ 5.0
Algoritmos y Estructura de Datos
102
Centro de Extensión y Proyección Social (CEPS)
Problemas resueltos usando técnica de Pseudocódigo Aplicación1.--Diseñar un programa que permita
calcular en forma
independiente la suma de los números pares pares e impares en el rango de 1 a 50. Programa Pseudocódigo
Programa DFD
Variable n, sp=0, si=0,a,i=1: enteros Inicio imprimir (“Ingrese total de
números”), 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 de pares es:”,sp) imprimir ( “ La suma de impares es:”,si)
Fin Algoritmos y Estructura de Datos 103
Universidad Nacional de Ingeniería
-
Aplicación 2.- Calcular y visualizar la suma y el producto de los números
impares comprendidos entre 20 y 80. Solución Programa Pseudocódigo
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.
Algoritmos y Estructura de Datos
104
Centro de Extensión y Proyección Social (CEPS)
Aplicación 3.- Diseñar un programa que permita leer n números enteros y
obtener el promedio de los positivos y el promedio de los negativos. Solución
Programa Pseudocódigo
Programa DFD
Variables n, l 1,número, cp cn 0, sp 0, sn enteros pp,pn:real Inicio
0, 0:
imprimir ( Ingrese total ”), Leer (n) Mientras (l<=n) inicio imprimir (“Ingrese Número:”),
Leer(número) Si (número>0) entonces inicio sp
sp+número
cp
cp+1
fin Sino inicio sn cn fin l
sn+número cn+1 l+1
fin pp pn
sp/cp sn/cn imprimir ( “El promedio de los positivos es:”, pp) imprimir ( “El promedio de los negativos es:”, pn)
Fin
Algoritmos y Estructura de Datos 105
Universidad Nacional de Ingeniería
-
Aplicación 4.- Calcular la suma de los cuadrados de los 15 primeros
números naturales. Solución
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 Aplicación 5.- Diseñar un programa
que permita ingresar n números y luego calcular el promedio de ellos. Solución
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 fin promedio
l+1 suma/cantidad
imprimir(“Promedio= :”, promedio)
Fin
Algoritmos y Estructura de Datos
106
Centro de Extensión y Proyección Social (CEPS)
6.- Diseñar
Aplicación
un programa que permita Ingresar números
enteros, visualizar la suma de los números pares de la lista, cuantos números pares existen y cual es la medio de los números impares. Solución
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
Algoritmos y Estructura de Datos 107
Universidad Nacional de Ingeniería
-
Aplicación 7.- Diseñar un programa que permita leer un numero
entero,positivo formado por do o mas cifras, luego mostrarlo en forma invertida, secuencia de números pares y secuencia de números 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 nr
secpar+d*pow(10,nr)
nr+1
sin inicio secimp secimp+d*pow(10,nnr) nnr nnr+1 fin fin Fin Sino Imprimr(“Error, hasta luego ..”)
fin Fin
Algoritmos y Estructura de Datos
108
Centro de Extensión y Proyección Social (CEPS)
Diagrama de flujo de datos
.
Algoritmos y Estructura de Datos 109
Universidad Nacional de Ingeniería
-
Compendio de problemas en Pseudocódigo: Se mostrara problemas resueltos en pseudocódigo e implementados en el software libre
PSeInt.
En las siguientes siguientes pantallas se ilustra ilustra su instalación.
Algoritmos y Estructura de Datos
110
Centro de Extensión y Proyección Social (CEPS)
En la siguiente figura se ilustra la técnica para implementar un Programa Pseudocódigo en el ordenado, veamos: 1.- Primero.-
SEn el editor del programa
PSeInt se
edita las
instrucciones del pseudocódigo y luego se ejecuta usando el botón que permite generar el reporte respectivo r espectivo 2.- Segundo.- El programa Pseudocódigo se expresa en un Diagrama de
flujo de datos usando el botón
.
Algoritmos y Estructura de Datos 111
Universidad Nacional de Ingeniería
-
Aplicación 1- Diseñar un programa que permita implementar un
Juego
simple y que pide al usuario que adivine un numero en 10 intentos, cuando este ingresa números. 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
Algoritmos y Estructura de Datos
112
Centro de Extensión y Proyección Social (CEPS)
Aplicación 2.- Diseñar un programa que permita leer un número y luego
factorizarlo y mostrar sus elementos. Solución
Variables
Factoriza, factor_primo: boleano.
n,div: enteros
Inicio imprimir("Ingrese numero = ");Leer( ");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 factor_primo
n/div;
verdad
Fin Fin FIN Algoritmos y Estructura de Datos 113
Universidad Nacional de Ingeniería
Algoritmos y Estructura de Datos
-
114
Centro de Extensión y Proyección Social (CEPS)
Aplicación 3.- Diseñar un programa que
permita leer n números enteros definidos por usuario, luego calcular el promedio de los n números ingresaos Solución
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 Aplicación 4.- Resolver problema 3,
usando
estructura
repetitivas
MIENTRAS Solución
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), leer(dato), Fin imprimir("Suma =", sumaac ), Fin Algoritmos y Estructura de Datos 115
Universidad Nacional de Ingeniería
-
COMPENDIO DE PROBLEMAS Problema 1.- Diseñar un programa que permita a un usuario leer un NUMERO entero positivo compuesto como mínimo 6 y máximo 8 dígitos,
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 dígitos repetidos, la secuencia que forma y la suma de este cuando el usuario ingresa un digito a buscar, Total de dígitos no repetidos, su secuencia y su suma respectiva. Asimismo de la secuencia no repetida mostrar la secuencia formada por solo números pares así como de los impares, (Ver Figura, parte de RESULTADOS)
Problema 2.-Diseñe 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 la suma y luego el elemento hasta donde se debe sumar . Se Algoritmos y Estructura de Datos
116
Centro de Extensión y Proyección Social (CEPS)
debe validar que el primer pr imer elemento sea estrictamente menor o igual al segundo elemento. 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 según resultado 1) 2.5.-Secuencia de cifras Pares según 1) 2.6.-Suma de cifras Pares según 5) 2.7.-Total de cifras ImPares según resultado 2.1) 2.8.-Secuencia de cifras ImPares según 1) 2.9.-Suma de cifras Impares según 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.-Diseñar un programa que permita a un usuario validar sus
datos de entrada por Clave=”Perú” y código=”100P”, si los datos de entrada son correctos el sistema envía el mensaje “ Procesando Edades de Población en el Perú ”, solicitando inmediatamente que ingrese Numero de Departamentos(Solo
en el rango 1..30 ), por cada
Departamento debe ingresar Número 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): Algoritmos y Estructura de Datos 117
Universidad Nacional de Ingeniería
-
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 después de cada consulta debe preguntar “Sr. “Sr. Desea hacer una siguiente consulta..?(S/N)==> consulta..?(S/N)==> ”. Si el usuario ingrese datos incorrectos, entonces el programa indica el número de error así como el número de intentos que le queda. Si el número de errores es mayor que 3, el programa finaliza enviando el mensaje “Debido a errores, Hasta luego…” Problema 4.- Diseñar un programa que permita a un usuario validar sus
datos de entrada por código=”tcn”, si los datos de entrada son correctos el sistema envía el mensaje “ Bienvenidos así así como el número de consulta y la fecha respectiva ”, luego solicita
que ingrese un numero entero
comprendido en el rango rango 1..99, este número permite calcular calcular el factorial y con su resultado se se debe mostrar el número total de dígitos, el número de dígitos nulos y dígitos 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 solicita que ingrese el código de validación mostrando mostrando el número de Consultas a la fecha(Este número es diferente al total de errores que cometa el usuario en su validación de
Algoritmos y Estructura de Datos
118
Centro de Extensión y Proyección Social (CEPS)
código). Asimismo, si el usuario no desea continuar, el sistema envía el mensaje de agradecimientos mostrando el número total de consultas. Ahora si el dato de validación es incorrecto (recuerde que solo solo se dispone de 3 alternativas), superado este número el sistema envía el mensaje “ FIN DE SESION, PUES SUPERO MAS DE INTENTENTOS " PROCEDIMIENTOS
4.1.- Primera ejecución 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 número, para lo cual debe validando su código”TCN” (observe que el valor esta en letras mayúsculas) Asimismo le
indica el Numero de consulta y la fecha correspondiente. En esta interface, e l usuario ingresa su código=”tc”, código que es incorrecto. Ante este error el sistema envía el mensaje de error y el número de oportunidades que quedan, tal como como se ilustra en la figura. 4.2.- La siguiente interface ilustra el error numero 2 cometido por el usuario al ingresar un código=”3tcn”, código que no está registrado en el sistema.
Se deja constancia que el número de consultas no cambia, pero si el contador de errores, como máximo 3.
Algoritmos y Estructura de Datos 119
Universidad Nacional de Ingeniería
-
4.3.- En la siguiente interface, el usuario ingresa correctamente su código ”tcn” (observe que está en letras minúsculas )
4.4.- A consecuencia consecuencia del del paso 3, el sistema envía envía el mensaje de Bienvenida y el número de errores ( 2) en este caso .
4.5.- A continuación, continuación, el sistema solicita solicita que ingrese un numero SOLO en el rango 1..99 (se debe validar descartando los negativos y los números mayores a 99). En esta interface se calcula el factorial del número ingresado y otros resultados (total de dígitos, total de dígitos nulos, total de dígitos 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 actuales (4) y la fecha, tal como se ilustra en mostrando el número de Consultas actuales
la siguiente interface.
Algoritmos y Estructura de Datos
120
Centro de Extensión y Proyección Social (CEPS)
4.6.- El usuario después en su consulta número 4, ingresa el número 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.-Diseñar un programa que
permite leer 2 números enteros y luego genere un reporte que permita visualizar tales números en forma intercambiada, tal como se ilustra en la siguiente interface. Algoritmos y Estructura de Datos 121
Universidad Nacional de Ingeniería
-
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 prácticas calificadas con notas solo en el rango de 0..20 y luego se calcula su promedio de prácticas (pp) eliminando la práctica con menor nota.
Para que el alumno tenga derecho a rendir Exámenes Exámenes Parcial (exp.) y Final (exf.), (exf.), el promedio de prácticas debe ser mayor mayor que 6,6. En otro caso ‘El ‘El alumno esta desaprobado en el ciclo
El promedio final (pf.) se calcula calcula mediante: pf= (pp+exp+exf). Si pf >10 >10 entonces ‘Alumno ‘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’, Aprobado’, en otro caso ‘Alumno ‘ Alumno Desaprobado’. Algoritmos y Estructura de Datos
122
Centro de Extensión y Proyección Social (CEPS)
Problema 7.-Diseñar un Programa que permita al usuario ingresar n
empleados(n<=100), a continuación por cada empleado ingresar su sueldo respectivo. El programa debe generar reportes para conocer: a).- Suma acumulada de sueldo de empleados 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 día bajo las siguientes condiciones: condiciones: a) Si ventas < S/. 80, entonces no hay comisión b) Si ventas está en en el rango de : 80..600 entonces la comisión es igual igual al 12% c) Si ventas está en el rango de: de: 601..1000 entonces la comisión comisión es igual al 15% Diseñar un programa que permita leer nombre de empleado, nombre de producto y
el total respectivo, respectivo, luego hacer un reporte de la comisión. comisión.
También si las ventas no satisfacen la Condición a), enviar el mensaje “ Sr. ..Sus ventas No ameritan comisión”. Si las ventas ventas exceden exceden la condición condición c), envía el mensaje “ Felicitaciones, será ascendido.. ascendido.. ”
Algoritmos y Estructura de Datos 123
Universidad Nacional de Ingeniería
Problema 9.-Diseñe
-
un programa que
permita validar datos de usuario para ingresar al sistema de consultas, donde el usuario se identifica por código=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: Formar intervalo: se trata de formar un
intervalo I:[a,b], donde a
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. Algoritmos y Estructura de Datos
124
Centro de Extensión y Proyección Social (CEPS)
Mayor de 3 Numeros : El usuario ingresa 3 numeros enteros positivos
y luego el sistema muestra muestra el mayor respectivamente, respectivamente, ademas ademas indicando si es numero Par o Impar 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 capicúa (en
matemáticas, número palíndromo) se refiere a cualquier número que se lee igual de izquierda a derecha y de derecha a izquierda (Ejemplos: 121 ) El término se origina en la expresión catalana capicua (cabeza y cola). Definición.- Un número palindrómico es un número simétrico escrito en cualquier base a tal que a1a2a3…|… a3a2a1. Todos los números de base 10 con un dígito {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} son palindrómicos.
Existen nueve números palindrómicos de dos dígitos: {11, 22, 33, 44, 55, 66, 77, 88, 99}.
Noventa de tres dígitos: {101, 111, 121,…, 181, 191, 202, 212,…, 292, 303, 313,…, 898, 909, 919, 929,…, 979, 989, 999}
Noventa con cuatro dígitos: {1001, 1111, 1221, 1331, 1441, 1551, 1661, 1771, 1881, 1991,…, 9009, 9119, 9229, 9339, 9449, 9559,
9669, 9779, 9889, 9999},
Novecientos de cinco dígitos: {10001, 11011, 11111, 11211, 11311, 11411, 11511,…,}
Un pequeño truco para hallarlos sería sumar un número con otro en el que “le damos la vuelta” a sus cifras. Por ejemplo a mí me encanta el número 17, y para buscar un número capicúa a partir del 17 lo que
tengo que hacer es: 17+71=88 (capicúa).
Ejemplo: partimos del número 96:
Algoritmos y Estructura de Datos 125
Universidad Nacional de Ingeniería
-
96 + 69 = 165; 165 + 561 = 726; 726 + 627 = 1353; 1353 + 3531 = 4884
Salir: Permite finalizar con el sistema
Si el usuario ingresa una letra que no corresponde a las opciones, opciones, el sistema envía el mensaje “Opción “ Opción no disponible” disponible” y finaliza.
programa que permita permita Leer o ingresar ingresar Edades de n Problema 10.-Diseñar un programa alumnos(n es definido por usuario) y luego mostrar la Menor edad y la posición 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 Nombre Nombre
Ana Ana
Luís Luís
Pedro Pedro
Edades
30
15
28
posició
1
2
3
El programa debe ser Interactivo, es decir; después de finalizar con el ingreso de los datos, el sistema envía el mensaje de “Desea continuar…(S/N)”. Debe validar la
edición solo de S o N. por cada error debe mostrar el mensaje Ingrese “ nueva letra, error # “. Cuando edita S, continúa con la
lectura de nuevos datos y si edita N, el programa finaliza indicando el número de consultas realizadas. 10.- Diseñar 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 dígito, el sistema confirma que dato es un DÍGITO y luego solicita que ingrese ingrese un número Algoritmos y Estructura de Datos
126
Centro de Extensión y Proyección Social (CEPS)
entero mayor o igual a 10 y menor que 10000. Luego Luego puede ocurrir que: que: I.- Si el número es par, entonces el programa debe realizar las siguientes tareas: a).-Mostrar el numero en forma invertida b).-Conocer el número total de dígitos. c).-Conocer el número total de dígitos pares. (Ver figura.) d) Conocer el número total de dígitos impares (ver figura.) II.- Si el número es impar, entonces el sistema confirma que el dato es un DÍGITO y luego el programa debe calcular y mostrar el factorial del último digito. Ahora, si el usuario ingresa una letra, el sistema confirma 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 posición del carácter, formar la secuencia respectiva. Ver figura que permita leer un un numero entero n, n, Problema 11.- Diseñar un Programa que en Base Decimal y devuelve su equivalente en el Sistema Binario. En la siguiente interface se ilustra el ejemplo.
Problema 12.- Diseñar un Programa que
permita leer un numero numero entero entero n(n>1) en Base Binaria y
devuelve el numero
expresado en base Decimal. En la siguiente interface se ilustra el ejemplo
Algoritmos y Estructura de Datos 127
Universidad Nacional de Ingeniería
Problema 13.-
-
Algunos números enteros se pueden pueden representar como
suma de dos enteros al cuadrado, por ejemplo 50 = 1 2 + 72 = 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 a2 + b2 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 máximo p y el
valor mínimo q que toma la función f(x) = ( ax + b)/(cx + d) en los enteros que se encuentran en el intervalo dado por m y n (incluyéndolos). Observa que es posible que la función no este definida en todos los puntos de ese intervalo. Además, 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 números enteros a, b, c, d, m, n (con m ≤ n) separados por
espacios y todos ellos en el intervalo de -1000 a 1000 (incluyéndolos). Puedes suponer que el intervalo m ≤ x ≤ n contiene al menos un entero x en el cual la función f( x) está definida (y por lo tanto el máximo y el mínimo existen). Salida: Dos números enteros r , s, separados por espacios.
Algoritmos y Estructura de Datos
128
Centro de Extensión y Proyección Social (CEPS)
Problema 15.-Euclides y Euler: Dados dos enteros positivos p y q, su
máximo común divisor es el entero positivo más grande que los divide a ambos exactamente y se puede calcular con el algoritmo de Euclides (el cual puedes investigar cómo funciona casi en cualquier lugar). Si el máximo común divisor de p y q es igual a 1, entonces se dice que p y q son primos relativos. La función 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 máximo valor m que toma la función j( n) de entre todos los enteros n en el intervalo de p a q, además 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) j(8) = 4, j(9) = 6 y j(10) = 4 por lo que m = 6 y n = 7. Entrada: Dos números enteros p y q tales que 1 ≤ p ≤ q ≤ 1,000,000. Salida: Un numero entero m y un número entero n. Problema 16.- Números menores que dos mil: Imagine que tiene una
lista de números 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 números enteros (todos ellos menores que dos mil) agrupando los dígitos tanto como sea posible desde el principio de la cadena. En nuestro caso, obtendrá la lista 314, 1592, 65 con p = 3 elementos. Después Algoritmos y Estructura de Datos 129
Universidad Nacional de Ingeniería
-
usted realiza la misma operación 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 dígitos encuentre cuantos elementos p y f contienen cada una de las listas. Entrada: Una cadena s que contiene entre 1 y 1000 dígitos. Salida: Dos números 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 - 12 = 82 - 72. 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 a2 - b2 donde a ≥ b ≥ 0. Entrada: Un número entero n tal que 0 ≤ n ≤ 1,000,000. Salida: Un número entero t.
S umas de números númer os cons co ns ecutiv ecu tivos os Problema 18.- S
Escribe un programa que determine la cantidad f de formas en las que se puede escribir un número entero positivo n como suma de uno o más números enteros positivos consecutivos. Tu programa también debe determinar el número más pequeño 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 número entero n en el intervalo de 1 a 1,000,000
(incluyéndolos). Salida: Dos número enteros f y p.
Problema 19.- Puntos dentro de un triángulo: Considera un triángulo T
dado por sus tres vértices ( a, b), (c, d) y (e, f ) con coordenadas enteras. Algunos puntos de coordenadas enteras están sobre los lados de T y otros puntos de coordenadas enteras están dentro de T. Escribe un programa que
Algoritmos y Estructura de Datos
130
Centro de Extensión y Proyección Social (CEPS)
encuentre las cantidades s y t de puntos sobre los lados y dentro de T, respectivamente. Por ejemplo, si los vértices 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) están sobre los lados de T mientras que los 4 puntos (1, 2), (2, 3), (2, 4) y (3, 3) están dentro de T. Entrada: Seis números enteros a, b, c, d, e, f separados por espacios y
todos ellos en el intervalo de -1000 a 1000 (incluyéndolos). Puedes suponer que los tres vértices de T no están alineados y por lo tanto forman un triángulo. Salida: Dos números enteros s y t separados por un espacio.
Problema 20.- Boletos por besos: Para ir hacia su escuela, Juan aborda
un camión. Cuando Juan sube al camión y deposita las monedas en la alcancía, el conductor le da un boleto con un número de serie consecutivo, el cual generalmente llega a la basura. Sin embargo, un día él se entera de algo interesante. Si la suma de los dígitos 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 dárselos a cambio de dichos boletos, pero no es tan fácil conseguirlos. Juan ha decidido que si el boleto que le da el conductor no suma 21, esperará hasta que una persona suba después después 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 dígitos, le proporcione el numero p de personas que deben abordar después de el para que obtenga el boleto deseado y m, donde m representa los 7 dígitos de dicho boleto. Cuando un tiraje de boletos termina, es decir llega a 9999999, el conductor toma otro tiraje comenzando nuevamente en el número 0000000. Algoritmos y Estructura de Datos 131
Universidad Nacional de Ingeniería
-
Entrada: Un numero entero n de 7 dígitos (que posiblemente comienza con
ceros). Salida: Un numero entero p y un número m de 7 dígitos .
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 especial de la pulga es que se ha aprendido aprendido una sucesión numérica y la usara para determinar cómo 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 sucesión. Los brincos siempre serán paralelos a los lados de la mesa y siempre deberán alejar a la pulga de su posición inicial. Lo ideal es que la pulga logre llegar a la esquina contraria de la mesa. Sin embargo, basta con que llegue a una posición 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). caer). Ejemplo, si la sucesión 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 podría lograr su objetivo si su sucesión de brincos fuera arriba, arriba, derecha, arriba, nada, nada y derecha. Por otro lado, si su sucesión fuera arriba, arriba, derecha, nada, nada, nada, nada entonces no llegaría a la esquina contraria pero tampoco se saldría de la mesa. renglón con tres enteros n, a y b Entrada: El archivo de texto contendrá un renglón separados por espacios seguido de un renglón con n enteros positivos s1, s2, ..., sn y separados por espacios.
Puedes suponer que todos estos enteros están en el rango de 1 a 1000, incluyéndolos. Salida: El archivo de texto nts.sal deberá contener un renglón con tres
enteros n, c y d separados por espacios seguido de un renglón con n enteros positivos t1, t2, ..., tn y separados por espacios. Los valores de c y d Algoritmos y Estructura de Datos
132
Centro de Extensión y Proyección Social (CEPS)
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. Evaluación: 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 obtendría 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.
Diseñar un programa que que permita jugar al Problema 22.- Diseñar
Master Mind.
Para ello se escribirá el Programa de la siguiente forma: • Generar cuatro valores valores enteros aleatorios entre 0 y 9 distintos distintos entre sí.
al usuario por cuatro valores enteros. • Preguntar al • Considerando ambas combinaciones, combinaciones, indicar indicar cuántos números comunes comunes
están en la misma posición y cuántos valores comunes están en distinta posición. Ejemplo: 3786 y 8760 → uno colocado (el 7) y dos descolocados (8 y 6) .• Se terminará el programa cuando el jugador acierte la combinación combinación o haya agotado sus intentos (constante MAXINTENTOS con valor 10).
Algoritmos y Estructura de Datos 133