Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Guía de Fundamentos de Programacion C++

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 235

Italo Yaranga Vite

FUNDAMENTOS DE
PROGRAMACION
C++

100 ALGORITMOS

Italo Yaranga Vite


ipyv@hotmail.com

C++

Página 0 de 235
Italo Yaranga Vite

GUIA PRÁCTICA
ALGORITMOS
ESTRUCTURADOS
C++

Página 1 de 235
Italo Yaranga Vite

INDICE
PAG
SESION 01 : Procesos Secuenciales.............................................. 3

SESION 02 : Estructuras Condicionales............................................ 39

SESION 03 : Estructuras Selectivas ............................................. 64

SESION 04 : Estructuras Repetitivas Para....................................... 94

SESION 05 : Estructuras Repetitivas Mientras................................. 113

SESION 06 : Procedimientos ....................................................... 133

SESION 07 : Funciones ................................................................ 155

SESION 08 : Arreglos de datos ................................................... 184

SESION 09 : Matrices de datos .................................................... 207

Página 2 de 235
Italo Yaranga Vite

S SESION 01
Los procesos secuenciales

Permiten realizar un proceso

tras otro no dependiendo de

alguna condición que haga

variar la secuencia.

Página 3 de 235
Italo Yaranga Vite

SESION 01

 PROCESOS SECUENCIALES

1. Diseñar un algoritmo en donde un vendedor recibe un sueldo mensual más un 10% de


comisión por ventas, el vendedor desea saber cuánto dinero obtendrá por las tres ventas
que realiza en el mes. Determinar el pago total que recibirá a fin mes el vendedor.

Solución:

*Análisis de datos
E: vendedor, sm, vt1, vt2 ,vt3.
S: pt (pago total)

*Algoritmo
1.-Inicio
2.-vendedor='', sm=0.0, vt1=0, vt2=0, vt3=0,pt=0.0,c=0.0
3.-Leer vendedor, sm, vt1, vt2, vt3.
4.-c=(vt1+vt2+vt3)*0.10
pt=sm + c
5.-Escribir pt
6.-fin

*Prueba de escritorio
vendedor='juan'
sm=1800
vt1=200
vt2=400
vt3=600
pt=1920

*Implementación del algoritmo en C++.

//libreria de entrada y salida de datos por consola


#include <iostream.h>
#include <conio.h>
//procedimiento principal
main(){
//declarar variables
char vendedor[20];//variable tipo cadena
double sm,pt,c; //variable tipo reales
int vt1,vt2,vt3; //variables enteras
//entrada de datos
cout<<"Ingresar Vendedor:";cin>>vendedor;
cout<<"Ingresar Sueldo mensual:";cin>>sm;
cout<<"Ingresar Venta1:";cin>>vt1;
cout<<"Ingresar Venta2:";cin>>vt2;
cout<<"Ingresar Venta3:";cin>>vt3;
//proceso de datos
c=(vt1+vt2+vt3)*0.10;
pt=sm+c;
//salida de datos
cout<<"El pago total es:"<<pt;
getch();//permite leer un carácter del teclado
}//fin del procedimiento

Página 4 de 235
Italo Yaranga Vite

*Ejecución del programa.

2. Diseñar un algoritmo que permita determinar el sueldo neto de un empleado, al cual se le


realiza un descuento del 13% (por planilla) de su sueldo bruto que se calcula en base a las
horas trabajadas al mes y su tarifa por hora trabajada. Visualizar sueldo bruto, descuento y
sueldo neto a pagar.

Solución:
*Análisis de datos
E: e (empleado), ht (horas trabajadas), th (tarifa por hora)
s: sb (sueldo bruto), d(descuento), sn (sueldo neto).

*Algoritmo
1.-inicio
2.-e='', ht=0, th=0.0, sb=0.0, d=0.0, sn=0.0
3.-leer e, ht ,th.
4.-sb=ht * th
d=sb * 0.13
sn=sb - d
5.-escribir sb, d, sn
6.-fin

*Prueba de Escritorio
e=’juan’
ht=160
th=20
sb=3200
d=416
sn=2784

Página 5 de 235
Italo Yaranga Vite

*Implementación del algoritmo en C++.


//librerias de entrada y salida de datos por consola
#include <iostream.h>
#include <conio.h> //permite captura una tecla con la función(getch())
//procedimiento principal
main(){
char e[20];
int ht; //variables enteras
double th,sb,d,sn;
//entrada de datos
cout<<"Nombre del empleado:";cin>>e;
cout<<"Horas Trabajadas al mes:";cin>>ht;
cout<<"Tarifa x Hora:";cin>>th;
//proceso de datos
sb=ht*th;
d=sb*0.13;
sn=sb-d;
//salida de datos
cout<<""<<endl;
cout<<"-----Los Resultados Son:------:"<<endl;
cout<<""<<endl;
cout<<"Sueldo Bruto:"<<sb<<endl;
cout<<"Descuento:"<<d<<endl;
cout<<"Sueldo Neto:"<<sn<<endl;
getch();//permite leer un caracter del teclado
}//fin del procedimiento

*Ejecución del programa.

Página 6 de 235
Italo Yaranga Vite
3. Diseñar un algoritmo que permita distribuir una cantidad ingresada en soles y Visualice la
cantidad de billetes de cada denominación de billetes de 200, 100, 50, 20, 10 y moneda 5,
2 y 1.
Solución:
*Análisis de datos
E: cs (cantidad soles)
S: b200, b100, b50, b20, b10, m5.
*Algoritmo
2.-cs=0,b200=0,b100=0,b50=0,b20=0,b10=0,m5=0,r=0, m2=0,m1=0
3.-leer cs
4.-b200=entero(cs/200)
r=residuo(cs/200)
b100=entero(r/100)
r=residuo(r/100)
b50=entero(r/50)
r=residuo(r/50)
b20=entero(r/20)
r=residuo(r/20)
b10=entero(r/10)
r=residuo(r/10)
m5=entero(r/5)
r=residuo(r/5)
m2=entero(r/2)
r=residuo(r/2)
m1=entero(r/1)
5.- escribir b200,b100,b50,b20,b10,m5,m2,m1
6.- fin

*Prueba de Escritorio
cs=388
b200=1, b100=1, b50=1, b20=1, b10=1, m5=1,m2=1,m1=1

Página 7 de 235
Italo Yaranga Vite

*Implementación del algoritmo en C++.


//libreria de e/s de datos por consola
#include <iostream.h>
//programa principal
main(){
//declarar variables
int cs,b200,b100,b50,b20,b10,m5,r,m2,m1;
//entrada de datos
cout<<"Ingresar Cantidad:";cin>>cs;
//proceso de datos
b200=int(cs/200);
r=cs%200;
b100=int(r/100);
r=r%100;
b50=int(r/50);
r=r%50;
b20=int(r/20);
r=r%20;
b10=int(r/10);
r=r%10;
m5=int(r/5);
r=r%5;
m2=int(r/2);
r=r%2;
m1=int(r/1);
//salida de datos
cout<<"Billetes de 200:"<<b200<<endl;
cout<<"Billetes de 100:"<<b100<<endl;
cout<<"Billetes de 50:"<<b50<<endl;
cout<<"Billetes de 20:"<<b20<<endl;
cout<<"Billetes de 10:"<<b10<<endl;
cout<<"Modedas de 5:"<<m5<<endl;
cout<<"Modedas de 2:"<<m2<<endl;
cout<<"Modedas de 1:"<<m1<<endl;
system("PAUSE");
} //fin de programa

Página 8 de 235
Italo Yaranga Vite
*Ejecución del programa.

4. Diseñar un algoritmo que permita obtener la depreciación acumulada y el valor real de un


automóvil para su reventa.
Solución:

*Análisis de datos
E: co (coste original), vu (vida útil), vrc (valor de recuperación), ap (años de propiedad)
S: da (depreciación acumulada), vr (valor real)

*Algoritmo
1.-inicio
2.-co=0.0, vu=0, vrc=0.0, ap=0, da=0.0, vr=0.0
3.-leer co, vu, vrc, ap
4.-da=ap*(co-vrc)/vu
vr=co-da
5.-escribir da, vr
6.-fin

*Prueba de Escritorio
co =20000
vu =6
vrc =2000
ap =2
da =6000
vr =14000

Página 9 de 235
Italo Yaranga Vite

*Implementación del algoritmo en C++.

//libreria de entrada y salida de datos


#include <iostream.h>
#include <conio.h>
//procedimiento principal
main () {
//declarar variables
int vu,ap;
double co,vrc,da,vr;
//entrada de datos
cout<<"LOS DATOS DEL VEHICULO:"<<endl;
cout<<"Ingresar el Coste Original: ";cin>>co;
cout<<"Ingresar vida Util: ";cin>>vu;
cout<<"Ingresar el valor de recuperacion: ";cin>>vrc;
cout<<"ingresar los años de propiedad: ";cin>>ap;
//procesos de datos
da=ap*(co-vrc)/vu;
vr=co-da;
//salida de datos
cout<<""<<endl;
cout<<"La Depreciacion Acumulada es: "<<da<<endl;
cout<<"El valor Real actual es: "<<vr;
getch();
} //fin de procedimiento

*Ejecución del programa.

Página 10 de 235
Italo Yaranga Vite
5. Diseñar un algoritmo que permita realizar las operaciones aritmeticas basicas como: suma,
resta, mult, división, residuo, potencia, raiz cuadrada mediante dos números ingresados.

Solución:
*Análisis de datos
E:n1,n2
S:s(suma),r(resta),m(mult),d(div),
rs(residuo),p(potencia),rc(raiz cuadrada)

*Algoritmo
1.-inicio
2.-n1=0.0,n2=0.0,s=0.0,r=0.0,m=0.0,d=0.0,rs=0,p=0,rc=0.0
3.-leer n1,n2
4.-s=n1+n2
r=n1-n2
m=n1*n2
d=n1/n2
rs=residuo(n1/n2)
p=potencia(n1,n2)
rc=raiz(n1)
5.-escribir s,r,m,d,rs,p,rc
6.-fin

*Prueba de Escritorio
n1=10
n2=5
s=15
r=5
m=50
d=2
rs=0
p=100000
rc=3.16228

Página 11 de 235
Italo Yaranga Vite

*Implementación del algoritmo en C++.

//libreria de e/s de datos


#include <iostream.h>
#include <conio.h>
#include <math.h>
//programa principal
main(){
//declarar variables
double n1=0.0,n2=0.0,s=0.0,r=0.0,m=0.0,d=0.0,p=0,rc=0.0;
int rs=0;
//entrada de datos
cout<<"Ingresar Numero 1:";cin>>n1;
cout<<"Ingresar Numero 2:";cin>>n2;
//proceso de datos
s=n1+n2;
r=n1-n2;
m=n1*n2;
d=n1/n2;
rs=int(n1)%int(n2);
p=pow(n1,n2); //potencia
rc=sqrt(n1);//raizc
//salida de datos
cout<<"La suma es:"<<s<<endl;
cout<<"La resta es:"<<r<<endl;
cout<<"La mult es:"<<m<<endl;
cout<<"La división es:"<<d<<endl;
cout<<"El residuo es:"<<rs<<endl;
cout<<"La potencia es:"<<p<<endl;
cout<<"La raiz es:"<<rc<<endl;
getch();
}//fin de programa

Página 12 de 235
Italo Yaranga Vite

*Ejecución del programa.

6. Diseñar un algoritmo que solicite al usuario su sueldo mensual, sus gastos de: renta, luz,
agua y comida y le muestre cuánto dinero le queda.

Solución:
*Análisis de datos
E:sm,r,l,a,c
S:dr(dinero restante)

*Algoritmo
1.-inicio
2.-sm=0,r=0,l=0,a=0,c=0,dr=0,s=0
3.-leer sm,r,l,a,c
4.-s=r+l+a+c
dr=sm-s
5.-escribir dr
6.-fin

*Prueba de Escritorio
sm=2000
r=700
l=100
a=120
comida=300
dr=780

Página 13 de 235
Italo Yaranga Vite

*Implementación del algoritmo en C++.

//librería de entrada y salida de datos


#include <iostream.h>
#include <conio.h>
//procedimiento principal
main(){
//declarar variables
int sm,r,l,a,c,dr,s;
//entrada de datos
cout<<"Hallar dinero que le queda"<<endl;
cout<<endl;
cout<<"Ingresar sueldo mensual: ";cin>>sm;
cout<<"Ingresar gasto en renta: ";cin>>r;
cout<<"Ingresar gasto en luz: ";cin>>l;
cout<<"Ingresar gasto en agua: ";cin>>a;
cout<<"Ingresar gasto en comida: ";cin>>c;
//proceso de datos
s=r+l+a+c;
dr=sm-s;
//salida de datos
cout<<"El dinero que le queda es: "<<dr<<endl;
getch();//permite leer un caracter
}//fin de procedimiento

*Ejecución del programa.

Página 14 de 235
Italo Yaranga Vite
7. Digite un número entero positivo de tres cifras, luego visualice el nuevo formado por sus
cifras extremas y la inversa de dicho número.

Solución:
*Análisis de datos
E:n(numero)
S: nnum(digitos de extremos), inv_nnum(números invertidos)

*Algoritmo
1.-inicio
2.-n=0, c1=0,c2=0,c3=0, nnum=0,inv_nnum=0,r=0
3.-leer n
4.-c1=entero(n/100)
r=residuo(n/100)
c2=entero(r/10)
r=residuo(r/10)
c3=entero(r)
nnum=(c1*10+c3)
inv_nnum=(c1+c3*10)
5.-escribir nnum,inv_nnum
6.-fin
*Prueba de Escritorio
n=483
nnum=43
inv_nnum=34

*Implementación del algoritmo en C++.


//libreria de e/s de datos
#include <iostream.h>
//progrma principal
main(){
//declarar variables
int n,c1,c2,c3,nnum,inv_nnum,r;
//entrada de datos
cout<<"Ingresar Cantidad:";cin>>n;
//proceso de datos
c1=n/100;
r=n%100;
c2=r/10;
r=r%10;
c3=r;
nnum=(c1*10+c3);//extremos de numeros
inv_nnum=(c1+c3*10);//numeros invertidos
//salida de datos
cout<<"Extremo de numeros:"<<nnum<<endl;
cout<<"Numero Invertidos:"<<inv_nnum<<endl;
system("PAUSE");
}//fin programa

Página 15 de 235
Italo Yaranga Vite

*Ejecución del programa.

Página 16 de 235
Italo Yaranga Vite
8. ¿Cual es el monto a devolver si nos prestan un capital c a una tasa de interes t%,
durante n periodos?

Solución:
*Analisis de datos
E:c(capital),t(tasa de interes),n(periodos)
S:m(monto)

*Algoritmo
1.-Inicio
2.-c=0.0,t=0.0,n=0,m=0.0
3.-m=c*pow(1 + t ,n)
4.-escribir m
5.-fin

*Prueba de escritorio
c=500
t=0.2
n=5
m=1244.16

*Implementación del algoritmo en C++.


//libreria de e/s de datos
#include <iostream.h>
#include <math.h>
//programa principal
main(){
//declarar variables
double c,t,m,x;
int n;
//entrada de datos
cout<<"Ingrese el capital :";cin>>c;
cout<<"Ingrese la tasa de interes en decimales :";cin>>t;
cout<<"Ingrese el periodo :";cin>>n;
m=c*pow(1+t,n);
//salida de datos
cout<<"El monto total es :"<<m<<endl;
system("PAUSE");
}//fin programa

Página 17 de 235
Italo Yaranga Vite

*Ejecución del programa.

9. Diseñar un algoritmo que permite obtener el tiempo en segundos , si se ingresa el


tiempo en horas, minutos y segundos.(Ejemplo 15hrs 20min 30seg).

Solución:
*Analisis de datos
E:hr(horas),m(minutos),s(segundos)
S:ts(tiempo total en segundos)

*Algoritmo
1.-Inicio
2.-hr=0.0,m=0.0,s=0.0,ts=0.0
3.-leer hr,m,s
4.-ts=hr*3600 + m*60 + s
5.-escribir ts
6.-fin

*Prueba de escritorio
hr=5
m=30
s=40
ts=19840

Página 18 de 235
Italo Yaranga Vite
*Implementación del algoritmo en C++.
#include <iostream.h>
#include <stdlib.h>
//promgrama principal
main(){
//declarar variables
double hr,m,s,ts;
//entrada de datos
cout<<"Ingrese la cantidad de horas :";cin>>hr;
cout<<"Ingrese la cantidad de minutos :";cin>>m;
cout<<"Ingrese la cantidad de segundos :";cin>>s;
//proceso de datos
ts=hr*3600+m*60+s;
//salida de datos
cout<<"El tiempo total en segundos es :"<<ts<<endl;
system("PAUSE");
}//fin de programa

*Ejecución del programa.

Página 19 de 235
Italo Yaranga Vite

10. Diseñar un algoritmo que permita convertir una cantidad de dolares a una cantidad
soles, teniendo en cuenta el tipo de cambio del dolar.

Solución:
*Analisis de datos
E:cd(cantidad dolares),tc(tipo de cambio)
S:cs(cantidad soles)

*Algoritmo
1.-inicio
2.-cd=0.0,tc=0.0,cs=0.0
3.-leer cd,tc
4.-cs=cd*tc
5.-escribir cs
6.-fin

*Prueba de Escritorio
cd=375
tc=2.75
cs=1031.25

*Implementación del algoritmo en C++.


#include <iostream.h>
#include <stdlib.h>
//promgrama principal
main(){
//declarar variables
double hr,m,s,ts;
//entrada de datos
cout<<"Ingrese la cantidad de horas :";cin>>hr;
cout<<"Ingrese la cantidad de minutos :";cin>>m;
cout<<"Ingrese la cantidad de segundos :";cin>>s;
//proceso de datos
ts=hr*3600+m*60+s;
//salida de datos
cout<<"El tiempo total en segundos es :"<<ts<<endl;
system("PAUSE");
}//fin de programa

*Ejecución del programa.

Página 20 de 235
Italo Yaranga Vite
11. Diseñar un algoritmo que permita determinar el área de un circulo, su diametro y la
longitud de la circunferencia al dar como dato su radio.

Solución:
*Analisis de datos
e:r(radio)
s:d(diametro), l(longitud de la circunferencia), a(area)

*Algoritmo
1.-inicio
2.-r=0, d=0, l=0,a=0
3.-leer r
4.-d=2*r
l=3.1416*radio*2;
a=3.1416*radio*radio;
5.-escribir d,l,a
6.-fin

*Prueba de escritorio
r=5
d=10
l=31.416
a=78.54

*Implementación del algoritmo en C++.


/*
Ejercicio 11
Desarrolar un algoritmo que permita determinar el área de un circulo, su diametro y la
longitud de la circunferencia al dar como dato su radio.
*/
//Libreria de e/s de datos por consola
#include<iostream.h>
//programa princinpal
main(){
//declarar variables
int r,d;
double l,a;
//entrada de datos
cout<<"Introducir el radio del circulo:";cin>>r;
//proceso de datos
d=2*r;
l=3.1416*r*2;
a=3.1416*r*r;
//salida de datos
cout<<"El diametro es:"<<d<<endl;
cout<<"La longitud de la circunferencia es:"<<l<<endl;
cout<<"El area del circulo es:"<<a<<endl;
system("pause");
} //fin de programación

Página 21 de 235
Italo Yaranga Vite

*Ejecución del programa.

12. Diseñar un algortimo en el cual calcule el equivalente en grados Fahrenheit o kelvin de


una temperatura en grados celcius.

Solución:
*Analisis de datos
e:t(temperaturaen celcius)
s:f(temperatura fahrenheit),k(temperatura en kelvin)

*Algoritmo
1.-inicio
2.-t=0.0,f=0.0,k=0.0
3.-leer t
4.-k=t+273
f=(1.8*t)+32
5.-escribir k,f
6.-fin

*Prueba de escritorio
t=5
f=41
k=278

Página 22 de 235
Italo Yaranga Vite
*Implementación del algoritmo en C++.

/*
Diseñar un algortimo en el cual calculae el equivalente en grados Fahrenheit o kelvin de
una temperatura en grados celsius.
*/
//libreria de e/s de datos por consola
#include<iostream.h>
//programa principal
main(){
//declarar variable
double t,f,k;
//entrada de datos
cout<<"Temperatura en Celsius:";cin>>t;
//proceso de datos
k=t+273;
f=(1.8*t)+32;
//salida de datos
cout<<"Temperatura en Fahrenheit:"<<f<<endl;
cout<<"Temperatura en Kelvin:"<<k<<endl;
system("PAUSE");
}//fin de programa

*Ejecución del programa.

Página 23 de 235
Italo Yaranga Vite

13. Diseñar un algortimo que permita a un alumno desea saber cual será su calificación
final en la materia de Algoritmos. Dicha calificación se compone de los siguientes
porcentajes:

· 55% del promedio de sus tres calificaciones parciales.


· 30% de la calificación del examen final.
· 15% de la calificación de un trabajo final.

Solución:
*Analisis de datos
e:p1(nota del primer parcial),p2(nota del segundo parcial),
p3(nota del tercer parcial),ef(nota del examen final),
tf(nota del trabajo final)
s:cf(calificacion final)

*Algoritmos
1.-inicio
2.-p1=0.0,p2=0.0,p3=0.0,pp=0.0,ef=0.0,tf=0.0,cf=0.0
3.-leer p1,p2,p3,ef,tf
4.-pp=(p1+p2+p3)/3
cf=0.55*pp+0.3*ef+0.15*tf
5.-escribir cf
6.-fin

*Prueba de Escritorio
p1=18
p2=12
p3=10
ef=14
tf=15
cf=13.78

Página 24 de 235
Italo Yaranga Vite

*Implementación del algoritmo en C++.


/*
Un alumno desea saber cual será su calificación final en la materia de Algoritmos. Dicha
calificación se compone de los siguientes porcentajes:

· 55% del promedio de sus tres calificaciones parciales.


· 30% de la calificación del examen final.
· 15% de la calificación de un trabajo final.
*/
//libreria de e/s de datos por consola
#include<iostream.h>
//programa principal
main(){
//declarar variables
double p1,p2,p3,ef,tf,cf,pp;//variable tipo real
//entrada de datos
cout<<"Ingrese la nota del primer parcial: ";cin>>p1;
cout<<"Ingrese la nota del segundo parcial: ";cin>>p2;
cout<<"Ingrese la nota del tercer parcial: ";cin>>p3;
cout<<"Ingrese la nota del examen final: ";cin>>ef;
cout<<"Ingrese la nota del trabajo final: ";cin>>tf;
//proceso de datos
pp=(p1+p2+p3)/3;
cf=0.55*pp+0.3*ef+0.15*tf;
//salida de datos
cout<<"Los resultados son: "<<endl;
cout<<"La calificacion final es: "<<cf<<endl;
system("PAUSE");
} //fin de programa

*Ejecución del programa.

Página 25 de 235
Italo Yaranga Vite

14. Diseñar un algoritmo que permita determinar el tiempo de alcance y el tiempo de


encuentro en minutos de dos vehículos, que se calcula en base a la distancia que existe
entre dos vehículos y sus respectivas velocidades. Visualizar el tiempo de encuentro y el
tiempo de alcance de los dos vehículos.

Solución:
*Análisis de datos

e:d(distancia entre los dos vehículos),v1(velocidad del primer vehículo),


v2(velocidad del segundo vehículo),sv(suma de velocidades de los dos vehículos),
dv(diferencia de velocidades de los dos vehículos)
s:te(tiempo de encuentro),ta(tiempo de alcance)

*Algoritmo

1.-inicio
2.-d=0.0,sv=0.0,dv=0.0,v1=0.0,v2=0.0,te=0.0,ta=0.0
3.-leer d,v1,v2
4.-sv=v1+v2
dv=v1-v2
te= d/sv
ta= d/dv
5.-escribir te,ta
6.-fin

*Prueba de Escritorio
d=100
v1=40
v2=20
sv=60
dv=20
te=1.67
ta=5

Página 26 de 235
Italo Yaranga Vite

*Implementación del algoritmo en C++.


/*
Diseñar un algoritmo que permita determinar el tiempo de alcance y el tiempo de
encuentro en minutos de dos vehículos, que se calcula en base a la distancia que
existe entre dos vehículos y sus respectivas velocidades. Visualizar el tiempo
de encuentro y el tiempo de alcance de los dos vehículos.
*/
//libreria de e/s de datos por consola
#include<iostream.h>
#include<iomanip.h>
//programa principal
main(){
//declarar variables
double d,sv,dv,v1,v2,te,ta;//variables tipo real
//entrada de datos
cout<<"La distancia entre los dos vehiculos es:";cin>>d;
cout<<"La velocidad del primer vehiculo es:";cin>>v1;
cout<<"La velocidad del segundo vehiculo es:";cin>>v2;
//proceso de Datos
sv=v1+v2;
dv=v1-v2;
te=d/sv;
ta=d/dv;
//salida de datos
cout<<"El tiempo de encuentro es:";
cout<<fixed<<setprecision(2)<<te<<" Minutos"<<endl;
cout<<"El tiempo de alcance es:"<<ta<<" Minutos"<<endl;
system("PAUSE");
}//fin de programa

*Ejecución del programa.

Página 27 de 235
Italo Yaranga Vite

15. Diseñar un algoritmo que permita conocer los datos estadísticos de una asignatura, por lo
tanto, que lea el número de desaprobados, aprobados y sobresalientes de una asignatura
y devuelva el tanto por ciento de alumnos que pasaron la asignatura y el tanto por ciento
de desaprobados, aprobados y sobresalientes de la asignatura.

Solución:
*Análisis de datos

e:d(cantidad de alumnos desaprobados),a(cantidad de alumnos aprobados),


s(cantidad de alumnos sobresalientes)
s:ta(cantidad total de alumnos),pp(porcentaje de alumnos que pasaron la asignatura),
pd(porcentaje de alumnos desaprobados),pa(porcentaje de alumnos aprobados),
ps(porcentaje de alumnos sobresalientes)

*Algoritmo

1.-inicio
2.-d=0.0,a=0.0,s=0.0,ta=0.0,pp=0.0,pd=0.0,pa=0.0,ps=0.0
3.-leer d,a,s
4.-ta=d+a+s
pp=(a+s)*100/ta
pd=d*100/ta
pa=a*100/ta
ps=s*100/ta
5.-escribir pp,pd,pa,ps
6.-fin

*Prueba de Escritorio

d=5
a=25
s=10
ta=40
pp=87.5
pd=12.5
pa=62.5
ps=25

Página 28 de 235
Italo Yaranga Vite
*Implementación del algoritmo en C++.
/*
Diseñar un algoritmo que permita conocer los datos estadísticos de una asignatura,
por lo tanto, que lea el número de desaprobados, aprobados y sobresalientes de una
asignatura y devuelva el tanto por ciento de alumnos que pasaron la asignatura y el
tanto por ciento de desaprobados, aprobados y sobresalientes de la asignatura.
*/
//libreria de e/s de datos por consola
#include<iostream.h>
#include<iomanip.h>
//programa principal
main(){
//declarar variables
double d,a,s,ta,pp,pd,pa,ps;//variables tipo real
//entrada de datos
cout<<"Estadisticas de una asignatura:"<<endl;
cout<<"Ingrese cantidad de alumnos desaprobados:";cin>>d;
cout<<"Ingrese cantidad de alumnos aprobados:";cin>>a;
cout<<"Ingrese cantidad de alumnos sobresalientes:";cin>>s;
//proceso de Datos
ta=d+a+s;
pp=(a+s)*100/ta;
pd=d*100/ta;
pa=a*100/ta;
ps=s*100/ta;
//salida de datos
cout<<"El ";
cout<<fixed<<setprecision(2)<<pp<<"% de alumnos ha pasado la asignatura"<<endl;
cout<<"Hay un:";
cout<<fixed<<setprecision(2)<<pd<<"% de alumnos desaprobados"<<endl;
cout<<"Hay un:";
cout<<fixed<<setprecision(2)<<pa<<"% de alumnos aprobados"<<endl;
cout<<"Hay un:";
cout<<fixed<<setprecision(2)<<ps<<"% de alumnos sobresalientes"<<endl;
system("PAUSE");
}//fin de programa

Página 29 de 235
Italo Yaranga Vite

*Ejecución del programa.

16. Diseñar un algoritmo determinar el valor de la hipotenusa de un triangulo rectangulo


aplicando el teorema de pitagoras. el perimetro y el area que representa conociendo
solamente el valor de su catetos.

Solución:
*Análisis de datos

E:at(altura),bs(base)
S:hp(hipotenusa),pt(perimetro),ar(area)

*Algoritmo
1.-inicio
2.-hp=0.0,pt=0.0,ar=0.0,at=0,bs=0
3.-leer at,bs
4.- hp=(at^2+bs^2)^(1/2)
pt=hp+at+bs
ar=(bs*at)/2
5.-mostrar hp,pt,ar
6.-fin

*prueba de escritorio
at=3, bs=4
hp=5
pt=12
ar=6

Página 30 de 235
Italo Yaranga Vite
*Implementación del algoritmo en C++.
/*
determinar el valor de la hipotenusa de un triangulo rectángulo aplicando el teorema de
pitagoras. el perimetro y el area que representa conociendo solamente el valor de su catetos
*/
#include<iostream.h>
#include<conio.h>

//proceso principal
int main() {
//declarar las variables
double hp,pt,ar;
int at,bs;
//entrada de datos
cout<<"ingresar la altura del triangulo:";cin>>at;
cout<<"ingresar la base del triangulo";cin>>bs;

//proceso de los datos


hp=((at*at)+(bs*bs))/5;
pt=hp+at+bs;
ar=(bs*at)/2;

//salida de datos

cout<<"la hipotenusa del triangulo es:"<<hp<<endl;


cout<<"el perimetro del triangulo es:"<<pt<<endl;
cout<<"el area del triangulo es:"<<ar<<endl;
getch();

Página 31 de 235
Italo Yaranga Vite

*Ejecución del programa.

17. Diseñar un algoritmo que permita calcular las funciones trigonométricas básicas como:
seno, coseno y tangente de un ángulo ingresado

Solución:

*Analisis de datos
E:grad
S:seno(seno),coseno(coseno)

*Algoritmo
1.-inicio
2.-grad=0.0,seno=0.0,coseno=0.0
3.-leer grad
4.-sen=sin(grad*pi/180)
cose=cos(grad*pi/180)
tang=tan(grad*pi/180)
5.-escribir sen,cose,tang
6.-fin

*prueba de escritorio
grad=50
seno=0.76604444
coseno=0.64278760
tangente=1.19175359

Página 32 de 235
Italo Yaranga Vite

*Implementación del algoritmo en C++.


/*
Diseñar un algoritmo que permita calcular las funciones trigonométricas básicas
como: seno, coseno y tangente de un ángulo ingresado
*/
//libreria de entrada y salida de datos
#include <iostream.h>
#include <conio.h>
#include <math.h>
//procedimiento principal
int main(){
//declarar variables
int grad;
double seno,coseno,tangente;
//entrada de datos
cout<<"ingresar angulo en grados sexagesimales:";cin>>grad;

//proceso de datos
seno=sin(grad*3.14159265/180);
coseno=cos(grad*3.14159265/180);
tangente=tan(grad*3.14159265/180);
//salida de datos
cout<<""<<endl;
cout<<"el seno de "<<grad<<" es="<<seno<<endl;
cout<<"el coseno de "<<grad<<" es="<<coseno<<endl;
cout<<"la tangente de "<<grad<<" es="<<tangente<<endl;
//cout<<"el valor real actual es:"<<vr;
getch();

}//fin de programa

*Ejecución del programa.

Página 33 de 235
Italo Yaranga Vite

18. Diseñar un algoritmo que digite el radio y la altura de un cilindro y muestre su volúmen,
área lateral y área total.

Solución:
*Analisis de datos
e:r(radio),h(altura)
s:v(volumen),at(area total),al(area lateral)

*Algoritmo
1.- inicio
2.- r=0.0,h=0.0,v=0.0,at=0.0,al=0.0,ab=0.0(area de la base)
3.- leer r,h
4.- ab=3.14*r*r
al=2*3.14*r*h
at=al+2*ab
v=ab*h
5.- escribir al,at,v
6.- fin

*Prueba de Escritorio
r=3
h=5
al=94.2
at=150.72
v=141.3

*Implementación del algoritmo en C++.


/*
Digite el radio y la altura de un cilindro
y muestre su volúmen, área lateral y área total
*/
//libreria de e/s datos por consola
#include<iostream.h>
//programa principal
main(){
//declarar variables
double r=0.0,h=0.0,v=0.0,at=0.0,al=0.0,ab=0.0;
//entrada de datos
cout<<"Ingrese el radio:";cin>>r;
cout<<"Ingrese la altura:";cin>>h;
//proceso de datos
ab=3.14*r*r;
al=2*3.14*r*h;
at=al+2*ab;
v=ab*h;
//salida de datos
cout<<"Area Lateral:"<<al<<endl;
cout<<"Area Total:"<<at<<endl;
cout<<"Volumen:"<<v<<endl;
system("pause");
}//fin programa

Página 34 de 235
Italo Yaranga Vite
*Ejecución del programa.

19. Diseñar un algoritmo que digite un número natural de dos cifras y muestre el promedio
de sus cifras.

Solución:
*Analisis de datos
e:n(numero)
s:prom(promedio de cifras)

*Algoritmo
1.- inicio
2.- n=0,Prom=0.0,d=0.0,u=0.0
3.- leer n;
4.- d=n/10
u=n%10
prom=(d+u)/10
5.- escribir prom
6.- fin

*Prueba de Escritorio
n=99
prom=9

Página 35 de 235
Italo Yaranga Vite

*Implementación del algoritmo en C++.


/*
Diseñar un algoritmo que digite un número natural de dos cifras y muestre el promedio de
sus cifras.
*/
//libreria de e/s datos por consola
#include<iostream.h>
//programa principal
main(){
//declarar variables
int n=0;
double prom=0.0,d=0.0,u=0.0;
//entrada de datos
cout<<"ingrese el numero:";cin>>n;
//proceso de datos
d=n/10;
u=n%10;
prom=(d+u)/2;
//salida de datos
cout<<"promedio de cifras:"<<prom<<endl;

system("pause");
}//fin programa

*Ejecución del programa.

Página 36 de 235
Italo Yaranga Vite

20. Diseñar un algoritmo que dados tres numeros positivos ,calcule la media armonica
(permite medir velocidades).

Solución:
Análisis de datos
e:n1,n2,n3
s:mh(media armoonica)

Algoritmo
1.-inicio
2.-n1=0.0,n2=0.0,n3=0.0,mh=0.0
3.-leer n1,n2,n3
4.-mh=3/(1/n1+1/n2+1/n3)
5.-escribir mh
6.-fin

prueba de escritorio
n1=12
n2=16
n3=11
mh=12.672

*Implementación del algoritmo en C++.


/*
Diseñar un algoritmo que dados tres numeros positivos ,calcule la media armonica.
*/
//libreria de e/s de datos por consola
#include <iostream.h> //permite brindar comandosde lectura y escritura
//programa principal
main(){
// declarar variables
double n1,n2,n3,mh; //real
//entrada de datos
cout<<"ingresar nota 1:";cin>>n1;
cout<<"ingresar nota 2:";cin>>n2;
cout<<"ingresar nota 3:";cin>>n3;
//proceso de datos
mh=3/(1/n1+1/n2+1/n3);
//salida de datos
cout<<endl;
cout<<"La media armonica es:"<<mh<<endl;
system("PAUSE");

}//fin de programa

Página 37 de 235
Italo Yaranga Vite

*Ejecución del programa.

Página 38 de 235
Italo Yaranga Vite

S SESION 02
Las condiciones nos permiten

consistenciar, validar mediante

la comparación de dos valores.

Página 39 de 235
Italo Yaranga Vite

SESION 02

 ESTRUCTURAS CONDICIONALES

1. Diseñar un algoritmo que permita determinar el promedio, condición ('aprobado',


'desaprobado'), estado, nota mayor y menor de un alumno mediante sus tres notas
ingresadas.

Condición
Promedio >=10.5 ‘aprobado’,’desaprobado’

Estado
<=5 “pesimo”
<=10 “malo”
<=15 "regular"
<=18 “bueno”
<=20 “excelente”

Soluciòn:

*Análisis de datos
E:nt1,nt2,nt3
S:prom(promedio),c(condicion),e(estado),nmy,nmn

*Algoritmo
1.-inicio
2.-nt1=0.0,nt2=0.0,nt3=0.0,
prom=0.0,c='',e='',nmy=0.0,nmn=0.0
3.-leer nt1,nt2,nt3
4.-nmy=nt1
//nota mayor
si nt2>nmy entonces
nmy=nt2
fin de si
si nt3>nmy entonces
nmy=nt3
fin de si
//nota menor
nmn=nt1
si nt2<nmn entonces
nmn=nt2
fin de si
si nt3<nmn entonces
nmn=nt3
fin de si
//condición del alumno
prom=(nt1+nt2+nt3)/3

Página 40 de 235
Italo Yaranga Vite

si prom>=10.5 entonces
c='Aprobado'
sino
c='Desprobado'
fin de si
//estado del alumno
si prom<=5 entonces
e='pesimo'
sino si prom<=10 entonces
e='malo'
sino si prom<=15 entonces
e='regular'
sino si prom<=18 entonces
e='bueno'
sino si prom<=20 entonces
e='excelente'
fin de si
5.-escribir prom,c,e,nmy,nmn
6.-fin

*Prueba de Escritorio
nt1=12.0
nt2=13.0
nt3=15.0
prom=13.333
c='Aprobado'
e='Regular'
nmy=15.0
nmn=12.0

Página 41 de 235
Italo Yaranga Vite

*Implementación del algoritmo en C++.

//librerias de entrada y salida de datos por consola


#include <iostream.h>
#include <conio.h>
//procedimiento principal
main(){
//declarar variables
double nt1,nt2,nt3,nmy,nmn;
double prom;
char c[20];
char e[20];
//entrada de datos
cout<<"Ingresar Nota1:";cin>>nt1;
cout<<"Ingresar Nota2:";cin>>nt2;
cout<<"Ingresar Nota3:";cin>>nt3;
//proceso de datos
nmy=nt1;
//nota mayor
if(nt2>nmy){
nmy=nt2;
}
if(nt3>nmy){
nmy=nt3;
}
//nota menor
nmn=nt1;
if(nt2<nmn){
nmn=nt2;
}
if(nt3<nmn){
nmn=nt3;
}
//condición del alumno
prom=(nt1+nt2+nt3)/3;
if(prom>=10.5){
strcpy(c,"Aprobado");
}else{
strcpy(c,"Desaprobado");
}//fin if

Página 42 de 235
Italo Yaranga Vite

//estado del alumno


if(prom<=5){
strcpy(e,"pesimo");
}else if(prom<=10){
strcpy(e,"malo");
}else if(prom<=15){
strcpy(e,"regular");
}else if(prom<=18){
strcpy(e,"bueno");
}else if(prom<=20){
strcpy(e,"excelente");
}//fin if
//salida de datos
cout<<"El promedio es:"<<prom<<endl;
cout<<"La condición es:"<<c<<endl;
cout<<"La estación es:"<<e<<endl;
cout<<"La nota mayor es:"<<nmy<<endl;
cout<<"La nota menor es:"<<nmn;
getch();//permite leer un carácter del teclado
}//fin de procedimiento

*Ejecución del programa.

Página 43 de 235
Italo Yaranga Vite

2. El gobierno ha implementado como parte de su programa social, un subsidio familiar


bajo la siguiente reglamentación.

a) Las familias que tienen hasta 2 hijos reciben S/.120, las que tienen entre 3 y 5 hijos
reciben S/.150.00 y las que tienen 6 hijos o más reciben S/.180 mensual.

b) Por cada hijo en edad escolar reciben S/.20 adicionales.

c) Si la madre de familia fuese viuda, la familia recibe S/.90 adicionales, si fuese


casada recibe S/.50.

d) Si la familia no tiene seguro social recibe S/.100 adicionales.

Determinar el monto mensual que recibirá una familia de acuerdo a su propia realidad
familiar.

Solución:

*Análisis de datos
E:nh(nhijos),nhe(nhjios escolar),ec(estado civil),ss(seguro social)
S:ms(monto mensual)

*Algoritmo
1.-inicio
2.-nh=0,nhe=0,ec='',ss=.f.,ms=0
3.-leer nh,nhe,ec,ss
4.- si nh>0 y nh<=2 entonces
ms=120
sino si nh<=5 entonces
ms=150
sino si nh>=6 entonces
ms=180
fin de si
//verificar el nro hijos en edad escolar
si nhe<=nh entonces
ms=ms + (nhe * 20) //acumulador
fin de si
//verificar el estado civil
si ec='vuida' entonces
ms=ms + 90 //acumulador
sino si ec='casada' entonces
ms=ms + 50 //acumulador
fin de si
//verificar el seguro social
si ss=.f. entonces
ms=ms + 100 //acumulador
fin de si
//salida de datos
5.-escribir 'el monto mensual que recibe la familia es:',ms
6.-fin

Página 44 de 235
Italo Yaranga Vite

*Prueba de Escritorio
nh=4
nhe=2
ec='viuda'
ss=.f.
ms=380

*Implementación del algoritmo en C++.

//librerias de entrada y salida de datos por consola


#include <iostream.h>
#include <conio.h>
//procedimiento principal
main(){
//declarar variables
int nh,nhe,ms;
char ec[20];
bool ss; //variable lógica
//entrada de datos
cout<<"Ingresar número Hijos:";cin>>nh;
cout<<"Ingresar número de h edad escolar:";cin>>nhe;
cout<<"Ingresar estado civil[viudo,casado]:";cin>>ec;
cout<<"Cuenta con seguro social:";cin>>ss;
//proceso de datos
if(nh>0 && nh<=2){
ms=120;
}else if(nh<=5){
ms=150;
}else{
ms=180;
}
//verificar el nro hijos en edad escolar
if(nhe<=nh){
ms=ms+(nhe * 20); //acumulador
}
//verificar el estado civil
if(strcmp(ec,"viuda")==0){
ms=ms + 90; //acumulador
}else if(strcmp(ec,"casada")==0){
ms=ms + 50; //acumulador
}
//verificar el seguro social
if(ss==false){
ms=ms + 100; //acumulador
}
//salida de datos
cout<<"el monto mensual que recibe la familia es:"<<ms<<endl;
getch();//permite leer un carácter del teclado
}//fin de procedimiento

Página 45 de 235
Italo Yaranga Vite

*Ejecución del programa.

Página 46 de 235
Italo Yaranga Vite
3. Dada la duración en minutos de una llamada teléfonica, mediante un algoritmo; calcular el
costo, considerando:
1.-Hasta tres minutos el costo es 0.50
2.-Por encima de tres minutos es 0.50 más 0.1 por cada minuto adicional a los tres
primeros.
Solución:
*Análisis de datos
E: min(minutos consumidos)
S: costo(costo de llamada)

*Algoritmo
1.-inicio
2.-min=0.0,costo=0.0
3.-leer min
4.-Si (min<=3) entonces
costo=0.50
sino
costo=0.1*(min-3)+0.50
fin de si
5.-escribir costo
6.-fin

*Prueba de escritorio
min=18
costo=2

*Implementación del algoritmo en C++.


/*
Dada la duración en minutos de una llamada teléfonica, mediante un algoritmo;
calcular el costo, considerando:
1.-Hasta tres minutos el costo es 0.50
2.-Por encima de tres minutos es 0.50 más 0.1 por cada minuto adicional a
los tres primeros.
*/
//librería de e/s de datos por consola
#include <iostream.h>
#include <math.h>
//Programa principal
main () {
//declarar variables
double min,costo; //real
//entrada de datos
cout<<"Ingrese los minutos consumidos: ";cin>>min;
//procesar datos
if (min<=3) {
costo=0.50;
}
else if (min>3) {
costo=0.1*(min-3)+0.50;
}
//salida de datos
cout<<"El costo de mi llamada es: "<<costo<<endl;
system("PAUSE");
}//fin de programa

Página 47 de 235
Italo Yaranga Vite

*Ejecución del programa.

4. Escribir un algoritmo que lea tres números reales y me diga, si se trata de un triangulo (La
suma de dos lados cualesquiera debe ser mayor que el tercer lado), y que tipo de triangulo
es (Equilátero: todos los lados son iguales, Isósceles: al menos dos lados son
iguales,Escaleno: no tiene dos lados iguales).

Solución:
*Análisis de datos
E: a,b,c (lados del triangulo)
S: m

*Algoritmo
1.- Inicio
2.- a=0.0, b=0.0, c=0.0,m= ' '
3.- leer a,b,c
4.- Si a+b<c o a+c<b o b+c<a entonces
m= 'El triángulo no existe '
Sino
Si a=b y a=c entonces
m= 'El triángulo es equilátero'
Sino
Si a=b o a=c ó b=c entonces
m=‘El triángulo es isosceles‘
Sino
m=‘El triángulo es escaleno‘
Fin de Si
Fin de Si
Fin de Si
5.-escribir m
6.- Fin

*Prueba de escritorio
a=2
b=2
c=3
m= ‘El triángulo es isosceles’

Página 48 de 235
Italo Yaranga Vite
*Implementación del algoritmo en C++.
/*
Escribir un algoritmo que lea tres números reales y me diga, si se trata de un triangulo (La suma
de dos lados cualesquiera debe ser mayor
que el tercer lado), y que tipo de triangulo es (Equilátero: todos los lados son iguales, Isósceles:
al menos dos lados son iguales,
Escaleno: no tiene dos lados iguales).
*/
//libreria de e/s de datos
#include <iostream.h>
//libreria para el getch()
#include <conio.h>
//programa principal
int main(){
//declaración de variables
double a,b,c;
char m[20];
//lectura de datos
cout<<"Ingrese los 3 lados de un triangulo : "<<endl;
cout<<endl<<"Lado 1 : ";cin>>a;
cout<<endl<<"Lado 2 : ";cin>>b;
cout<<endl<<"Lado 3 : ";cin>>c;
cout<<endl;
//proceso de datos
if (a+b<c || a+c<b || b+c<a){//condicion necesaria para la existencia de un triángulo
strcpy(m,"No existe el triángulo con los lados ingresados.");
}else{
if (a==b && a==c){//todos los lados iguales resulta equilátero
strcpy(m,"El triangulo es equilatero.");
}else if (a==b || a==c || b==c){//si dos lados son iguales resulta isósceles
strcpy(m,"El triangulo es isosceles");
}else{//sino, es escaleno
strcpy(m,"El triangulo es escaleno");
}
}//fin del if
//salida de datos
cout<<m<<endl;
getch();
}//fin del main

*Ejecución del programa.

Página 49 de 235
Italo Yaranga Vite

5. En una llantera se ha establecido una promoción de las llantas marca "Ponchadas", dicha
promoción consiste en lo siguiente: Si se compran menos de cinco llantas el precio es de
$300 cada una, de $250 si se compran de cinco a 10 y de $200 si se compran mas de 10.
Obtener la cantidad de dinero que una persona tiene que pagar por cada una de las llantas
que compra y la que tiene que pagar por el total de la compra,así como el monto que paga
y el vuelto si lo hubiera.

Solución:

*Análisis de datos
e:u(comprador),c(cantidad de llantas),mp(monto a pagar)
s:pu(Precio por llanta),pt(Costo total por llantas),v(Vuelto)

*Algoritmo
1.-inicio
2.-u='',c=0,mp=0.0,v=0.0,pu=0.0,pt=0.0
3.-leer u,c,mp
4.-//proceso de datos
si c<5 entonces//menos de 5 llantas
pu = 300
sino
si c>=5 y c<10 entonces//entre 5 y 10 llantas
pu = 250
sino//mas de 10 llantas
pu = 200
fin de si
fin de si
pt = pu*c
5.-//salida de datos: costo x llanta y el costo total
escribir 'Costo por cada llanta : ',pu
escribir 'Costo total de las llantas:',pt
//segunda lectura de datos : pago de las llantas
leer mp//monto a pagar por las llantas
si mp<pt entonces
cescribir 'El pago no es suficiente. No se realiza la venta'
sino
v = mp-pt
salida final de datos
escribir u,pu,c,pt,mp,v
fin sde si
6.-fin

*Prueba de escritorio
u='juan perez'
c=4
mp=1500
pt=1200
v=3000

Página 50 de 235
Italo Yaranga Vite
*Implementación del algoritmo en C++.

/*
En una llantera se ha establecido una promoción de las llantas marca "Ponchadas", dicha
promoción consiste en lo siguiente: Si se compran
menos de cinco llantas el precio es de $300 cada una, de $250 si se compran de cinco a 10 y de
$200 si se compran mas de 10. Obtener la
cantidad de dinero que una persona tiene que pagar por cada una de las llantas que compra y la
que tiene que pagar por el total de la compra,
así como el monto que paga y el vuelto si lo hubiera.
*/
//libreria para e/s de datos por consola
#include <iostream.h>
//libreria para el getch()
#include <conio.h>
//máximo número de caracteres para el nombre del comprador
#define MAX 30
main(){
//declaracion de variables
char u[MAX];
int c,pu,pt;
double mp,v;
cout<<"\t\tLlantas Ponchadas"<<endl<<endl;
//lectura de datos
cout<<"Ingrese el nombre del comprador : ";cin.getline(u,MAX);
cout<<endl<<"Ingrese la cantidad de llantas : ";cin>>c;
cout<<endl;
//proceso de datos
if (c<5)//menos de 5 llantas
pu = 300;
else{
if (c>=5 && c<10)//entre 5 y 10 llantas
pu = 250;
else//mas de 10 llantas
pu = 200;
}
pt = pu*c;
//salida de datos: costo x llanta y el costo total
cout<<endl<<"Costo por cada llanta : "<<pu;
cout<<endl<<"Costo total de las llantas : "<<pt<<endl;
//segunda lectura de datos : pago de las llantas
cout<<endl<<"Ingrese el monto a pagar : ";cin>>mp;//monto a pagar por las llantas
if (mp<pt)
cout<<"El pago no es suficiente. No se realiza la venta.";
else{
v = mp-pt;
//salida final de datos
cout<<"El cliente de nombre "<<u<<" ha realizado la compra que consiste en : "<<endl;
cout<<endl<<"- Precio por llanta : S/"<<pu;
cout<<endl<<"- Cantidad de llantas : "<<c;
cout<<endl<<"- Pago total : S/"<<pt;
cout<<endl<<"- Monto pagado : S/"<<mp;
cout<<endl<<"- Vuelto : S/"<<v;
}
getch();
}

Página 51 de 235
Italo Yaranga Vite

*Ejecución del programa.

Página 52 de 235
Italo Yaranga Vite

6. Construir un programa que calcule el índice de masa corporal de una persona (IMC = peso
[kg] /altura[m]) e indique el estado en el que se encuentra esa persona en función del valor
de IMC:

Valor de IMC
<16 "ingrese al hospital"
16 a 17 "infrapeso"
17 a 18 "bajo peso"
18 a 25 "peso normal(saludable)"
25 a 30 "sobrepeso(obesidad de gradoI)"
30 a 35 "sobrepeso crónico(obesidad de grado II)"
35 a 40 "obesidad premorbida(obesidad de grado III)"
>40 "obesidad morbica(obesidad de grado IV)"

*ESTADO
<16 "ingrese al hospital"
<17 "infrapeso"
<18 "bajo peso"
<26 "peso normal(saludable)"
<30 "sobrepeso(obesidad de gradoI)"
<35 "sobrepeso crónico(obesidad de grado II)"
<40 "obesidad premorbida(obesidad de grado III))"
>40 "obesidad morbica(obesidad de grado IV)"

Solución:

*Analisis de datos
E:p(peso),t(talla)
S:e(estado);

*Algoritmo
1.-inicio
2.-p=0.0,t=0.0,imc=0.0;
3.-leer p,t ;
4.-imc=p*1/t*1/t
//ingrese al hospital
si imc<16 entonces
e='ingrese hospital'
sino si imc<17 entonces
e= 'infrapeso'
sino si imc<18 entonces
e= 'bajopeso'
sino si imc<26 entonces
e= 'pesonormal'
sino si imc<30 entonces
e= 'sobrepeso(obesidad de gradoI)'
sino si imc<35 entonces
e= 'sobrepeso crónico(obesidad de grado II)'
sino si imc<40 entonces
e= "obesidad premorbida(obesidad de grado III))'
sino si imc=40 entonces
e='obesidad morbica(obesidad de grado IV)'
fin de si
5.-escribir e
6.-fin

Página 53 de 235
Italo Yaranga Vite

*PRUEBA DE ESCRITORIO
p=60
t=1.60
imc=23,4375
PN=PESO NORMAL

*Implementación del algoritmo en C++.

#include<iostream.h>
main(){
char e[30];
double p,t,imc;;
//entrada de datos
cout<<"calcule su peso"<<endl;
cout<<"peso en kg:";cin>>p;
cout<<"talla en metros:";cin>>t;
//proceso de datos
imc=p*1/t*1/t;
//proceso de datos
if(imc<16){
strcpy(e,"Reuiere Atencion Medica:");
}else if (imc<17){
strcpy(e,"usted tiene infrapeso:");
}else if (imc<18){
strcpy(e,"usted tiene bajo peso");
}else if (imc<26){
strcpy(e,"usted tiene un peso normal(saludable)");
}else if (imc<30){
strcpy(e,"usted tiene sobrepeso(obesidad de gradoI)");
}else if (imc<35){
strcpy(e,"usted tiene sobrepeso crónico(obesidad de grado II)");
}else if (imc<40){
strcpy(e,"usted tiene obesidad premorbida(obesidad de grado III)");
}else if (imc>=40){
strcpy(e,"usted tiene obesidad morbica(obesidad de grado IV)");
}
cout<<endl;
//salaida de datos
cout<<"Los resultados son:"<<e<<endl;
system("PAUSE");
}//fin de programa

Página 54 de 235
Italo Yaranga Vite

*Ejecución del programa.

7. Una empresa de bienes raíces ofrece casas de interés social, bajo las siguientes
condiciones: Si los ingresos del comprador son menores de $8000, el enganche será del
15% del costo de la casa y el resto se distribuirá en pagos mensuales, a pagar en diez años.
Si los ingresos del comprador son de $8000 o mas, el enganche será del 30% del costo de
la casa y el resto se distribuirá en pagos mensuales a pagar en 7 años. La empresa quiere
obtener cuanto debe pagar un comprador por concepto de enganche y cuanto por cada
pago parcial

Solución:

*Analisis de datos:
E:ingresos del comprador(ing),costo de la casa(costoc)
S:enganche(eng),pago mensual(pagmen)

*Algoritmo
1.-inicio
2.-ing=0.0,costoc=0,eng=0.0,pagmen=0.0
3.-leer ing,costoc
4.-//enganche y pago mensual
si (ing>=8000) entonces
eng=costoc*0.15
pagmen=0.85*costoc/120
sino
eng=costoc*0.30
pagmen=0.70*costoc/84
fin de si
5.-escribir eng,pagmen
6.-fin

*Prueba de escritorio:
ing=8500
costoc=52500
eng=15750
pagmen=437.5

Página 55 de 235
Italo Yaranga Vite

*Implementación del algoritmo en C++.

//libreria de e/s de datos por consola


#include <iostream.h> //permite brindar comandosde lectura y escritura
//programa principal
main(){
// declarar variables
int costoc; //entero
double ing,eng,pagmen; //real
//entrada de datos
cout<<"ingresos del comprador:";cin>>ing;
cout<<"ingresar el costo de la casa:";cin>>costoc;
//proceso de datos
//enganche y pago mensual
if (ing<=8000) {
eng=costoc*0.15;
pagmen=0.85*costoc/120;
}else{
eng=costoc*0.30;
pagmen=0.70*costoc/84;
}
//salida de datos
cout<<"EL enganche es:"<<eng<<endl;
cout<<"EL pago mensual es:"<<pagmen<<endl;
system("PAUSE");

}//fin de programa

*Ejecución del programa.

Página 56 de 235
Italo Yaranga Vite

8. Disenar un algoritmo permita ingresar 3 numeros enteros positivos y que determine cual de
ellos es el mayor cual es el menor y cual es el medio.

Solución:

*Análisis de datos
E:n1,n2,n3
S:my,mr,md

*Algoritmo
1.-inicio
2.-n1=0,n2=0,n3=0,my=0,mr=0,md=0
3.-escribir n1,n2,n3
4.- //mayor
my=n1
si n2>my entences
my=n2
fin de si
si n3>my entonces
my=n3
//menor
mr=n1
si n2<mr entences
mr=n2
fin de si
si n3<mr entonces
mr=n3
fin si
md=(n1+n2+n3)-(my+mr)
5.-escribir my,mr,md
6.-fin

*prueba de escritorio
n1=12
n2=9
n3=15
my=15
mr=9
md=12

Página 57 de 235
Italo Yaranga Vite

*Implementación del algoritmo en C++.


// libreria de entrada y salida de datos por consola
#include <iostream.h>
// programa principal
main (){
// declarar variables
int n1,n2,n3,my,mr,md;
//entrada de datos
cout<<"ingresar numero 1:";cin>>n1;
cout<<"ingresar numero 2:";cin>>n2;
cout<<"ingresar numero3:";cin>>n3;
//proceso de datos
//n mayor
my=n1;
if (n2>my) {
my=n2;
}
if(n3>my) {
my=n3;
}
//menor
mr=n1;
if(n2<mr) {
mr=n2;
}
if(n3<mr){
mr=n3;
}
//medio
md=(n1+n2+n3)-(my+mr);
//salida de datos
cout<<"el mayor es:"<<my<<endl;
cout<<"el menor es:"<<mr<<endl;
cout<<"el numero medio es:"<<md<<endl;
system ("PAUSE");
}

*Ejecución del programa.

Página 58 de 235
Italo Yaranga Vite
9. Un supermercado ha puesto en oferta la venta al por mayor de cierto producto,
ofreciendo un descuento del 15% por la compra de más de 3 docenas y 10% en caso
contrario. Además por la compra de más de 3 docenas se obsequia una unidad del
producto por cada docena en exceso sobre 3. Diseñe un algoritmo que determine el
monto de la compra, el monto del descuento, el monto a pagar y el número de unidades
de obsequio por la compra de cierta cantidad de docenas del producto.

Solución:

*Análisis de datos
E: cantdocenas, precio
S: montcompra, montdesc,montpagar, cantuniobs

*Algoritmos
1.- inicio
2.- cantdocenas=0, precio=0.0, montcompra=0.0, montpagar=0.0, cantuniobs=0
3.- leer cantdocenas, precio
4.- montcompra=precio * cantdocenas
si (cantdocenas>3) entonces
montdesc=0.15 * montcompra
cantuniobs=cantdocenas/3
fin de si
si no entonces
montdesc=0.10 * montcompra
cantuniobs=0
fin de si no
5.- montpagar=montcompra-montdesc
6.-imprimir montcompra,montodesc,montpagar,cantuniobs
7.-fin

*Prueba de Escritorio
Ingresar la cantidad de docenas:5
Ingresar el precio por docena:2
---------------------------------
El monto de compra es:10
El monto de descuento es:1.5
El monto a pagar es:8.5
Las unidades de obsequio son:1

Página 59 de 235
Italo Yaranga Vite

*Implementación del algoritmo en C++.


#include <iostream.h>
int main(){
// Declaración de variables
int cantdocenas,cantuniobs;
double precio,montcompra, montpagar,montdesc;
// Entrada de datos
cout<<"Ingresar la cantidad de docenas:"; cin>>cantdocenas;
cout<<"Ingresar el precio de cada docenas:"; cin>>precio;
// Determina el monto de la compra
montcompra= precio*cantdocenas;
// Determina el monto del descuento y el obsequio
if (cantdocenas>3){
montdesc=0.15 * montcompra;
cantuniobs=cantdocenas/3;
}
else{
montdesc=0.10 * montcompra;
cantuniobs=0;
}
// Determina el monto a pagar
montpagar=montcompra-montdesc;
// Salida de resultados
cout<<"----------------------------------"<<endl;
cout<<"El monto de compra es:"<<montcompra<<endl;
cout<<"El monto de descuento es:"<<montdesc<<endl;
cout<<"El monto a pagar es:"<<montpagar<<endl;
cout<<"Las unidades de obsequio son:"<<cantuniobs<<endl;
cout<<"----------------------------------"<<endl;
system("PAUSE");
}

*Ejecución del programa.

Página 60 de 235
Italo Yaranga Vite
10. El promedio de prácticas de un curso se calcula en base a cuatro prácticas calificadas de
las cuales se elimina la nota menor y se promedian las tres notas más altas. Diseñe un
algoritmo que determine la nota eliminada y el promedio de prácticas de un estudiante.

Solución:

*Análisis de datos
E: nota1,nota2,nota3,nota4
S: notaelim,promedio

*Algoritmos
1.-inicio
2.- nota1=0.0, nota2=0.0, nota3=0.0, nota4=0.0, notaelim=0.0, promedio=0.0,notamenor=0.0
3.- leer nota1,nota2,nota3,nota4
4.- notamenor=nota1
si nota2<notamenor entonces
notamenor=nota2
fin de si
si nota3<notamenor entonces
notamenor=nota3
fin de si
si nota4<notamenor entonces
notamenor=nota4
fin de si
promedio=(nota1 + nota2 + nota3 + nota4 - notamenor)/3
5.- imprimir notamenor, promedio
6.-fin

*Prueba de Escritorio
Ingresar nota1:12
Ingresar nota2:14
Ingresar nota3:16
Ingresar nota4:10
----------------
La nota menor es:10
El promedio es:14

Página 61 de 235
Italo Yaranga Vite

*Implementación del algoritmo en C++.


//libreria de entrada y salida de datos por consola
#include<iostream.h>
#include<conio.h>
int main(){
//Declarar variables
double nota1, nota2, nota3, nota4, promedio,notamenor;
//Entrada de datos
cout<<"Ingresar nota1:"; cin>>nota1;
cout<<"Ingresar nota2:"; cin>>nota2;
cout<<"Ingresar nota3:"; cin>>nota3;
cout<<"Ingresar nota4:"; cin>>nota4;
//Proceso de datos
notamenor=nota1;
if (nota2<notamenor){
notamenor=nota2;
}//fin de si
if (nota3<notamenor){
notamenor=nota3;
}//fin de si
if (nota4<notamenor){
notamenor=nota4;
}//fin de si
promedio=(nota1 + nota2 + nota3 + nota4 - notamenor)/3 ;
//Salida de datos
cout<<"------------------------"<<endl;
cout<<"La nota eliminada es:"<<notamenor<<endl;
cout<<"El promedio es:"<<promedio<<endl;
cout<<"------------------------"<<endl;
getch();
}

*Ejecución del programa.

Página 62 de 235
Italo Yaranga Vite

S SESION 03
Selectivas permiten evaluar

alternativas una por otra hasta

coincidir y ejecutar una acción.

Página 63 de 235
Italo Yaranga Vite

SESION 03

 ESTRUCTURAS SELECTIVAS

1. Diseñar un algoritmo que permita enseñar a utilizar las cuatro operaciones Aritméticas
básicas, mediante dos números ingresado. El algoritmo pregunta la operación aritmética y
respuesta a los alumnos de primer grado, Si la respuesta es correcta se le emite un mensaje
de "felicitaciones" caso contrario "Respuesta incorrecta".

Solución:

*Análisis de datos
E:n1,n2,opa,rpta
S:m(mensaje)

*Algoritmo
1.-inicio
2.-n1=0.0,n2=0.0,opa=' ',rpta=0.0,r=0.0,m=' '
3.-leer n1,n2,opa,rpta
4.-segun sea opa
caso '+'
r=n1+n2
caso '-'
r=n1-n2
caso '*'
r=n1*n2
caso '/'
r=n1/n2
fin de segun
si r=rpta entonces
m='Felicitaciones'
sino
m='Respuesta Incorrecta'
fin de si
5.-escribir m
6.-fin

*Prueba de Escritorio
n1=4
n2=2
opa='*'
rpta=8
m='Felicitaciones'

Página 64 de 235
Italo Yaranga Vite
*Implementación del algoritmo en C++.

//librerías de entrada y salida de datos por consola


#include <iostream.h>
#include <conio.h>
//procedimiento principal
int main(){
//declarar variables
double n1,n2,r,rpta;
char opa; //variable tipo char
char m[20]; //variable tipo cadena
//entrada de datos
cout<<"Ingresar número 1:";cin>>n1;
cout<<"Ingresar número 2:";cin>>n2;
cout<<"Ingresar operación aritmetica:";cin>>opa;
cout<<"Ingresar respuesta:";cin>>rpta;
//proceso de datos
switch(opa){
case '+':
r=n1+n2;
break; //sale de la estructura selectiva
case '-':
r=n1-n2;
break;
case '*':
r=n1*n2;
break;
case '/':
r=n1/n2;
break;
}//fin de switch
if(r==rpta){
strcpy(m,"Felicitaciones");
}else{
strcpy(m,"Respuesta Incorrecta");
}
//salida de datos
cout<<m<<endl;
getch();//permite leer un carácter del teclado
}//fin de procedimiento

Página 65 de 235
Italo Yaranga Vite

*Ejecución del programa.

Página 66 de 235
Italo Yaranga Vite
2. Diseñar un algoritmo que permita determinar el nombre del mes del año y la estación del
año, mediante un número ingresado.

Solución:

*Análisis de datos
E:n(número)
S:m(mes),e(estación)

*Algoritmo
1.-inicio
2.-n=0,m='',e=''
3.-leer n
4.-si n>0 y n<=12 entonces
según sea n
caso 1:m='enero'
caso 2:m='febrero'
caso 3:m='marzo'
caso 4:m='abril'
caso 5:m='mayo'
caso 6:m='junio'
caso 7:m='julio'
caso 8:m='agosto'
caso 9:m='setiembre'
caso 10:m='octubre'
caso 11:m='noviembre'
caso 12:m='diciembre'
fin de según
según sea n
caso 1,2,3
e='verano'
caso 4,5,6
e='otoño'
caso 7,8,9
e='invierno'
caso 10,11,12
e='primavera'
fin de según
sino
m='Número Incorrecto'
fin de si
5.-escribir m,e
6.-fin

*Prueba de escritorio
n=5
m='mayo'
e='otoño'

Página 67 de 235
Italo Yaranga Vite

*Implementación del algoritmo en C++.

//librerías de entrada y salida de datos por consola


#include <iostream.h>
#include <conio.h>
//procedimiento principal
int main(){
//declarar variables
int n;
char m[20];
char e[20];
//entrada de datos
cout<<"Ingresar nùmero1:";cin>>n;
//proceso de datos
switch(n){
case 1:
strcpy(m,"enero");
break;
case 2:
strcpy(m,"febrero");
break;
case 3:
strcpy(m,"marzo");
break;
case 4:
strcpy(m,"abril");
break;
case 5:
strcpy(m,"mayo");
break;
case 6:
strcpy(m,"junio");
break;
case 7:
strcpy(m,"julio");
break;
case 8:
strcpy(m,"agosto");
break;
case 9:
strcpy(m,"setiembre");
break;
case 10:
strcpy(m,"octubre");
break;
case 11:
strcpy(m,"noviembre");
break;

Página 68 de 235
Italo Yaranga Vite

case 12:
strcpy(m,"diciembre");
break;
}
switch(n){
case 1:
case 2:
case 3:
strcpy(e,"verano");
break;
case 4:
case 5:
case 6:
strcpy(e,"otoño");
break;
case 7:
case 8:
case 9:
strcpy(e,"invierno");
break;
case 10:
case 11:
case 12:
strcpy(e,"primavera");
break;
}//fin de switch
//salida de datos
cout<<"El mes del año es:"<<m<<endl;
cout<<"La estación del año:"<<e<<endl;
getch();//permite leer un carácter del teclado
}//fin de procedimiento

*Ejecución del programa.

Página 69 de 235
Italo Yaranga Vite

3. Diseñar un algoritmo que determine el importe a pagar el examen de admisión de una


universidad, cuyo valor depende del nivel socioeconómico y el colegio de procedencia.

NIVEL SOCIAL
COLEGIO A B C
Nacional 300 200 100
Particular 400 300 200

Solución:

*Análisis de datos
E:c(colegio)
E:n(nivel)
S:mp(monto a pagar)

*Algoritmo
1.-inicio
2.- c='', n='', mp=0
3.-leer c, n
4.- //proceso
segun sea c
caso'N'
caso 'A'
mp=300
caso 'B'
mp=200
caso 'C'
mp=100
Fin caso
caso'P'
caso 'A'
mp=400
caso 'B'
mp=300
caso 'C'
mp=200
fin de caso
fin caso
//salida de datos
5.-escribir mp
6.-Fin

*Prueba de escritorio
Colegio=’P’
Nivel= ‘B’
mp= 300

Página 70 de 235
Italo Yaranga Vite
*Implementación del algoritmo en C++.

//libreria de entrada y salida de datos por consola


#include <iostream.h>
#include <conio.h>
//procedimiento principal
int main(){
//declarar variables
char c;
char n;
int mp;
//entrada de datos
cout<<"Ingresar Tipo de Colegio:";cin>>c;
cout<<"Ingresar Nivel Social:";cin>>n;
switch(c){
case 'N':
switch(n){
case'A':
mp=300;
break;
case'B':
mp=200;
break;
case'C':
mp=100;
break;
}
case'P':
switch(n){
case'A':
mp=400;
break;
case'B':
mp=300;
break;
case'C':
mp=200;
break;
}
}
cout<<"Monto a Pagar es:"<<mp<<endl;
getch();//permite leer un caracter del teclado
}//fin

Página 71 de 235
Italo Yaranga Vite

*Ejecución del programa.

Página 72 de 235
Italo Yaranga Vite
4. Una empresa de carga brinda servicio a todo el continente americano,la tarifa que cobra por
cada tonelada se muestra en el siguiente cuadro: destinos ($/toneladas).

Medios de transporte norte sur centro.


aereo 30 25 20
maritimo 25 20 15
terrestre 20 15 10

Asimismo si la carga que se transporte es perecible se le incrementa el 7% de pago total de


acuerdo a las toneladas.

Solución:

*Análiis de datos
E: mt,dest,peso,tipcarga.
S:pagotot
*Algoritmo
1.-inicio
2.-mt=0,dest=0,tipcarga,peso=0.0,pago=0.0,incre=0.0,pagotot=0.0
3.-leer mt,dest,peso,tipcarga.
4.-segun sea (mt)
caso 1: segun sea(dest)
caso 1:pago=30*peso;
caso 2:pago=25*peso;
caso 3:pago=20*peso:
fin segun sea
caso2:
segun sea (dest)
caso 1:pago=17*peso;
caso 2:pago=19*peso;
caso 3:pago=15*peso;
fin segun sea
caso3:
segun sea (dest)
caso 1:pago=14*peso;
caso 2:pago=10*peso;
caso 3:pago=12*peso;
fin segun sea
fin segun sea

si tipcarga=1 entonces
incre=0.07*pago
sino si tipcarga=2 entonces
incre=0
fin de si
pagotot=pago+incre
5.-escribir pagotot
6.-fin

*Prueba de escritorio
mt=1
dest=1
tipcarga=1
peso=50
pagotot=1605

Página 73 de 235
Italo Yaranga Vite

*Implementación del algoritmo en C++.

# include <iostream.h>
//programa principal
main(){
//declaracion de variables
int mt,dest,tipcarga;
double peso,pago,incre,pagotot;
// entrada de datos
cout<<"ingrese medio de transporte aereo=1,maritimo=2,terrestre=3:";cin>>mt;
cout<<"ingresar el destino norte=1,sur=2,centro=3:";cin>>dest;
cout<<"ingresar carga perecible=1 y no perecible=2:";cin>>tipcarga;
cout<<"ingresar poso de la carga:";cin>>peso;
// proceso de datos
switch (mt){
case 1:
switch(dest){
case 1:pago=30*peso;break;
case 2:pago=25*peso;break;
case 3:pago=20*peso;break;
}
break;
case 2:
switch (dest){
case 1:pago=17*peso;break;
case 2:pago=19*peso;break;
case 3:pago=15*peso;break;
}
break;
case 3:
switch (dest){
case 1:pago=14*peso;break;
case 2:pago=10*peso;break;
case 3:pago=12*peso;break;
}
break;
}
//verificación de la carga
if(tipcarga==1){
incre=0.07*pago;
}else if(tipcarga==2){
incre=0;
}
pagotot=pago+incre;
// salida de datos
cout<<"el pago a realizar es:"<<pagotot<<endl;
system("PAUSE");
}

Página 74 de 235
Italo Yaranga Vite
*Ejecución del programa.

Página 75 de 235
Italo Yaranga Vite

5. Un banco realiza el pago de intereses a sus clientes por un deposito a plazo fijo de
acuerdo al siguiente informacion tipo de moneda tiempo de deposito y monto depositado
los intereses seran segun el siguiente cuadro:

meses soles% dolares%


0-5 0 0
6-12 6 4
13-mas 9 7
Mostrar el interes y el monto total a recibir.

Solución:

*Análisis de datos
E:d(dinero),mes,mon
S:inte,total

*Algoritmo
1.-inicio
2.-mes=0,mon=0,d=0.0,inte=0.0,total=0.0
3.leer d(dinero),mes,mon
4.-segun sea (mon)
caso 1:
si mes>0 y mes<=5 entonces
inte=0
sino si mes>6 y mes<=12 entonces
inte=d*0.06
sino
inte=d*0.09
fin de si
caso 2:
si mes>0 y mes<=5 entonces
inte=0
sino si mes>=6 y mes<=12 entonces
inte=d*0.04
sino
inte=d*0.07
fin de si
fin segun sea
5.-total=d+inte
6.-escribir inte,total
7.-fin

*prueba de escritorio
d=8500
mes=12
mon=2(dolares)
inte=340
total=8840

Página 76 de 235
Italo Yaranga Vite
*Implementación del algoritmo en C++.

//libreria de entrada y salida de datos por consola


#include <iostream.h>
//programa principal
main(){
//declaracion de variables
int mes,mon;
double d,inte,total;
// entrada de datos
cout<<"ingresar dinero a ahorrar:";cin>>d;
cout<<"ingresar tiempo de ahorro:";cin>>mes;
cout<<"ingresar monedas soles=1,dolares=2:";cin>>mon;
// proceso de datos
switch (mon){
case 1:
if(mes>0 && mes<=5){
inte=0;
}
else if(mes>6 && mes<=12){
inte=d*0.06;
}else {
inte=d*0.09;
}
break;
case 2 :
if(mes>0 && mes<=5){
inte=0;
}else if(mes>=6 && mes<=12){
inte=d*0.04;
}else{
inte=d*0.07;
}
break;
}
total=d+inte;
//salida de datos
cout<<"el interes ganado es :"<<inte<<endl;
cout<<"el total a recibir es:"<<total<<endl;
system("PAUSE");
}

Página 77 de 235
Italo Yaranga Vite

*Ejecución del programa.

Página 78 de 235
Italo Yaranga Vite
6. Una libreria tiene dos tipos de clientes: estudiantes (E) y publico en general (P).Ademas
ofrece dos tipos de pago:contado(C) y plazos(P).Se pide escribir un programa que pida el
ingreso de:El nombre del cliente,el tipo de cliente,la forma de pago y el monto de pago.
Dependiendo del tipo de pago va a existir un descuento tal como se muestra en el siguiente
cuadro.

tipo contado(c)Descuento Plazos(p)Recargo


Estudiante E 10% 5%
Publico G 5% 15%
Solución:

*Analisis de datos
E:n,tc,tp,mp;
S:mpt

*Algoritmos
1.-Inicio
2.-so=0,mpt=0.0,md=0.0,mr=0.0,n[20]='',tc,tp
3.-leer n,tc,tp,mp
4.-segun sea(tc)
caso 'E':
segun sea (tp)
caso 'C':
md=0.1*mp
caso 'P':
md=0.05*mp
fin de segun
caso 'G':
segun sea (tp)
caso 'E':
md =0.05*mp
caso 'P':
md =0.15*mp
fin de segun
mpt=(mp-md)+mp
5.-escribir mpt
6.-Fin

*Prueba de escritorio
nombre=juan’
tip cliente=’E’
forma de pago=’C’
monto del pago=200
descuento=20
monto total apagar =180

Página 79 de 235
Italo Yaranga Vite

*Implementación del algoritmo en C++.

//libreria de entrada y salida de datos por consola


#include <iostream.h>
#include <conio.h>
#include <math.h>

main(){
int mp;
double mpt,md,mr;
char n[20];
char tc;
char tp;
//entrasda de datos
cout<<"Ingrese el nombre del cliente:";cin>>n;
cout<<"Ingrese el tipo de cliente[E,P]:";cin>>tc;
cout<<"Ingrese la forma de pago [C,P]:";cin>>tp;
cout<<"ingrese el monto del pago:";cin>>mp;
//proceso de datos
switch(tp){
case 'C':
switch(tc){
case 'E':
md=0.1*mp;
break;
case 'P':
md=0.05*mp;
break;
}
case 'l':
switch (tc){
case 'E':
md=0.05*mp;
break;
case 'P':
md=0.15*mp;
break;
}
}
mpt=(mp-md)+mr;
//salida de datos
cout<<"presenta monto pagado:"<<mp<<endl;
cout<<"presenta un descuento de:"<<md<<endl;
cout<<"el monto total apagar es:"<<mpt<<endl;
system("PAUSE");
}

Página 80 de 235
Italo Yaranga Vite
*Ejecución del programa.

Página 81 de 235
Italo Yaranga Vite

7. Diseñe un algoritmo que permita analizar la validez de una fecha, considere que el año
válido sea mayo a 1800.

Solución:

*Analisis de datos
E:dd(dia),mm(mes),aa(año)
S:m(mensaje)

*Algoritmo
1. inicio
2. dd=0,mm=0,aa=0, ndias=0,m='' //variable ndias almacena el número de días que tiene el mes.
3. leer dd,mm,aa
4. En caso de mm
caso1:ndias=31
caso2:
si(aa mod 4=0 y aa mod 400=0) o (aa mod 400=0) entonces
ndias=29
sino
ndias=28
fin de si
caso3: ndias=31
caso4: ndias=30
caso5: ndias=31
caso6: ndias=30
caso7: ndias=31
caso8: ndias=31
caso9: ndias=30
caso10: ndias=31
caso11: ndias=30
caso12: ndias=31
fin de caso
si aa>1800 y (mm>0 y mm<=12) y (dd>0 y dd<=ndias)
m='fecha valida'
sino
m='fecha no valida'
fin de si
5.fin

*prueba de escritorio
dia=11
mes=7
año=1856
m='fecha valida'

Página 82 de 235
Italo Yaranga Vite
*Implementación del algoritmo en C++.

//libreria de entrada y salida de datos por consola


#include<iostream.h>
#include<conio.h>
#include<string.h>
int main(){
//declarar variables
int DD, MM, AA, NDias;
char m[20];
//entrada de datos
cout<<endl<<"Ingrese dia: ";cin>>DD;
cout<<endl<<"Ingrese mes: ";cin>>MM;
cout<<endl<<"Ingrese año: ";cin>>AA;
//proceso de datos
switch(MM)
{ case 1 : NDias = 31;break;
case 2 :
if ((AA%4==0 && AA%400==0) || (AA%400==0)){
NDias = 29;
}else{
NDias = 28;
}
break;
case 3 : NDias = 31;break;
case 4 : NDias = 30;break;
case 5 : NDias = 31;break;
case 6 : NDias = 30;break;
case 7 : NDias = 31;break;
case 8 : NDias = 31;break;
case 9 : NDias = 30;break;
case 10 : NDias = 31;break;
case 11 : NDias = 30;break;
case 12 : NDias = 31;break;
}
if (AA > 1800 && (MM>0 && MM<=12) && (DD>0 && DD<=NDias)){
strcpy(m,"Fecha valida");
}else{
strcpy(m,"Fecha no valida");
}
//salida de datos
cout<<m<<endl;
getch();
}//fin de programa

Página 83 de 235
Italo Yaranga Vite

*Ejecución del programa.

Página 84 de 235
Italo Yaranga Vite
8. Construir un programa que permita simular el juego en un hipódromo. La idea es mostrar
una lista de 6 caballos:
1.Rocinante
2.Trueno
3.Comanche
4.Gitana
5.Sombra
6.Savage
Se debe elegir ingresando el número del caballo. Luego el sistema simula la carrera y muestra
al final el caballo que gano (con un numero al azar).
Si el número elegido coincide con el numero ganador se muestra el mensaje de ganaste. Sino
el mensaje de perdedor.

Solución:

*Análisis de datos
E:num(numero de caballo)
S:nc(nombre de caballo),mensaje

*Algoritmo
1.-inicio
2.-nc='',mensaje='',num=0,numg=0
3.-escribir ‘1.Rocinante’
‘2.Trueno’
‘3.Comanche’
‘4.Gitana’
‘5.Sombra’
‘6.Savage’
4.-leer num
5.-numg=aleatorio() //genera numero aleatorio
segun sea numg
caso 1:
nc='Rocinante'
caso 2:
nc='Trueno'
caso 3:
nc='Comanche'
caso 4:
nc='Gitana'
caso 5:
nc='Sombra'
caso 6:
nc='Savage'
fin segun sea
si num=numg entonces
mensaje='ganaste'
sino
mensaje='perdedor'
fin de si
6.-escribir nc,mensaje
7.-fin

*Prueba de escritorio
num=3
nc='Comache'
mensaje='ganaste'

Página 85 de 235
Italo Yaranga Vite

*Implementación del algoritmo C++.

#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <time.h>
//procedimiento principal
int main(){
char nc[20],mensaje[20];
int num,numg;
cout<<"Carrera de Caballos"<<endl;
cout<<"1.Rocinante"<<endl;
cout<<"2.Trueno"<<endl;
cout<<"3.Comanche"<<endl;
cout<<"4.Gitana"<<endl;
cout<<"5.Sombra"<<endl;
cout<<"6.Savage"<<endl;
cout<<"Ingrese el numero del caballo:";cin>>num;
srand(time(NULL)); //se cambia la semilla del numero al azar basado en la hora
numg=1 + rand() % 6;
switch(numg){
case 1:
strcpy(nc,"Rocinante");break;
case 2:
strcpy(nc,"Trueno");break;
case 3:
strcpy(nc,"Comache");break;
case 4:
strcpy(nc,"Gitana");break;
case 5:
strcpy(nc,"Sombra");break;
case 6:
strcpy(nc,"Savage");break;
}

if(num==numg){
strcpy(mensaje,"ganaste");
}
else{
strcpy(mensaje,"perdedor");
}
cout<<"Caballo ganador:"<<nc<<endl;
cout<<"Resultado:"<<mensaje<<endl;
getch();
}

Página 86 de 235
Italo Yaranga Vite
*Ejecución del programa.

9. Dados como datos la categoria y sueldo de una trabajador, calcule el aumento


correspondiente teniendo en cuenta la siguiente tabla,imprimir la categoria del trabajador y el
nuevo sueldo.
Solución:
*Analisis de datos
E:c(caterogia),s(sueldo)
S:ns(nuevo sueldo),m(mensaje)

*Algoritmo
1.-inicio
2.-c=0,s=0.0,ns=0.0,m=''
3.-leer c,s
4.- segun sea
caso 1:
m='primera categoria'
ns=s+0.15*s
caso 2:
m='segunda categoria'
ns=s+0.10*s
caso 3:
m='tercera categoria'
ns=s+0.08*s
caso 4:
m='cuarta categoria'
ns=s+0.07*s
otro caso
m='no existe esa categoria'
fin de segun
5.-escribir ns,m
6.-fin
*Prueba de Escritorio
c=1
s=5000
ns=5750
m='primera categoria'

Página 87 de 235
Italo Yaranga Vite

*Implementación del algoritmo C++.

#include <iostream.h>
main(){
int c;
double s,ns;
char m[20];

cout<<"introduce la categoria en la que se encuentra [1-4]: ";cin>>c;


cout<<"ingresa tu sueldo mensual: ";cin>>s;
switch(c){

case 1:
strcpy(m,"primera categoria");
ns=s+s*0.15;
break;
case 2:
strcpy(m,"segunda categoria");
ns=s+s*0.10;
break;
case 3:
strcpy(m,"tercera categoria");
ns=s+s*0.08;
break;
case 4:
strcpy(m,"cuarta categoria");
ns=s+s*0.07;
break;
default:
strcpy(m,"Ingreso mal la categoria");
break;
}
cout<<"Tu nuevo sueldo es: "<<ns<<endl;
cout<<"pertenece a la "<<m<<endl;

system("PAUSE");
}

Página 88 de 235
Italo Yaranga Vite

*Ejecución del programa.

Página 89 de 235
Italo Yaranga Vite

10. Dado Elabore un algoritmo que solicite un nùmero entero de 1 a 10 y muestre su


equivalente en romano.

Solución:
*Análisis de datos
E:ne
S:nr
*Algoritmo
1.-inicio
2.-ne=0,nr="
3.-leer ne
4.-segun sea ne
caso '1'
nr=I
caso '2'
nr=II
caso '3'
nr=III
caso '4'
nr=IV
caso '5'
nr=V
caso '6'
nr=VI
caso '7'
nr=VII
caso '8'
nr=VIII
caso '9'
nr=IX
caso '10'
nr=X
fin de según
5.-escribir nr
6.-fin

*prueba de escritorio
ne=5
nr=v

Página 90 de 235
Italo Yaranga Vite

*Implementación del algoritmo C++.

#include<iostream.h>
#include<conio.h>
//procedimiento principal
int main() {
//declara variables
int ne;
char nr[20];
//entrada de datos
cout<<"ingresar numero entero :";cin>>ne;
//proceso de datos
switch(ne){
case 1:
strcpy(nr,"I");
break;
case 2:
strcpy(nr,"II");
break;
case 3:
strcpy(nr,"III");
break;
case 4:
strcpy(nr,"IV");
break;
case 5:
strcpy(nr,"V");
break;
case 6:
strcpy(nr,"VI");
break;
case 7:
strcpy(nr,"VII");
break;
case 8:
strcpy(nr,"VIII");
break;
case 9:
strcpy(nr,"IX");
break;
case 10:
strcpy(nr,"X");
break;
}//fin de switch
//salida de datos
cout<<"el numero romano es:"<<nr;
getch();//permite leer un caracter del teclado
}//fin de procedimiento

Página 91 de 235
Italo Yaranga Vite

*Ejecución del programa.

Página 92 de 235
Italo Yaranga Vite

S SESION 04
Para o desde permite generear
un ciclo de repetiticiones
mediante valores definidos.

SESION 04

Página 93 de 235
Italo Yaranga Vite

 ESTRUCTURAS REPETITIVAS CON VALORES DEFINIDOS

1. Diseñar un algoritmo que permita generar una tabla de multiplicar mediante un número
ingresado. Visualizar la suma de los resaultados.

Solución:

*Análisis de datos
E: n (número)
S: resultados,sr(suma de resultados)

*Algoritmo
1.-inicio
2.-n=0,r=0,i=0
3.-leer n
4.-para i=1 hasta 12
r=n * i
sr=sr + r
escribir n,'*',i,'=',r
fin de para
5.-escribir sr
6.-fin

*Prueba de escritorio
n=5
5 * 1 =5
5 * 2 =10
5 * 11=55
.
.
5 * 12=60
La suma de los reusltados son:390

Página 94 de 235
Italo Yaranga Vite

*Implementación del algoritmo en C++.

/*
Ejercicio1:
Diseñar un algoritmo que permita generar una tabla de multiplicar mediante un
número ingresado.
*/
//libreria de e/s de datos por consola
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
//procedimiento principal
int main(){
//declarar variables
int n,r,i,sr=0;
//entrada de datos
cout<<"Ingresar Número:";cin>>n;
//proceso de datos
for(i=1;i<=12;i++){
r=n * i;
sr=sr+r;
//salida de datos
cout<<n<<"*"<<i<<"="<<r<<endl;
}//fin de for
//salida de datos
cout<<"La suma de los resultados es:"<<sr<<endl;
system("PAUSE");
}//fin de programa

*Ejecución del programa.

Página 95 de 235
Italo Yaranga Vite

2. Diseñar un algoritmo que permita al final de un curso saber cuál ha sido el alumno de
primer grado con mejor promedio. Se sabe que este año entraron 3 y que en primer
grado tiene tres asignaturas. Visualizar el nombre del alumno con su promedio mayor.

Solución:

*Análisis de datos
E: nombre, asignatura
S: xnom, xpmayor

*Algoritmo
1.-Inicio
2.-nombre='', asignatura=0.0, xnom='', promedio=0.0, i=0, j=0, sn=0.0, xpmayor=0.0
3.-Para i=1 hasta 3 //alumno
leer nombre
para j=1 hasta 3 //notas
leer asignatura
sn=sn + asignatura
fin de para
promedio=sn/3
si promedio>xpmayor entonces
xnom=nombre
xpmayor=promedio
fin de si
promedio=0.0
sn=0.0
fin de para
4.-Escribir xnom,xpmayor
5.-Fin

*Prueba de escritorio
Alumno1:'juan'
as1=12
as2=13
as1=14
promedio =13
Alumno2:'jose'
as1=10
as2=12
as1=14
promedio =12
Alumno3:'julio'
as1=14
as2=16
as1=13
promedio =14.3
---------------
Alumno ='julio'
Promedio =14.3

Página 96 de 235
Italo Yaranga Vite
*Implementación del algoritmo C++.

/*
Diseñar un algoritmo que permita al final de un curso saber cuál ha sido el alumno de
primer grado con mejor promedio. Se sabe que este año entraron 3 y que en primer
grado tiene tres asignaturas. Visualizar el nombre del alumno con su promedio mayor.
*/
//librerias de entrada y salida de datos por consola
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
//procedimiento principal
int main(){
//declarar variables
int n,i,j;
char nombre[50];
char xnom[50];
double asignatura,promedio,sn,xpmayor;
//proceso de datos
for(i=1;i<=3;i++){ //alumno
//entrada de datos
cout<<"Ingresar nombre del alumno:";cin>>nombre;
for(j=1;j<=3;j++){ //notas
cout<<"Ingresar Asignatura:";cin>>asignatura;
sn=sn + asignatura;
}//fin for
promedio=sn/3;
if(promedio>xpmayor){
strcpy(xnom,nombre);
xpmayor=promedio;
}
sn=0.0;
cout<<"Su promedio es:";
cout<<fixed<<setprecision(2)<<promedio<<endl;
cout<<""<<endl;
}//fin for
//salida de datos
cout<<"Alumno:"<<xnom<<endl;
cout<<"El promedio mayor es:";
cout<<fixed<<setprecision(2)<<xpmayor;
getch();//permite leer un carácter del teclado
}//fin de procedimiento

Página 97 de 235
Italo Yaranga Vite

*Ejecución del programa.

3. Diseñar un algoritmo que permita determinar el promedio, suma de los números pares y
la cantidad de números impares que se encuentran en los diez primeros números.

Solución:

*Análisis de datos
E:
S:p(promedio),sp(suma de pares),ci(cantidad de impares),sn=0

*Algoritmo
1.-inicio
2.-p=0.0,sp=0,ci=0,i=0,r=0
3.-para i=1 hasta 10
sn=sn + i
r=residuo(i/2)
si r=0 entonces
sp=sp + i //acumulador
sino
ci=ci + 1 //contador
fin de si
fin de para
p=sn/10
4.-escribir p,sp,ci
5.-fin

*Prueba de Escritorio
1-2-3-4-5-6-7-8-9-10

p=5.5
sp=30
ci=5

Página 98 de 235
Italo Yaranga Vite
*Implementación del algoritmo C++.

/*
Diseñar un algoritmo que permita determinar el promedio,
suma de los números pares y la cantidad de números impares
que se encuentran en los diez primeros números.
*/
//librerias de entrada y salida de datos por consola
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
//procedimiento principal
int main(){
//declarar variables
int sn,i,r,sp=0,ci=0;
double p;
//proceso de datos
for(i=1;i<=10;i++){
sn=sn+i;
r=i%2;
if(r==0){
sp=sp+i; //acumulador
}else{
ci=ci+1; //contador
}//fin if
}//fin for
p=sn/10;
//salida de datos
cout<<"El promedio es:"<<p<<endl;
cout<<fixed<<setprecision(2);
cout<<"La suma de n pares es:"<<sp<<endl;
cout<<"La cantidad de n impares es:"<<ci<<endl;
getch();//permite leer un caracter del teclado
}//fin de procedimiento

*Ejecución del programa.

Página 99 de 235
Italo Yaranga Vite

4. Diseñe un algoritmo que permita hallar los divisores de un número ingresado. Además,
que se muestre la suma de los divisores y se informe si es un número primo y si es un
número perfecto (un número perfecto es aquel que es igual a la mitad de la suma de
todos sus divisores).

Solución:

*Análisis de datos
E: n(número)
S: lista de números primos, suma, primo, perfecto
*Algoritmo
1.- Inicio
2.- n=0, i=0, suma=0
3.- leer n
4.- Para i=1 hasta n
Si residuo(n,i)=0 entonces
escribir i
suma = suma + i
Fin de Si
Fin de Para
escribir suma

Si suma=n+1 entonces
escribir n,' es un número primo'
Sino
escribir n,' no es un número primo'
Fin de Si

Si division(suma,2)=n entonces
escribir n,' es un número perfecto'
Sino
escribir n,' no es un número perfecto'
Fin de Si
5.- Fin
*Prueba de escritorio
n=28
divisores: 1 2 4 7 14 28
suma = 56
´No es un número primo´
'Es un número perfecto´

Página 100 de 235


Italo Yaranga Vite
*Implementación del algoritmo C++.

//libreria de e/s de datos por consola


#include <iostream.h>
//libreria para el getch()
#include <conio.h>
//programa principal
int main(){
//declaracion de variables
int i,n,suma=0;
//lectura de datos
cout<<"Ingrese un numero : ";cin>>n;
cout<<endl<<"Los divisores de "<<n<<" son : ";
//proceso de datos
for (i=1;i<=n;i++){//inicio del for
if (n%i==0){//condicion para verificar si i es divisor de n (residuo igual a 0)
cout<<i<<" ";
suma+=i;}//suma de divisores con acumulador
}//fin del for
//primera salida de datos : suma de divisores
cout<<endl<<"La suma de los divisores es "<<suma;
//condiconal para saber si es un numero primo
if (suma == n+1)
cout<<endl<<"Es un numero primo.";
else
cout<<endl<<"No es un numero primo.";
//condicional para saber si un numero es perfecto
if (suma/2==n)
cout<<endl<<"Es un numero perfecto.";
else
cout<<endl<<"No es un numero perfecto.";
getch();
}

*Ejecución del programa.

Página 101 de 235


Italo Yaranga Vite

5. Elabore un algoritmo que lea un valor N y que imprima un triangulo de asteriscos.

Solución:

*Analisis de datos
E: n(valor de la base del triangulo)
S: *

*Algoritmo
1. inicio
2. n=0,i=0,j=0
3. Leer n
4. Para i desde 0 hasta n inc de 1 en 1
para j desde 0 hasta i+1 inc de 1 en 1
escribir '*'
fin para
escribir ' '
Fin para
5. fin

*Prueba de escritorio
n=3
*
**
***

*Implementación del algoritmo C++.

//Librerias de cabecera
#include<iostream.h>
#include<conio.h>
//Procedimiento principal
int main(){
//Definicion de variables
int n,i,j;
//Ingreso de datos
cout<<"Ingrese el numero de asteriscos que va a tener la base del triangulo: ";
cin>>n;
cout<<endl;
//Procesos
for(i=0;i<n;i++){
for(j=0;j<i+1;j++){
cout<<"*";}
cout<<endl;
}
getch();
}//fin del procedimiento

Página 102 de 235


Italo Yaranga Vite
*Ejecución del programa.

6. Diseñar un algoritmo que pemrita ingresar cinco notas de un alumno. Visualizar el


promedio de notas, cantidad de notas aprobadas y cantidad de notas desaprobadas.

Nota:La nota aprobatoria es mayor que diez.

Solución:

*Analisis de datos
E:nota
S:pn(promedio de notas),cna(cantidad notas aprobados),
cnd(cantidad de notas desaprobadas)

*Algoritmo
1.-inicio
2.-nota=0.0,pn=0.0,cna=0,cnd=0,i=0,sn=0.0
3.-para i =1 hasta 5
leer nota
sn=sn + nota //acumulador
si nota>10 entonces
cna=cna+1 //contador
sino
cnd=cnd+1 //contador
fin de si
fin de para
pn=sn/5
4.-escribir pn,cna,cnd
5.-fin

*Prueba de escritorio
nota1=12
nota2=9
nota3=13
nota4=10
nota5=11
pn=11
cna=3
cnd=2

Página 103 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.

//Librerias de e/s de datos por consola


#include <iostream.h>
main(){
//declarar variables
double nota=0.0,pn=0.0,sn=0.0;
int cna=0,cnd=0,i=0;
//entrada de datos
for(i=1;i<=5;i++){
cout<<"Ingresar Nota "<<i<<":";cin>>nota;
sn=sn+nota; //acumulador
if(nota>10){
cna=cna+1; //contador
}else{
cnd=cnd+1; //contador
}
}
pn=sn/5;
//salida de datos
cout<<"Resultados Finales son:"<<endl;
cout<<"Promedio de notas:"<<pn<<endl;
cout<<"Cantidad de notas aprobadas:"<<cna<<endl;
cout<<"Cantidad de notas desaprobadas:"<<cnd<<endl;
system("PAUSE");
}

*Ejecución del programa.

Página 104 de 235


Italo Yaranga Vite
7. Diseñar un algoritmo que permita visualizar el sueldo Promedio,Mayor y Menor de los n
empleados.

Solución:

*Analisis de datos
E:n(número empleados),s(sueldo)
S:sp(sueldo promedio),smy(sueldo mayor),smn(sueldo menor)

Algoritmo
1.-inicio
2.-p=0.0,sp=0.0,smy=0.0,smn=0.0,n=0,s=0.0,i=0
3.-smn=99999
4.-leer n
5.-para i=1,n
leer s //lectura de sueldo
p=p+s //acumulador de sueldo

//sueldo mayor
si s>smy entonces
smy=s
fin de si

//sueldo menor
si s<smn entonces
smn=s
fin de si
fin de para
sp=p/n //promedio
6.-escribir sp,smy,smn
7.-fin

Prueba de Escritorio
n=5
1000,2000,3000,4000,5000
sp=3000
smy=5000
smn=1000

Página 105 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.

//libreria de e/s de datos por consola


#include <iostream.h>
//programa principal
main(){
//declarar variables
double p=0.0,sp=0.0,smy=0.0,smn=0.0,s=0.0;
int n,i;
//entrada de datos
smn=99999;
cout<<"Ingresar Numero de empleados:";cin>>n;
//proceso de datos
for(i=1;i<=n;i++){
cout<<"Ingresar Sueldo "<<i<<":";cin>>s;
p=p+s; //acumulador de sueldo
//sueldo mayor
if(s>smy){
smy=s;
}
//sueldo menor
if(s<smn){
smn=s;
}
}
sp=p/n; //promedio
//salida de datos
cout<<"Sueldo promedio:"<<sp<<endl;
cout<<"Sueldo mayor:"<<smy<<endl;
cout<<"Sueldo menor:"<<smn<<endl;
system("PAUSE");
}

*Ejecución del programa.

Página 106 de 235


Italo Yaranga Vite

8. Diseñar un algoritmo que permita permita calcular la suma,suma de cuadrados de los N


primeros números naturales.

Solución:
*Análisis de datos
e:numnat(numeros naturales)
s:suma,sc(suma de cuadrados),scb(suma de cubos)

*Algoritmo
1.-inicio
2.-numnat=0,suma=0,sc=0,scb=0,i=0
3.-leer numnat
4.-para i=1 hasta numnat
suma=suma+i
sc=sc+cuadrado(i)
scb=scb+cubo(i)
fin de para
5.-escribir suma,sc,scb
6.-fin

*Prueba de escritorio
numnat=3
suma=3
sc=14
scb=36

*Implementación del algoritmo C++.

//libreria de e/s de datos por consola


#include <iostream.h>
#include <math.h>//funciones matematicas
//programa principal
main(){
//declarar variables
int numnat=0,suma=0,sc=0,scb=0,i=0;
//entrada de datos
cout<<"Ingresar Numero:";cin>>numnat;
//proceso de datos
for(i=1;i<=numnat;i++){
suma=suma+i;
sc=sc+pow(i,2);//cuadrado
scb=scb+(pow(i,2)*i);//cubo
}
//salida de datos
cout<<"La suma es:"<<suma<<endl;
cout<<"La suma de cuadrados es:"<<sc<<endl;
cout<<"La suma de cubos es:"<<scb<<endl;
system("PAUSE");
}//fin de programa

Página 107 de 235


Italo Yaranga Vite

*Ejecución del programa.

9. Diseñar un algoritmo que permita calcular el factorial de un números ingresado.

Solución:

*Análisis de datos
e:num(numero)
s:f(factorial)

*Algoritmo
1.-inicio
2.-num=0,f=0,i=0
3.-leer num
f=1
4.-para i=1 hasta num
f=f*i
fin de para
5.-escribir f
6.-fin

*Prueba de escritorio
n=5
f=120

Página 108 de 235


Italo Yaranga Vite
*Implementación del algoritmo C++.

//libreria de e/s de datos por consola


#include <iostream.h>
//programa principal
main(){
//declarar variables
int num=0,f=0,i=0;
//entrada de datos
cout<<"Ingresar Numero:";cin>>num;
//proceso de datos
f=1;
for(i=1;i<=num;i++){
f=f*i;
}
//salida de datos
cout<<"el factorial de "<<num<<" es: "<<f<<endl;
system("PAUSE");
}//fin de programa

*Ejecución del programa.

Página 109 de 235


Italo Yaranga Vite

10. Diseñar un algoritmo permita visualizar el promedio,la nota mayor y menor de n notas
generadas a la azar.
Solución:
*Algoritmo
1.-inicio
2.-nt=0,pnt=0.0,i=0,nota=0.0,ntmy=0.0,ntmn=0.0,snt=0.0
3.-leer nt
4.-ntmn=99
para i=1 hasta nt
nota=aleatorio()
snt=snt+nota
si nota>ntmy entonces
ntmy=nota
fin de si
si nota<ntmn entonces
ntmn=nota
fin de si
fin de para
pnt=snt/nt
5.-escribir pnt,ntmy,ntmn
6.-fin
*Implementación del algoritmo C++.
//libreria de e/s de datos por consola
#include <iostream.h> //permite brindar comandos de lectura y escritura
#include <cstdlib>//numeros aleatorios
//programa principal
main(){
//declarar variables
int nt,i;
double pnt=0.0,nota=0.0,ntmy=0.0,ntmn=0.0,snt=0.0;
//permite inicializar el tiempo a null a para utilizarlo en la funcion rand
srand(time(NULL));
//entrada de datos
cout<<"Cantidad de notas a procesar:";cin>>nt;
ntmn=99;
//proceso de datos
for(i=1;i<=nt;i++){
nota=1+rand()%20;
snt=snt+nota;
if(nota>ntmy){
ntmy=nota;
}
if(nota<ntmn){
ntmn=nota;
}
cout<<"Nota "<<i<<":"<<nota<<endl;
}
pnt=snt/nt;
//salida de datos
cout<<"Promedio de notas:"<<pnt<<endl;
cout<<"Nota mayor:"<<ntmy<<endl;
cout<<"Nota menor:"<<ntmn<<endl;
system("PAUSE");
}//fin del programa

Página 110 de 235


Italo Yaranga Vite

*Ejecución del programa.

Página 111 de 235


Italo Yaranga Vite

S SESION 05
Mientras, Permite realizar un
ciclo de repetiticiones mediante
unas candición.

Página 112 de 235


Italo Yaranga Vite

SESION 05

 ESTRUCTURAS REPETITIVAS CONDICIONALES

1. Diseñar un algoritmo que permita invertir una cantidad ingresada.

Solución:

*Análisis de datos
E:c(cantidad)
S:ci(cantidad invertida)

*Algoritmo
1.-inicio
2.-c=0,ci=0,dg=0
3.-leer c
mientras c>0
dg=residuo(c/10) //digito
ci=(ci * 10) + dg //cantidad invertida
c=entero(c/10) //cantidad actualizada
fin de mientras
4.-escribir ci
5.-fin

*Prueba de Escritorio
Cantidad: 123
Invertir la cantidad Ingresada: 321

*Implementación del algoritmo C++.

//librerias de entrada y salida de datos por consola


#include <iostream.h>
//procedimiento principal
int main(){
//declarar variables
int c=0,ci=0,dg=0;
//entrada de datos
cout<<"Ingresar cantidad:";cin>>c;
//proceso de datos
while(c>0){
dg=c%10;
ci=(ci*10)+dg;
c=c/10;
}//fin de while
//salida de datos
cout<<"Cantidad Invertida:"<<ci<<endl;
system("PAUSE");
}//fin de procedimiento

Página 113 de 235


Italo Yaranga Vite

*Ejecución del programa.

2. Diseñar un algoritmo que permita determinar el total a pagar de una compra, el precio
promedio, el precio mayor y la cantidad de compras. Ingresando nombre del producto,
precio y cantidad. El algoritmo preguntara al usuario si desea seguir comprando si/no.

Solución:
*Análisis de datos
E:p(producto),pc(precio),c(cantidad),rpta
S:cp(cantidad de compra),pp(precio promedio),pmy(precio mayor),tp(total pg)

*Algoritmo
1.-inicio
2.-p='',pc=0.0,c=0,rpta='',cp=0,pp=0.0,pmy=0.0,tp=0.0,sp=0.0
3.-hacer
cp=cp + 1 //cantidad de productos
leer p,pc,c
sp=sp + pc //acumulador de precios
//precio mayor
si pc>pmy entonces
pmy=pc
fin de si
tp=tp+(pc*c) //acumulador de total a pagar
escribir 'Desea continuar si/no'
leer rpta
mientras rpta='si'
//promedio de precio de producto
pp=sp/cp
4.-escribir cp,pp,pmy,tp
5.-fin

*Prueba de Escritorio
NRO PRODUCTO PRECIO CANTIDAD importe a pagar respuesta
1 a 10 2 20 si
2 b 20 4 80 si
3 c 30 6 180 no

Cantidad de productos:3, Promedio Precio : 20, Precio mayor:30, Total a Pagar:280

Página 114 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.

//librerias de entrada y salida de datos por consola


#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
//procedimiento principal
int main(){
//declarar variables
char p[20];
char rpta[2];
double pc=0.0,sp=0.0,pp=0.0,pmy=0.0,tp=0.0;
int c=0,cp=0;
//proceso de datos
do{
cp=cp+1; //cantidad de productos
cout<<"Ingresar producto:";cin>>p;
cout<<"Ingresar precio:";cin>>pc;
cout<<"Ingresar cantidad:";cin>>c;
sp=sp+pc; //acumulador de precios
if(pc>pmy){
pmy=pc;
}
tp=tp+(pc*c); //acumulador de total a pagar
cout<<"Desea seguir comprando [si/no]:";cin>>rpta;
}while(strcmp(rpta,"si")==0);
pp=sp/cp;
//salida de datos
cout<<"Cantidad de Productos :"<<cp<<endl;
cout<<"Precio promedio :";
cout<<fixed<<setprecision(2)<<pp<<endl;
cout<<"Precio mayor :"<<pmy<<endl;
cout<<"Total a pagar :";
cout<<fixed<<setprecision(2)<<tp;
getch();//permite leer un caracter del teclado
}//fin de procedimiento

*Ejecución del programa.

Página 115 de 235


Italo Yaranga Vite

3. Diseñe un programa que genere números aleatorios en el intervalo de -1000 a 1000 hasta
obtener un número par menor que 500 pero mayor que -500. ¿Cuántos números fueron
necesarios generar y cuáles fueron el mayor y el menor número generados?.

Solución:
*Analisis de Datos
E: Ninguna
S:conta,mayor,menor

*Algoritmo
1.- inicio
2.-conta=0,mayor=0,menor=0,numero=0
3.-hacer
numero = random(-1000,1000)// numero random desde -1000 hasta 1000
escribir 'Numero ' conta : numero
conta++
si (numero > mayor)
mayor = numero;
sino(numero < menor)
menor = numero;
fin de si
mientras(numero%2!=0 o numero <= -500 o numero >= 500)
4.- escribir conta,mayor,menor
5.-fin

*Prueba de escritorio

conta=? //este resultado sera de acuerdo a las cantidades aleatorias


mayor=? //este sera el numero aleatorio mayor
menor=? // este sera un numero aleatorio menor

Página 116 de 235


Italo Yaranga Vite
*Implementación del algoritmo C++.

//libreria de e/s de datos por consola


#include <iostream.h>
#include <conio.h>
#include <stdlib.h>

int main(){
//declarar variables
int numero=0, mayor=0,menor=0,conta=0;
cout<<""<<endl;
srand(time(NULL));
//proceso de datos
do{
numero = -1000+rand()%(1001+1000);
cout<<"Numero "<<conta<<" : "<<numero <<endl;
conta++;
if(numero > mayor){
mayor = numero;
}
if(numero < menor){
menor = numero;
}
}while(numero%2!=0 || numero <= -500 || numero >= 500);
//Salida de datos
cout<<""<<endl;
cout<<"-------------------------------------"<<endl;
cout<<"Cantidad de numeros generados : "<<conta<<endl;
cout<<"Mayor numero generado : "<<mayor<<endl;
cout<<"Menor numero generado : "<<menor<<endl;
cout<<"-------------------------------------"<<endl;
getch();
cout<<""<<endl;
cout<<"-------------------------------------------------------------------------------"<<endl;
main();
}//fin del programa

*Ejecución del programa.

Página 117 de 235


Italo Yaranga Vite

4. Diseñar un algoritmo que permita ingresar para los N alumnos de un aula de clases la edad
y su sexo (M ó F). Al final se deberá mostrar el porcentaje de varones y mujeres, así como
los promedios de edad de cada género.

Solución:

*Análisis de datos
E: s,edad,rpta
S: i,porv,porm,promm,promv

*Algoritmo
1.- Inicio
2.- s='',promm=0.0, promv=0.0, porm=0.0, porv=0.0, rpta=0, edad=0, i=0, summ=0.0,
nrom=0, sumv=0.0, nrov=0
3.- Mientras rpta <>0 hacer
i=i+1
leer s,edad
Si s='m' ó s='M' entonces
sumv=sumv+edad
nrov=nrov+1
Sino
summ=summ+edad
nrom=nrom+1
Fin de Si
leer rpta
Fin de Mientras
porv=division(nrov*100,i)
porm=division(nrom*100,i)
promm=division(summ,nrom)
promv=division(sumv,nrov)
4.- escribir i,porv,porm,promm,promv
5.- Fin

*Prueba de escritorio
s='M'
edad=15
rpta=1
s='M'
edad=12
rpta=1
s='F'
edad=17
rpta=1
s='M'
edad=14
rpta=1
s='F'
edad=16
rpta=0
i=5
porv=60
porm=40
promv=13
promm=16

Página 118 de 235


Italo Yaranga Vite
*Implementación del algoritmo en C++.

//libreria para e/s de datos por consola


#include <iostream.h>
//libreria del getch()
#include <conio.h>
//libreria para operaciones matematicas mas avanzadas
#include <math.h>
//funcion principal
int main(){
//declaracion de variables
char s;
double promm,promv,porm,porv;
int rpta,edad,i=0;
//inicializacion de sumadores y contadores
int summ=0,nrom=0;
int sumv=0,nrov=0;
//proceso de datos
//inicio del while
while (rpta!=0){//si el usuario decide ingresar más datos
i++;
cout<<"Alumno Nro "<<i<<" : ";
cout<<endl<<"Sexo (M-F) : ";cin>>s;
cout<<endl<<"Edad : ";cin>>edad;
if (s=='M' || s=='m'){//si ingresó masculino
sumv+=edad;//acumulador de la edad de los varones
nrov++;}//nro de varones aumenta en 1
else{//si ingresó masculino
summ+=edad;//acumulador de la edad de los varones
nrom++;}//nro de varones aumenta en 1
cout<<"¿Otro alumno?"<<"\nSi=1,No=0\n\nRpta : ";cin>>rpta;
}//fin del while
//procesando los datos ingresados
porv=nrov*100/i;
porm=nrom*100/i;
promm=summ/nrom;
promv=sumv/nrov;
//salida de datoa
cout<<"\t\tInforme final de alumnos\n\n";
cout<<"Total de alumnos : "<<i;
cout<<endl<<endl<<"Porcentaje de varones : "<<porv<<"%";
cout<<endl<<"Promedio de edad : "<<promv;
cout<<endl<<endl<<"Porcentaje de mujeres : "<<porm<<"%";
cout<<endl<<"Promedio de edad : "<<promm;
getch();
}//fin del main

Página 119 de 235


Italo Yaranga Vite

*Ejecución del programa.

Página 120 de 235


Italo Yaranga Vite
5. Diseñar un algoritmo que permita hallar el factorial o una potencia de un número n
ingresado por teclado. Manejar el programa mediante un menú.

Solución:

*Análisis de datos:
E: op,n,ex
S: r
*Algoritmo
1.- Inicio
2.- Mientras op<1 ó op>3 hacer
n=0,op=0,ex=0,r=0
escribir 'FACTORIAL - POTENCIA'
escribir '1.- Factorial'
escribir '2.- Potencia'
escribir '3.- Salir'
escribir 'Seleccione opcion : '
leer op
Segn sea(op)
caso 1: r=1
leer n
Para i=1 hasta n
r=r*i
Fin de Para
escribir
caso 2: leer n,ex
r = potencia(n,ex)
escrirbir n
caso 3: escribir 'Saliendo del programa'
Fin de Segun Sea
op=0
Fin de Mientras
3.- Fin

*Prueba de escritorio
op=1
n=6
r=720
op=2
n=5
ex=2
r=25
op=3

Página 121 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.

//libreria para e/s de datos por consola


#include <iostream.h>
#include <conio.h>
//libreria para finciones matematicas avanzadas
#include <math.h>
//programa principal
int main(){
//declaracion de variables
int n,r,ex,op;
//mientras que maneja un menú
while (op<1 || op>3){//mientras la variable op tenga un valor no válido para el menú
system("cls");//limpia la pantalla
cout<<"\t\tFACTORIAL - POTENCIA\n";
cout<<endl<<"1.- Factorial";
cout<<endl<<"2.- Potencia";
cout<<endl<<"3.- Salir";
cout<<endl<<endl<<"Seleccione opcion : ";
cin>>op;//lee la opcion del menu
//segun sea la opcion elegida
switch(op){
case 1: //opcion 1: hallar el factorial
system("cls");
r=1;
cout<<"Ingrese un numero : ";cin>>n;
for (int i=1;i<=n;i++)
r=r*i;
cout<<endl<<"El factorial de "<<n<<" es "<<r;
getch();
break;

case 2: //opcion 2: potencia


system("cls");
cout<<"Ingrese un numero como base : ";cin>>n;
cout<<endl<<"Ingrese un exponente : ";cin>>ex;
r=(int)pow(n,ex);
cout<<endl<<n<<" elevado a la "<<ex<<" es igual a "<<r;
getch();
break;

case 3: return 0;//opcion 3: no hace nada (solo sale del programa)


}//fin del segun sea
op=0;//para que vuelva a aparecer el menu
}//fin del mientras
}//fin de programa

Página 122 de 235


Italo Yaranga Vite
*Ejecución del programa.

Página 123 de 235


Italo Yaranga Vite

6. Diseñar un algoritmo que pide el año de nacimiento al usuario y calcule la edad del
mismo. Si el año de nacimiento introducido es posterior al año actual por error el
programa volverá a pedir el año de nacimiento correcto.

Solución:
*Analisis de datos
E:actual,edad
S:nacimiento

*Algoritmo
1.-inicio
2.-leer nacimiento
3.-edad=0,nacimiento=0
4.- mientras actual< nacimiento entonces
edad= actual-nacimiento
fin de mientras
5.-escribir edad
6.-fin

*Prueba de escritorio
nacimiento=1988
edad=24

*Implementación del algoritmo en C++.

#include <iostream.h>
#include <conio.h>
//programa principal
int main(){
// programa que pide el año de nacimiento al usuario y cacula la edad del mismo//
int actual=2012, nacimiento, edad;
cout<<" Inserte su año de nacimiento:";cin>>nacimiento;
while ( actual< nacimiento){
cout<<" vuelva a insertar su año de nacimiento:";cin>>nacimiento;
}
edad= actual-nacimiento;
cout<< " Su edad es: " << edad<<" años";
getch();
}//fin del programa

Página 124 de 235


Italo Yaranga Vite
*Ejecución del programa.

7. Diseñar un algoritmo que mediante un numero entero positivo ingresado,se desea


averiguar si es capicua(abc=cba).

Solución:

*Analisis de datos
E:num(numero ingresado)
S:inv(inverso del numero),m(mensaje)

*Algoritmo
1.-inicio
2.-r=0,u=0,inv=0,num=0
3.-leer num
4.-u=num;
hacer mientras(u!=0)
r=u%10
u=u/10
inv=inv*10+r
fin de hacer mientras
si num=inv entonces
m= ‘es capicua’
sino
m =‘no es capicua’
fin de si
5.-fin

*Prueba de Escritorio
inv=131
m= ‘es capicua’

Página 125 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.

//librerias de e/s de datos por consola


#include<iostream.h>
#include<conio.h>
//procedimiento principal
int main(){
//declaracion de variables
int num,inv=0,r,u;
char m[20];
cout<<"Escriba el numero que desea saber si es capicua:";cin>>num;
u=num;//reserbamos num para compararlo con el inverso
do{ r=u%10;
u=u/10;
inv=inv*10+r;//calculo del inverso
}while(u!=0);//limite
//si el numero es igual a su inverso son capicuas
if(inv==num){
strcpy(m,"es capicua");
}else{
strcpy(m,"no es capicua");
}
//salida de datos
cout<<"inv:"<<inv<<endl;
cout<<"El numero es:"<<m<<endl;
getch();
}//fin de programa

*Ejecución del programa

Página 126 de 235


Italo Yaranga Vite
8. Diseñar un algoritmo que permita determinar la suma N primeros términos de la siguiente
serie.

1/2+1/4+1/6+……..

Solución:

*Analisis de datos
E:nt(numero de terminos)
S:sumainv(numero de pares invertidos)

*Algoritmo
1.-inicio
2.-nt=0,sumainv=0.0,par=0.0,cont=0.0
3.-leer nt
4.-sumainv=0
par=2
cont=1
mientras cont<=nt
sumainv=sumainv+1/par
par=par+2
cont=cont+1
fin mientras
5.-escribir sumainv
6.-fin

*Prueba de Escritorio
n=3
sumainv=0.9166

*Implementación del algoritmo en C++.

//librerias de e/s de datos por consola


#include<iostream.h>
//procedimiento principal
int main(){
//declaracion de variables
int nt=0;
double sumainv=0.0,par=2,cont=0;
//entrada de datos
cout<<"Ingresar N primeros numeros:";cin>>nt;
//proceso de datos
par=2;
cont=1;
while(cont<=nt){
sumainv=sumainv+(1/par);
par=par+2;
cont=cont+1;
}//fin de while
//salida de datos
cout<<"La suma es:"<<sumainv<<endl;
system("PAUSE");
}//fin de programa

Página 127 de 235


Italo Yaranga Vite

*Ejecución del programa

9. Diseñar un algoritmo que permita determinar las cantidad y la suma de los dígitos que ahí
en una cantidad ingresada.
.
Solución:

*Análisis de datos
E:c(cantidad)
S:sd(suma de digitos),cd(cantidad de digitos)

*Algoritmo
1.-inicio
2.-c=0,sd=0,dg=0,cd=0
3.-leer c
mientras c>0
dg=residuo(c/10) //digito
sd=sd+dg //suma sde digitos
cd=cd+1
c=entero(c/10) //cantidad actualizada
fin de mientras
4.-escribir sd,cd
5.-fin

*Prueba de Escritorio
Cantidad: 1234
sd=10
cd=4

Página 128 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.

//librerias de entrada y salida de datos por consola


#include <iostream.h>
//procedimiento principal
int main(){
//declarar variables
int c=0,cd=0,sd=0,dg=0;
//entrada de datos
cout<<"Ingresar cantidad:";cin>>c;
//proceso de datos
while(c>0){
dg=c%10;//digito
sd=sd+dg;//suma de digitos
cd=cd+1;//cantidad de digitos
c=int(c/10);//actualiza el la cantida ingresada
}//fin de while
//salida de datos
cout<<"Suma de digitos:"<<sd<<endl;
cout<<"Cantidad de digitos:"<<cd<<endl;
system("PAUSE");
}//fin de procedimiento

*Ejecución del programa

Página 129 de 235


Italo Yaranga Vite

10.- Diseñar un algoritmo que permita determinar el digito mayor y menor de una cantidad
ingresada.

Solución:

*Análisis de datos
E:c(cantidad)
S:dmy(digito mayor),dmn(digito menor)

*Algoritmo
1.-inicio
2.-c=0,dmy=0,dmn=0,dg=0
3.-leer c
mientras c>0
dg=residuo(c/10) //digito
//digito mayor
si dg>dmy entonces
dmy=dg
fin de si
//digito menor
si dg<dmn entonces
dmn=dg
fin de si
c=entero(c/10) //cantidad actualizada
fin de mientras
4.-escribir dmy,dmn
5.-fin

*Prueba de Escritorio
Cantidad: 4321
dmy=4
dmn=1

Página 130 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.

//librerias de entrada y salida de datos por consola


#include <iostream.h>
//procedimiento principal
int main(){
//declarar variables
int c=0,dmy=0,dmn=0,dg=0;
dmn=99;//inicializa a un valor mayor
//entrada de datos
cout<<"Ingresar cantidad:";cin>>c;
//proceso de datos
while(c>0){
dg=c%10;//digito
//digito mayor
if(dg>dmy){
dmy=dg;//cantidad de digitos
}
//digito menor
if(dg<dmn){
dmn=dg;//cantidad de digitos
}
c=int(c/10);
}//fin de while
//salida de datos
cout<<"Digito mayor es:"<<dmy<<endl;
cout<<"Digito menor es:"<<dmn<<endl;
system("PAUSE");
}//fin de procedimiento

*Ejecución del programa

Página 131 de 235


Italo Yaranga Vite

S SESION 06
Procedimiento es un

subalgoritmo que permite

realizar una tarea que se utilizar

con frecuencia.

Página 132 de 235


Italo Yaranga Vite

SESION 06

 SUBALGORITMO PROCEDIMIENTOS

1. Diseñar un algoritmo que permite realizar una simulación de un cajero automático.

* El usuario realiza un depósito con una cantidad entera.


* El usuario realiza un retiro menor igual que el monto depositado.
* El monto retirado tiene que ser múltiplo de 20
* El algoritmo finaliza hasta que el saldo sea 0 y mayor igual a 20

Solución:

*Análisis de datos
E:dp(deposito),mr(monto a retirar)
S:s(saldo)

//procedimiento deposito
procedimiento deposito(xdp entero)
mr=0,r=0
mientras xdp>0
escribir 'Ingresar monto a retirar:'
leer mr;
r=residuo(mr/20); //multiplo de 20
si r=0 y mr<=xdp entonces
xdp=xdp-mr;
//salida de datos
escribir 'Saldo:',xdp;
sino
escribir 'Valor Incorrecto:',xdp;
fin de si
fin de mientras
fin de procedimiento

*Algoritmo
1.-inicio
2.-dp=0
3.-leer dp
4.-deposito(dp) //invocar al procedimiento
5.-fin

*Prueba de Escritorio
dp=860
mr=900
mr=400
mr=150
mr=460
xdp=0

Página 133 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.

//libreria de e/s de datos por consola


#include <iostream.h>
//procedimiento deposito
void deposito(int xdp){
int mr=0,r=0;
while(xdp>0){
cout<<"Ingresar monto a retirar:";cin>>mr;
r=mr%20; //multiplo de 20
if(r==0 && mr<=xdp){
xdp=xdp-mr;
//salida de datos
cout<<"Saldo:"<<xdp<<endl;
}else{
cout<<"Valor Incorrecto:"<<xdp<<endl;
}//fin if
}//fin while
}//fin de proc
//programa principal
main(){
//declarar variables
int dp,dp2;
//entrada de datos
cout<<"Ingresar deposito 1:";cin>>dp;
//invocar al procedimiento
deposito(dp);
cout<<"------------------------"<<endl;
cout<<"Ingresar deposito 2:";cin>>dp2;
deposito(dp2);
system("PAUSE");
}//fin de programam

*Ejecución del programa.

Página 134 de 235


Italo Yaranga Vite

2. Diseñar un procedimiento que permita generar una fecha siguiente a la fecha ingresadas en
formato día, mes y año.

Solución:
*Análisis de datos
E:d1,m1,a1
S:fechaActual

procedimiento genfecha(d: entero,m: entero,a: entero)


diamax=0
//proceso de datos
Según sea m
caso 1:
caso 3:
caso 5:
caso 7:
caso 8:
caso 10:
caso 12:
diamax=31
caso 4:
caso 6:
caso 9:
caso 11:
diamax=30
caso 2:
si((residuo(a/4)==0 y residuo(a/100)!=0) o residuo(a/400)=0) entonces
diamax=29
sino
diamax=28
fin de si
fin de segùn
si((d>0 y d<=diamax) y (m>0 y m<13) y (a>0)) entonces
//contempla año
si d=diamax y m=12 entonces
d=1
m=1
a=a+1
sino
si d=diamax y m<12 entonces
d=1
m=m+1
sino
d=d+1
fin de si
fin de si
fin de si
escribir d,’/’,m,’/’,a
}//fin de procedimiento

Página 135 de 235


Italo Yaranga Vite

*Algoritmos
1.-inicio
2.-d1=0,m1=0,a1=0
3.-leer d1,m1,a1
4.- si((d1>0 y d1<=31) y (m1>0 y m1<=12) y a1>0) entonces
genfecha(d1,m1,a1)
sino
escribir ‘La fecha Ingresada es Incorrecta’
fin de si
5.-fin
*Prueba de Escritorio
d=9
m=9
a=2012
fechaactual=10/9/2012

*Implementación del algoritmo C++.

/*
Diseñar un procedimiento que permita generar una fecha siguiente a la fecha ingresadas
en formato día, mes y año.
*/
//librería de entrada y salida de datos por consola
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
void genfecha(int d,int m,int a){
int diamax;
//proceso de datos
switch(m){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
diamax=31;
break;
case 4:
case 6:
case 9:
case 11:
diamax=30;
break;
case 2:
if(((a%4)==0 && (a%100)!=0) || (a%400)==0){
diamax=29;
}else{
diamax=28;
}
break;
}//fin switch

Página 136 de 235


Italo Yaranga Vite

if((d>0 && d<=diamax) && (m>0 && m<13) && (a>0)){


//contempla año
if(d==diamax && m==12){
d=1;
m=1;
a++;
}
else{
if(d==diamax && m<12){
d=1;
m++;
}
else{
d++;
}
}
}
cout<<d<<"/"<<m<<"/"<<a;
}//fin de procedimiento

int main(){
//declarar variables
int d1,m1,a1;
//entrada de datos
cout<<"Ingresa el dia :";cin>>d1;
cout<<"Ingresa el mes :";cin>>m1;
cout<<"Ingresa el año :";cin>>a1;
if((d1>0 && d1<=31) && (m1>0 && m1<=12) && a1>0){
genfecha(d1,m1,a1);
}else{
cout<<"La fecha Ingresada es Incorrecta";
}//fin if
getch();//permite leer un caracter del teclado
}//fin de procedimiento principal

*Ejecución del programa.

Página 137 de 235


Italo Yaranga Vite

3. Diseñar un procedimiento que permita generar la tabla de multiplicar de un número


ingresado.

Solución:
*Análisis de datos
e:n(numero)
s:resultados
procedimiento mtabla(xn:entero)
r=0,i=0
para i=1 hasta 12
r=n * i
escribir n,'*',i,'=',r
fin de para
fin procedimiento
*Algoritmo
1.-inicio
2.-n=0
3.-leer n
4.-mtabla(n)
5.-fin

*Prueba de Escritorio
n=5
5*1=5
5*2=10
.
5*12=60
*Implementación del algoritmo C++.
//libreria de e/s de datos por consola
#include <iostream.h>
//procedimiento mtabla
void mtabla(int xn){
int r=0,i=0;
for(i=1;i<=12;i++){
r=xn * i;
cout<<xn<<"*"<<i<<"="<<r<<endl;
} //fin for
}//fin proc
//programa principal
main(){
//declarar variables
int n=0,n1=0;
//entrada de datos
cout<<"Ingresar Numero 1:";cin>>n;
//invocar al proc
mtabla(n);
cout<<endl;
cout<<"----------------------";
cout<<endl;
cout<<"Ingresar Numero 2:";cin>>n1;
mtabla(n1);
system("PAUSE");
}//fin de programa

Página 138 de 235


Italo Yaranga Vite

*Ejecución del programa

4. Diseñar un procedimiento que permita visualizar las cantidad y la suma de los dígitos que
ahí en una cantidad ingresada.

Solución:
*Análisis de datos
E:c(cantidad)
S:sd(suma de digitos),cd(cantidad de digitos)

procedimiento digitos(c)
sd=0,cd=0
mientras c>0
dg=residuo(c/10) //digito
sd=sd+dg //suma sde digitos
cd=cd+1
c=entero(c/10) //cantidad actualizada
fin de mientras
escribir sd,cd
fin procedimiento

*Algoritmo
1.-inicio
2.-c=0
3.-leer c
4.-digitos(c)
5.-fin

*Prueba de Escritorio
Cantidad: 123
sd=6
cd=3

Página 139 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.


//libreria de e/s de datos por consola
#include <iostream.h>
void digitos(int c){
int sd=0,cd=0,dg=0;
while(c>0){
dg=c%10; //digito
sd=sd+dg; //suma sde digitos
cd=cd+1;
c=int(c/10); //cantidad actualizada
}
cout<<"La suma de los digitos es:"<<sd<<endl;
cout<<"La cantidad de digitos es:"<<cd<<endl;
}//fin de programa
//programa principal
main(){
//declarar variables
int c;
//entrada de datos
cout<<"Ingresar numero:";cin>>c;
//invocar al procedimiento
digitos(c);
system("PAUSE");
}//fin del programam

*Ejecución del programa

Página 140 de 235


Italo Yaranga Vite
5. Digite un numero entero positivo de tres cifras luego visualice el nuevo formado por sus
cifras extremas y la inversa de dicho numero, mediante procedimentos.

Solución:
*Analisis de datos
E:num
S:m,n

procedimiento Cambio(entero num)


a=0,b=0,r=0,m=0,n=0
a=entero(num/100)
r=residuo(num/100)
b=residuo(r/10)
m=10*a +b;
n=10*b +a;
escribir 'Numero formado por las cifras extremas',m
escribir 'Numero inverso ',n
fin procedimiento

*Algoritmo
1.-inicio
2.-num=0
3.-leer num
4.-Cambio(num)
5.-fin

*Prueba de escritorio
num=246
m=26
n=62

*Implementación del algoritmo en C++.


//libreria de e/s de datos por consola
#include <iostream.h>
//procedimiento cambio
void Cambio(int num){
int a,b,r,m,n;
a=int(num/100);
r=num%100;
b=r%10;
m=10*a +b;
n=10*b +a;
cout<<"Numero formado por las cifras extremas :"<<m<<endl;
cout<<"Numero invers :"<<n<<endl;
}
//procedimiento principal
int main(){
int n;
//entrada de datos
cout<<"Ingrese un numero de tres cifras entero:";cin>>n;
//salida
Cambio(n);
system("PAUSE");
}//fin de programa

Página 141 de 235


Italo Yaranga Vite

*Ejecución del programa

6. Mediante el uso de procedimientos , muestre los primeros multiplos de n

Solución:

*Analisis de Datos
E:m,n
S:multiplos

procedimiento Multiplos(n:entero)
i=0
escribir 'Los Multiplos del ',n,'son'
para i desde 0 hasta m
escribir i,'X',n,'=',i*n
fin de para
fin procedimiento

*Algoritmo
1.-inicio
2.-n=0
3.-leer n
4.-multiplos(n)
5.-fin

*Prueba de escritorio
n=3
0*3=0
1*3=3
2*3=6
3*3=9

Página 142 de 235


Italo Yaranga Vite
*Implementación del algoritmo en C++.
//libreria de entrada y salida de datos por consola
#include <iostream.h>
//procedimiento Multiplos
void Multiplos(int n){
int i;
cout<<"Los Multiplos del "<<n<<" son:"<<endl;
for(i=0;i<=n;i++){
cout<<i<<"X"<<n<<"="<<i*n<<endl;
}
}//fin procedimiento
//programa principal
main(){
int m,n;
cout<<"Ingrese el numero :";
cin>>n;
Multiplos(n);
system("PAUSE");
}//fin de programa

*Ejecución del programa

Página 143 de 235


Italo Yaranga Vite

7. Diseñar un procedimientos que encuentre los divisores comunes de dos números.

Solución:
*Analisis de Datos
E:a,b
S:(divisores comunes)
procedimiento Divisores(entero a,entero b){
i=1
mientras(i<=a y i<=b) entonces
si(residuo(a/i)=0 y residuo(b/i)=0) entonces
escribir ' ',i
fin de si
i=i+1
fin de mientras
fin procedimento
*Algoritmo
1.-inicio
2.-a=0,b=0
3.-leer a,b
4.-escrbir'los divisores comunes son'
5.-divisores(a,b)
6.-fin

*Prueba Escritorio
a=25
b=60
1 , 5

*Implementación del algoritmo en C++.

#include <iostream.h>
//procedimiento Divisores
void Divisores(int a,int b){
int i=1;
while(i<=a && i<=b){
if(a%i==0 && b%i==0){
cout<<" "<<i<<endl;
}//fin if
i=i+1;
}//fin while
}//fin procedimento
//progrsms principal
main(){
//declarar variables
int a,b;
cout<<" Divisores comunes de dos numeros "<<endl;
cout<<"Ingrese el primer numero :";
cin>>a;
cout<<"Ingrese el segundo numero :";
cin>>b;
cout<<"Los divisores comunes son "<<endl;
//invoca al procedimiento
Divisores(a,b);
system("PAUSE");
}//fin de programa

Página 144 de 235


Italo Yaranga Vite

*Ejecución del programa

Página 145 de 235


Italo Yaranga Vite

8. Diseñar un procedimiento que permita escribir los numeros pares entre dos numeros de
manera descendente.

Solución:
*Analisis de datos
E:a(numero inicial),an(numero final)
S:np(numeros pares)

procedimiento pares(xa:entero,xan:entero)
si residuo(an/2)=0 entonces
mientras xan>xa
xan=xan-2
si xan>xa entonces
escribir xan
sino
escribir''
fin de si
fin de mientras
sino
mientras xan>xa
xan=xan-1
si xan>xa entonces
escribir xan
sino
escribir''
fin de si
fin de mientras
fin de procedimiento

*Algoritmo
1.-inicio
2.-a=0,an=0 np=0
3.-leer a,an
4.-pares(a,an)
5.-fin

*Prueba de Escritorio
a=20
an=35

34,32,30,28,26,24,22,

Página 146 de 235


Italo Yaranga Vite
*Implementación del algoritmo C++.
//libreria de entrada y salida de datos
#include <iostream.h>
#include <conio.h>
//procedimiento
void secuencia(int xa,int xan){
while (xan>xa){
if (xan%2==0){
xan=xan-2;
if (xan>xa){
cout<<""<<xan<<",";
}else{
xan=xa-1;
}//fin de si
}else{
xan=xan-1;
if (xan>xa){
cout<<""<<xan<<",";
}else{
xan=xa-1;
}//fin de si
}//fin de si
}//fin de mientras
}//fin de procedimiento
//procedimiento principal
int main(){
//declarar variables
int a,an;
//entrada de datos
cout<<"Ingresar Primer Numero: ";cin>>a;
cout<<"Ingresar Ultimo Numero: ";cin>>an;
cout<<""<<endl;
if (a>0&&an>a){
secuencia(a,an);
}else{
cout<<"Numero Ingresados Incorrectos"<<endl;
}//fin de si
getch();//permite leer un caracter
}//fin de procedimiento

Página 147 de 235


Italo Yaranga Vite

*Ejecución del programa

Página 148 de 235


Italo Yaranga Vite
9. Diseñar un algoritmo que imprima los divisores de un numero ingresado por el usuario.

Solución:
*Análisis de datos:
E:n, i
S:d

Procedimiento pdivisores(nx:entero):real
i=0, d=0.0
mientras (i<=nx)
si (nx%i==0) entonces
d=i
fin de si
i=i+1
escribir d
fin de mientras
fin de procedimiento

*Algoritmo:
1.-inicio
2.-n=0
3.-leer n
4.-pdivisores(n)
5.-fin

*Prueba de escritorio:
n=10
d=1
d=2
d=5
d=10

Página 149 de 235


Italo Yaranga Vite

*Implementación del algoritmo en C++.


#include <iostream.h>
#include <conio.h>
void pdivisores(int nx){
int i, re;
double d;
i=1;
while(i<=nx){
re=nx%i;
if(re==0){
d=i;
cout<<d<<" es divisor de "<<nx<<endl;
}
i++;
}
}
//programa principal
main(){
int n;
cout<<"Ingrese el numero que desee conocer sus divisores: ";cin>>n;
pdivisores(n);
getch();
}//fin de programa

*Ejecución del programa

Página 150 de 235


Italo Yaranga Vite
10. Diseñar un algoritmo que transforme un número introducido por teclado en notación
decimal a notación romana. El número será entero positivo y no excederá de 3000.

Solución:
*Análisis de datos
E: n(número)
S: el número expresado en notación romana

procedimiento calccifrarom(d1:entero,d2:entero,d3:entero,d4:entero)
i='', j='', k='', h=''
según sea d1
caso 0
i=''
caso 1
i='M'
caso 2
i='MM'
caso 3
i='MMM'
fin de según
según sea d2
caso 0
j=''
caso 1
j='C'
caso 2
j='CC'
caso 3
j='CCC'
caso 4
j='CD'
caso 5
j='D'
caso 6
j='DC'
caso 7
j='DCC'
caso 8
j='DCCC'
caso 9
j='CM'
fin de según

Página 151 de 235


Italo Yaranga Vite

según sea d3
caso 0
k=''
caso 1
k='X'
caso 2
k='XX'
caso 3
k='XXX'
caso 4
k='XL'
caso 5
k='L'
caso 6
k='LX'
caso 7
k='LXX'
caso 8
k='LXXX'
caso 9
k='XC'
fin de según
según sea d4
caso 0
h=''
caso 1
h='I'
caso 2
h='II'
caso 3
h='III'
caso 4
h='IV'
caso 5
h='V'
caso 6
h='VI'
caso 7
h='VII'
caso 8
h='VIII'
caso 9
h='IX'
fin de según
escribir'Notación Romana', i,j,k,h
fin de procedimiento

Página 152 de 235


Italo Yaranga Vite

*Algortimo
1.-inicio
2.-n=0,d1=0,d2=0,d3=0,d4=0,r=0
3.-leer n
4.-r=n
si (r>=1000 y r<=3000) entonces
d1=entero(r/1000)
r=residuo(r/1000)
sino
d1=0
fin de si
si (r>=100 y r<1000) entonces
d2=entero(r/100)
r=(residuo(r/100)
sino
d2=0
fin de si
si (r>=10 y r<100) entonces
d3=entero(r/10)
r=residuo(r/10)
sino
d3=0
fin de si
si (r>0 y r<10) entonces
d4=r
sino
d4=0
fin de si
calccifrarom(d1,d2,d3,d4)
5.-fin

*Prueba de Escritorio
n=2155
Notación Romana: MMCLV

Página 153 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.


//librería de entrada y salida de datos
#include <iostream.h>
#include <conio.h>
//procedimiento calccifrarom
void calccifrarom(int d1,int d2,int d3,int d4){
char i[20];
char j[20];
char k[20];
char h[20];
switch(d1){
case 0:strcpy(i,"");break;
case 1:strcpy(i,"M");break;
case 2:strcpy(i,"MM");break;
case 3:strcpy(i,"MMM");break;
} //fin de switch
switch(d2){
case 0:
strcpy(j,"");
break;
case 1:
strcpy(j,"C");
break;
case 2:
strcpy(j,"CC");
break;
case 3:
strcpy(j,"CCC");
break;
case 4:
strcpy(j,"CD");
break;
case 5:
strcpy(j,"D");
break;
case 6:
strcpy(j,"DC");
break;
case 7:
strcpy(j,"DCC");
break;
case 8:
strcpy(j,"DCCC");
break;
case 9:
strcpy(j,"CM");
} //fin de switch

Página 154 de 235


Italo Yaranga Vite

switch(d3){
case 0:strcpy(k,"");break;
case 1:strcpy(k,"X");break;
case 2:strcpy(k,"XX");break;
case 3:strcpy(k,"XXX");break;
case 4:strcpy(k,"XL");break;
case 5:strcpy(k,"L");break;
case 6:strcpy(k,"LX");break;
case 7:strcpy(k,"LXX");break;
case 8:strcpy(k,"LXXX");break;
case 9:strcpy(k,"XC");
} //fin de switch
switch(d4){
case 0:
strcpy(h,"");
break;
case 1:
strcpy(h,"I");
break;
case 2:
strcpy(h,"II");
break;
case 3:
strcpy(h,"III");
break;
case 4:
strcpy(h,"IV");
break;
case 5:
strcpy(h,"V");
break;
case 6:
strcpy(h,"VI");
break;
case 7:
strcpy(h,"VII");
break;
case 8:
strcpy(h,"VIII");
break;
case 9:
strcpy(h,"IX");
} //fin de switch
cout<<""<<endl;
cout<<"Notacion Romana"<<endl;
cout<<"---------------* "<<i<<j<<k<<h;
}//fin de procedimiento cout<<""<<endl;
cout<<"Notacion Romana"<<endl;
cout<<"---------------* "<<i<<j<<k<<h;
}//fin de procedimiento

Página 155 de 235


Italo Yaranga Vite

//procedimiento principal
int main(){
//declarar variables
int n,r,d1,d2,d3,d4;
//proceso de datos
cout<<"Ingresar el numero: ";cin>>n;
r=n;
if(r>=1000 && r<=3000){
d1=r/1000;
r=r%1000;
}else{
d1=0;
}
if(r>=100 && r<1000){
d2=r/100;
r=r%100;
}else{
d2=0;
}
if(r>=10 && r<100){
d3=r/10;
r=r%10;
}else{
d3=0;
}
if(r>0 && r<10){
d4=r;
}else{
d4=0;
}
calccifrarom(d1,d2,d3,d4); //invocar procedimiento
getch();
} //fin de procedimiento principal

*Ejecución del programa

Página 156 de 235


Italo Yaranga Vite

S SESION07
Las función son rutinas que

procesan datos y retornar un

resultado.

Página 157 de 235


Italo Yaranga Vite

SESION 07

 SUBALGORITMO FUNCIONES

1. Diseñar las funciones que permita determinar el promedio de tres notas ingresadas de
un alumno, la condición (‘aprobado’, ‘desaprobado’), estado.

Condición
Promedio >=10.5 ‘aprobado’ ,’desaprobado’

Estado
<=5 “pesimo”
<=10 “malo”
<=15 "regular"
<=18 “bueno”
<=20 “excelente”

Solución:
*Análisis de datos
E:nt1,nt2,nt3
S:p(promedio),c(condiciòn),e(estado)

funcion fpromedio(xnt1:real,xnt2:real,xnt3:real):real
retornar(xnt1+xnt2+xnt3)/3
fin funcion

funcion fcondicion(xp:real):cadena
c=' '
si xp>=10.5 entonces
c='aprobado'
sino
c='desaprobado'
fin de si
retornar(c)
fin funcion
funcion festado(xp1:real):cadena
e=''
si xp1<=5 entonces
e='pésimo'
sino si xp1<=10 entonces
e='malo'
sino si xp1<=15 entonces
e='regular'
sino si xp1<=18 entonces
e='bueno'
sino si xp1<=20 entonces
e='excelente'
fin de si
retornar(e)
fin funcion

Página 158 de 235


Italo Yaranga Vite

*Algoritmo
1.-inicio
2.-nt1=0.0,nt2=0.0,nt3=0.0,p=0.0,condicion='',estado='',
3.-leer nt1,nt2,nt3
4.-p=fpromedio(nt1,nt2,nt3)
condicion=fcondicion(p)
estado=festado(p)
5.-escribir p,condicion,estado
6.-fin

*Prueba de Escritorio
nt1=12.0
nt2=13.0
nt3=15.0
p=13.33
condición='Aprobado'
estado='Regular’

*Implementación del algoritmo C++.


//librerias de e/s de datos por consola
#include <iostream.h>
#include <conio.h>
#include <iomanip.h> //permite disminuir decimales
//función fpromedio
double fpromedio(double xnt1,double xnt2,double xnt3){
return(xnt1+xnt2+xnt3)/3;
}//fin de la funcion

//función fcondicion
char* fcondicion(double xp){
char c[20];
if(xp>=10.5){
strcpy(c,"Aprobado");
}else{
strcpy(c,"Desaprobado");
}
return(c);
}//fin funcion
//funcion festado
char* festado(double xp1){
char e[20];
if(xp1<=5){
strcpy(e,"pesimo");
}else if(xp1<=10){
strcpy(e,"malo");
}else if(xp1<=15){
strcpy(e,"regular");
}else if(xp1<=18){
strcpy(e,"bueno");
}else if(xp1<=20){
strcpy(e,"excelente");
}//fin if
return(e);
}//fin de función

Página 159 de 235


Italo Yaranga Vite

//procedimiento principal
int main(){
//declarar variables
double nt1,nt2,nt3,p
char condicion[20];
char estado[20];
//entrada de datos
cout<<"Ingresar Nota 1:";cin>>nt1;
cout<<"Ingresar Nota 2:";cin>>nt2;
cout<<"Ingresar Nota 3:";cin>>nt3;
//invocar a las funciones
//strcpy(puntero,var)
p=fpromedio(nt1,nt2,nt3);
strcpy(condicion,fcondicion(p));
strcpy(estado,festado(p));
//salida de datos
cout<<"El promedio es:"<<p<<endl;
cout<<"La condicón es:";
cout<<fixed<<setprecision(2)<<condicion<<endl;
cout<<"El estado es:"<<estado<<endl;
getch();
}//fin de procedimiento

*Ejecución del programa

Página 160 de 235


Italo Yaranga Vite

2. Diseñar las funciones que permita determinar la nota mayor y menor de cuadro nota
ingresadas.

Solución:
*Análisis de datos
e:nt1,nt2,nt3
s:nmayor,nmenor

funcion fmayor(xnt1:real,xnt2:real,xnt3:real):real
nmy=0
nmy=xn1
si xn2>nmy entonces
nmy=xnt2
fin de si
si xn3>nmy entonces
nmy=xnt3
fin de si
retornar(nmy)
fin funcion

funcion fmenor(xnt1:real,xnt2:real,xnt3:real):real
nmn=0
nmn=xn1
si xn2<nmn entonces
nmn=xnt2
fin de si
si xn3<nmn entonces
nmn=xnt3
fin de si
retornar(nmn)
fin funcion

*Algoritmo
1.-inicio
2.-nt1=0.0,nt2=0.0,nt3=0.0,p=0.0,nmayor=0.0,nmenor=0.0
3.-leer nt1,nt2,nt3
4.-nmayor=fmayor(nt1,nt2,nt3)
nmenor=fmenor(nt1,nt2,nt3)
5.-escribir nmayor,nmenor
6.-fin

*Prueba de Escritorio
nt1=12
nt2=14
nt3=16
nmayor=16
nmenor=12

Página 161 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.

//funcion mayor
double fmayor(double xnt1,double xnt2,double xnt3){
double nmy;
nmy=xnt1;
//nota mayor
if(xnt2>nmy){
nmy=xnt2;
}
if(xnt3>nmy){
nmy=xnt3;
}
return(nmy);
}//fin de la funcion
//funcion fmenor
double fmenor(double xnt1,double xnt2,double xnt3){
double nmn;
nmn=xnt1;
//nota mayor
if(xnt2<nmn){
nmn=xnt2;
}
if(xnt3<nmn){
nmn=xnt3;
}
return(nmn);
}//fin de la funcion

//procedimiento principal
int main(){
//declarar variables
double nt1,nt2,nt3,p;
double mayor,menor;
//entrada de datos
cout<<"Ingresar Nota 1:";cin>>nt1;
cout<<"Ingresar Nota 2:";cin>>nt2;
cout<<"Ingresar Nota 3:";cin>>nt3;
//invocar a las funciones
mayor=fmayor(nt1,nt2,nt3);
menor=fmenor(nt1,nt2,nt3);
//salida de datos
cout<<"Nota mayor es:"<<mayor<<endl;
cout<<"Nota menor es:"<<menor<<endl;
system("PAUSE");
}//fin de procedimiento

Página 162 de 235


Italo Yaranga Vite
*Ejecución del programa.

3. Diseñar una función que indique si un número entero positivo ingresado es


capicua(abc=cba).
Solución:
*Análisis de datos
e: n(número)
s:m(mensajes)

funcion fcapicua(xu:entero):cadena
r=0,inv=0
xm=''
xnum=xu //almaceno el número ingresado para compararlo
mientras(xu!=0)
r=residuo(xu/10)
xu=xu/10
inv=inv*10+r
fin de mientras
si xnum=inv entonces
xm='es capicua'
sino
xm ='no es capicua'
fin de si
retornar(xm)
fin de funcion

*Algoritmo
1.-inicio
2.-n=0,m=''
3.-leer n
4.-m=fcapicua(n)
5.-escribir m
6.-fin

*Prueba de Escritorio
n=123
m='no es capicua'

Página 163 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.

#include <iostream.h>
//funcion capicua
char *fcapicua(int xu){
int r=0,inv=0,xnum=0;
char xm[20];
xnum=xu; //almaceno el número ingresado para compararlo
while(xu!=0){
r=xu%10;
xu=xu/10;
inv=(inv*10)+r;
}//fin while
if(xnum==inv){
strcpy(xm,"es capicua");
}else{
strcpy(xm,"no es capicua");
}
return(xm);
}//fin de funcion
//programa principal
main(){
//declarar variables
int n=0;
char m[20];
//entrada de datos
cout<<"Ingresar numero:";cin>>n;
//invocar a la función
strcpy(m,fcapicua(n));
//salida de datos
cout<<m<<endl;
system("PAUSE");
}//fin dee programa

*Ejecución del programa

Página 164 de 235


Italo Yaranga Vite
4. Diseñar una funcion que permita calcular el factorial de un números ingresado.

Solución:

*Análisis de datos
e:num(numero)
s:f(factorial)

función ffactorial(xnum:entero):entero
xf=0
xf=1
para i=1 hasta xnum
xf=xf * i
fin de para
retornar(xf)
fin de funcion

*Algoritmo
1.-inicio
2.-num=0,fact=0
3.-leer num
4.-fact =ffactorial(num)
5.-escribir fact
6.-fin

*Prueba de escritorio
n=5
f=120

*Implementación del algoritmo C++.

//libreria de e/s de datos por consola


#include <iostream.h>
//funcion ffactorial
int ffactorial(int xnum){
int xf=0,i;
xf=1;
for(i=1;i<=xnum;i++){
xf=xf * i;
}
return(xf);
}//fin función
//programa principal
main(){
//declarar variable
int num=0,fact=0;
//entrada de datos
cout<<"Ingresar numero:";cin>>num;
//invocar la funcion
fact =ffactorial(num);
//salida de datos
cout<<"EL factorial de "<<num<<" es:"<<fact<<endl;
system("PAUSE");
}//fin de programa

Página 165 de 235


Italo Yaranga Vite

*Ejecución del programa.

5. Diseñar una funcion que permite determinar si una palabra ingresada el palindroma.

Solución:
*Análisis de datos
e:palabra
s:m(mensaje)
//funcion fpalindromo
cadena fpalindromo(xpalabra:cadena){
m='',num=0, x=0
x=1
//csantidad de carácteres
num = longitud(xpalabra)
para i=0 hasta num-1
si xpalabra[i]=xpalabra[num-1-i]
x=1
sino
x=2
fin de si
fin de para
si x=2 entonces
m='No es un palindromo'
sino
m='Es un plindromo'
fin de si
returnar(m)
fin de funcion

*Algoritmo
1.-inicio
2.-palabra='',plb=''
3.-leer palabra
4.-plb=fpalindromo(palabra)
5.-escribir plb;

Página 166 de 235


Italo Yaranga Vite
*Implementación del algoritmo C++.

//libreria de e/s de datos


#include <iostream.h>
//funcion fpalindromo
char *fpalindromo(char *xpalabra){
char m[20];
int num, x = 1;
//csantidad de carácteres
num = strlen(xpalabra);
for(int i = 0; i < num; i++ ){
if(xpalabra[i]==xpalabra[num-1-i]){
x = 1;
}else{
x = 2;
break;
}
}
if(x==2){
strcpy(m,"No es un palindromo");
}else{
strcpy(m,"Es un plindromo\n");
}
return(m);
}//fin de funcion

//programa principal
main(){
//declarar variables
char palabra[20];
char plb[20];
//entrada ce datos
cout<<"Ingresa una plalabra:";cin>>palabra;
//invocar a la funcion
strcpy(plb,fpalindromo(palabra));
//salida de datos
cout<<plb<<endl;
system("PAUSE");
}//fin de programa

Página 167 de 235


Italo Yaranga Vite

*Ejecución del programa.

Página 168 de 235


Italo Yaranga Vite

6. Diseñar una funcion que permita determinar el nombre del día, mediante un número
ingresado.

Solución:

*Analisis de datos
E: n(numero)
S: d(día);

funcion fdia(nx:entero):cadena
nx=0, xd=''
si nx>0 y nx<=7
Segun sea nx
caso 1
xd='Lunes'
caso 2
xd='Martes'
caso 3
xd='Miercoles'
caso 4
xd='Jueves'
caso 5
xd='Viernes'
caso 6
xd='Sabado'
Caso 7
xd='Domingo'
Fin de segun
sino si
escribir "Error el numero ingresado no es valido"
fin si
retornar(xd)
fin de funcion

*Algoritmo
1.-inicio
2.-n=0,dia=''
3.-Leer n
4.-dia=fdia(n)
5.-escribir dia
6.-fin

*Prueba de escritorio
n=5
dia='viernes'

Página 169 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.

//libreria de e/s de datos por consola


#include <iostream.h>
//funcion fdia
char *fdia(int nx){
char xd[30];
if(nx>0 && nx<=7){
switch(nx){
case 1:
strcpy(xd,"Lunes");
break;
case 2:
strcpy(xd,"Martes");
break;
case 3:
strcpy(xd,"Miercoles");
break;
case 4:
strcpy(xd,"Jueves");
break;
case 5:
strcpy(xd,"Viernes");
break;
case 6:
strcpy(xd,"Sabado");
break;
case 7:
strcpy(xd,"Domingo");
break;
}
}else{
strcpy(xd,"Error el numero ingresado no es valido");
}
return(xd);
}//fin funcion

//programa principal
main(){
//declarar variables
int n=0;
char dia[30];
//entrada de datos
cout<<"Ingresar numero del 1-7:";cin>>n;
//invocar a la funcion
strcpy(dia,fdia(n));
//salida de datos
cout<<"El dia de la semana es:"<<dia<<endl;
system("PAUSE");
}//fin de programa

Página 170 de 235


Italo Yaranga Vite
*Ejecución del programa.

Página 171 de 235


Italo Yaranga Vite

7. Diseñar funciones que al ingresar el número atómico de un elemento químico permitan


visualizar su nombre, la familia a la que pertenece, la especificación si es un metal o un
no metal y su electronegatividad según Pauling.

-El número atómico(2,3,4,5,6,7,8,9)

Solución:
*Análisis de daton
E: n(número atómico)
S: nombre, grupo, bloque, ev(electronegatividad)
función felemento(xn:entero):cadena
e=''
según sea xn
caso 2:
e='HELIO / He'
caso 3:
e='LITIO / Li'
caso 4:
e='BERILIO / Be'
caso 5:
e='BORO / B'
caso 6:
e='CARBONO / C'
caso 7:
e='NITROGENO / N'
caso 8:
e='OXIGENO / O'
caso 9:
e='FLUOR / F'
fin de según
retornar(e)
fin función
función fgrupo(xn:entero):cadena
g=''
según sea xn
caso 2
g='Gases Nobles'
caso 3
g='Alcalinos'
caso 4
g='Alcalinos terreos'
caso 5
g='Boroides'
caso 6
g='Carbonoides'
caso 7
g='Nitrogenoides'
caso 8
g='Anfígenos'
caso 9
g='Halógenos'
. fin de según
retornar(g)
fin función

Página 172 de 235


Italo Yaranga Vite

función fbloque(xn:entero):cadena
b=''
según sea xn
caso 3,4
b='*Metal Ligero'
caso 5,6,7,8,9
b='*No Metal'
caso 2
b='*Gas raro'
fin de según
retornar(b)
fin función

función felectronegatividad(xn:entero):real
p=0.0
según sea xn
caso 2
p=4.1
caso 3
p=1.0
caso 4
p=1.5
caso 5
p=2.0
caso 6
p=2.5
caso 7
p=3.0
caso 8
p=3.5
caso 9
p=4.0
fin de según
retornar(p)
fin función

*Algortimo
1.-inicio
2.-n=0, ev=0.0, nombre='', grupo='', bloque=''
3.-leer n
nombre=felemento(n)
grupo=fgrupo(n)
bloque=fbloque(n)
ev=felectronegatividad(n)
4.-escribir nombre,grupo,bloque,ev
5.-fin

*Prueba de Escritorio
n=8
nombre= 'OXIGENO / O'
grupo='Anfígenos'
bloque='*No Metal'
ev=3.5

Página 173 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.

//librería de entrada y salida de datos por consola


#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
//función felemento
char*felemento(int xn){
char e[20];
switch(xn){
case 2:strcpy(e,"HELIO / He");break;
case 3:strcpy(e,"LITIO / Li");break;
case 4:strcpy(e,"BERILIO / Be");break;
case 5:strcpy(e,"BORO / B");break;
case 6:strcpy(e,"CARBONO / C");break;
case 7:strcpy(e,"NITROGENO / N");break;
case 8:strcpy(e,"OXIGENO / O");break;
case 9:strcpy(e,"FLUOR / F");break;
} //fin de switch
return(e);
} //fin de función
//función fgrupo
char *fgrupo(int xn){
char g[20];
switch(xn){
case 2:strcpy(g,"Gases Nobles");break;
case 3:strcpy(g,"Alcalinos");break;
case 4:strcpy(g,"Alcalinos terreos");break;
case 5:strcpy(g,"Boroides");break;
case 6:strcpy(g,"Carbonoides");break;
case 7:strcpy(g,"Nitrogenoides");break;
case 8:strcpy(g,"Anfigenos");break;
case 9:strcpy(g,"Halogenos");break;
} //fin de switch
return(g);
} //fin de función

//función fbloque
char*fbloque(int xn){
char b[20];
switch(xn){
case 3:
case 4:
strcpy(b,"*Metal Ligero");break;
case 5:
case 6:
case 7:
case 8:
case 9:
strcpy(b,"*No Metal");break;
case 2:
strcpy(b,"*Gas raro");break;
}
return(b);
} //fin de la función

Página 174 de 235


Italo Yaranga Vite

//función felectronegatividad
double felectronegatividad(int xn){
double p;
switch(xn){
case 2:
p=4.1;break;
case 3:
p=1.0;break;
case 4:
p=1.5;break;
case 5:
p=2.0;break;
case 6:
p=2.5;break;
case 7:
p=3.0;break;
case 8:
p=3.5;break;
case 9:
p=4.0;break;
}//fin de switch
return(p);
} //fin de la función

//procedimiento principal
int main(){
//declarar variables
int n;
double ev;
char nombre[20];
char grupo[20];
char bloque[20];
//entrada de datos
cout<<"Ingresar el NUMERO ATOMICO: ";cin>>n;
//invocar funciones
strcpy(nombre,felemento(n));
strcpy(grupo,fgrupo(n));
strcpy(bloque,fbloque(n));
ev=felectronegatividad(n);
//salida de datos
cout<<""<<endl;
cout<<"----------------El Elemento Quimico es: "<<nombre<<endl;
cout<<"------------Familia a la que pertenece: "<<grupo<<endl;
cout<<"---------------------------------Es un: "<<bloque<<endl;
cout<<"Su electronegatividad segun PAULING es: ";
cout<<fixed<<setprecision(1)<<ev;
getch();
} //fin del procedimiento principal

Página 175 de 235


Italo Yaranga Vite

*Ejecución del programa.

8. Diseñar una función que permita devolver el mayor digito de una cantidad ingresada.

Solución:

*Anàlisis de datos
e:c(cantidad)
s:dmy(digito mayor)

funcion fdmayor(xc:entero):entero
d=0,xdmy=0
mientras xc>0
d=residuo(xc/10)
si d>xdmy entonces
xdmy=d
fin de si
xc=entero(xc/10)
fin de mientras
retornar(xdmy)
fin función

*Algoritmo
1.-inicio
2.-c=0,dmy=0
3.-leer c
4.-dmy=fdmayor(c)
5.-escribir dmy
6.-fin

*Prueba de EScritorio
c=124
dmy=4

Página 176 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.


//libreria de e/s d datos por consola
#include <iostream.h>
//funcion fdmayor(digito mayor)
int fdmayor(int xc){
int d=0,xdmy=0;
while(xc>0){
d=xc%10;
if(d>xdmy){
xdmy=d;
}
xc=int(xc/10);
}
return(xdmy);
}//fin de funcion
//programa principal
main(){
//declarar variables
int c,dmy;
//entrada de datos
cout<<"Ingresar Numero:";cin>>c;
//invocar la funciòn
dmy=fdmayor(c);
//salida de datos
cout<<"El digito mayor es:"<<dmy<<endl;
system("PAUSE");
}//fin de programa

*Ejecución del programa.

Página 177 de 235


Italo Yaranga Vite

9. Diseñar un algoritmo que permita calcular el area de una figura geometrica,


seleccionando el tipo de figura en un menu de opciones.El programa debe permitir el
ingreso de los datos de entrada dependiendo del tipo de figura. Debe repetirse hasta
que ya no desee seguir.

Solución:

*Analisis de datos
e:tf(tipo de figura)
s:area

constante real pi=3.1416


funcion fCalArea(tf:entero):real
segun sea tf
caso 1: escribir 'ing. datos del cuadrado'
leer lado
area=lado*lado
caso 2: escribir 'ing. datos del circulo'
leer radio
area=pi*pow(radio,2)
caso 3: escribir 'ing. datos del rectangulo'
leer base,altura
area=base*altura
caso 4: escribir 'ing. datos del triangulo'
leer base,altura
area=base*altura/2
caso 5: escribir 'ing. datos del trapecio'
leer base1,base2,altura
area=((base1+base2)/2)*altura
otro caso: escribir 'Numero incorrecto'
area=0
fin de segun
retornar(area)
fin de función

funcion menu ():entero


TipoFigura=0
escribir'calculo de area'
escribir'---------------'
escribir'<1>CUADRADO'
escribir'<2>CIRCULO'
escribir'<3>RECTANGULO'
escribir'<4>TRIANGULO'
escribir'<5>TRAPECIO'
escribir'Ingrese una opcion:'
retornar TipoFigura
fin de funcion

Página 178 de 235


Italo Yaranga Vite

*Algoritmo
1.-inicio
2.-sigue='', tipof=0
3.-hacer
tipof=menu()
escribir area
escribir'desea continuar S/N'
mientras (sigue=='S')
fin de hacer
4.-fin

*Prueba de escritorio
opcion=5
base1=12
base2=14
altura=10
area=130

*Implementación del algoritmo C++.


/*
Hacer unprograma que permita calcular el area de una figura geometrica,
seleccionando el tipo de figura en un menu de opciones.El programa debe
permitir el ingreso de los datos de entrada dependiendo del tipo de figura.
Debe repetirse hasta que ya no desee seguir.
*/
//Libreria de e/s de datos por consola
#include<iostream.h>
#include<stdio.h>
#include<math.h>
#include<conio.h>
//funcion area
const double pi=3.1416;
double fCalArea(int tf){
double lado,base,altura,radio,area,base1,base2;
switch (tf){
case 1: cout<<"Ing. datos del cuadrado:"<<endl;
cout<<"Lado=";cin>>lado;
area=lado*lado;break;

case 2: cout<<"Ing. datos del circulo:"<<endl;


cout<<"Radio=";cin>>radio;
area=pi*pow(radio,2);break;

case 3: cout<<"Ing. datos del rectangulo:"<<endl;


cout<<"Base=";cin>>base;
cout<<"Altura=";cin>>altura;
area=base*altura;break;

Página 179 de 235


Italo Yaranga Vite

case 4: cout<<"Ing. datos del triangulo:"<<endl;


cout<<"Base=";cin>>base;
cout<<"Altura=";cin>>altura;
area=base*altura/2;break;

case 5: cout<<"Ing. datos del trapecio:"<<endl;


cout<<"Base1=";cin>>base1;
cout<<"Base2=";cin>>base2;
cout<<"Altura=";cin>>altura;
area=((base1+base2)/2)*altura;break;
default:
cout<<"Numero incorrecto"<<endl;
area=0;
}//fin de segun
return area;
}//fin de funcion

int menu (){


int TipoFigura=0;
cout<<"Calculo de area:"<<endl;
cout<<"---------------"<<endl;
cout<<"<1>CUADRADO"<<endl;
cout<<"<2>CIRCULO"<<endl;
cout<<"<3>RECTANGULO"<<endl;
cout<<"<4>TRIANGULO"<<endl;
cout<<"<5>TRAPECIO"<<endl;
cout<<"Ingrese una opcion:";cin>>TipoFigura;
return TipoFigura;
}//fin de funcion

//programa principal
int main(){
//declarar variables
char sigue;
do {
//invocar funciones
int tipof=menu();
cout<<"Area="<<fCalArea(tipof)<<endl;
cout<<"Desea continuar S/N:";cin>>sigue;
}while (sigue=='S');
}//fin de programa

Página 180 de 235


Italo Yaranga Vite
*Ejecución del programa.

10. Diseñar un algoritmo que calcule la hipotenusa,elperimetro,y los angulos de un


triangulo rectanguoo cuyos catetos son ingresados por teclado

Solución:
*Analisis de datos
e:c1(cateto 1),c2(cateto 2)
s:p(perimetro),alfa,beta

funcion fhipotenusa(c1:real,c2:real):real
hip=0.0
hip=sqrt(pow(c1,2)+pow(c2,2))
retornar hip
fin de funcion

funcion fperimetro(c1:real,c2:real,hip:real):real
per=0.0
per=c1+c2+hip
retornar per
fin de funcion

procedimiento calculoaa(c1:real,c2:real,alfa:real,beta:real)
alfa=atan(c1/c2)
beta=atan(c2/c1)
fin de procedimiento

funcion ConASex(AlfaRad)

Página 181 de 235


Italo Yaranga Vite

*Algoritmo
1.-inicio
2.-c1=0.0,c2=0.0,hipote=0.0,peri=0.0,alf=0.0,bet=0.0
3.-leer c1,c2
4.-hipote=fhipotenusa(c1,c2)
peri=fperimetro(c1,c2,hip)
calculoaa(c1,c2,alfa,beta)
5.-escribir hipote,peri,alf,bet
6.-fin

*Prueba de Escritorio
C1=4
C2=3
Peri=12
Alf=0
Bet=6.9495

*Implementación del algoritmo C++.


/*
Hacer un programa que calcule la hipotenusa,elperimetro,y los angulos de un
triangulo rectanguoo cuyos catetos son ingresados por teclado
*/
//Libreria de e/s de datos por consola
#include<iostream.h>
#include<stdio.h>
#include<math.h>
//funcion hipotenusa
double fhipotenusa(double c1,double c2){
double hip=0.0;
hip=sqrt(pow(c1,2)+pow(c2,2));
return hip;
}//fin de funcion

double fperimetro(double c1,double c2,double hip){


double per=0.0;
per=c1+c2+hip;
return per;
}//fin de función

void calculoaa(double c1,double c2,double xalfa,double xbeta){


const double PI=3.1416;
xalfa=(atan(c1/c2))*180/PI;
xbeta=(atan(c2/c1))*180/PI;

}//fin de procedimiento

Página 182 de 235


Italo Yaranga Vite

//programa principal
main(){
//declarar variables
double c1,c2,hip,peri,alfa,beta;
char sigue;
do{
//entrada de datos
cout<<"Ingrese el valor del cateto 1:";cin>>c1;
cout<<"Ingrese el valor del cateto 2:";cin>>c2;

//invocar varaibles
hip=fhipotenusa(c1,c2);
peri=fperimetro(c1,c2,hip);
calculoaa(c1,c2,alfa,beta);
//salida de datos
cout<<"La hipotenusa es:"<<hip<<endl;
cout<<"El perimetro del triangulo es"<<peri<<endl;
cout<<"El valor del angulo alfa es:"<<alfa<<endl;
cout<<"El valor del angulo beta es:"<<beta<<endl;
system("PAUSE");
cout<<"Desea continuar S/N:";cin>>sigue;
}while(sigue=='S') ;
}//fin de programa

*Ejecución del programa.

Página 183 de 235


Italo Yaranga Vite

S SESION08
Los arreglo nos permiten

almacenar una colección con el

mismo tipo de dato en la

memoria del computador.

Página 184 de 235


Italo Yaranga Vite

SESION 08

 ARREGLO DE DATOS

1. Diseñar un algoritmo que permita almacenar en un arreglo de datos cinco números


ingresados y realizar una búsqueda mediante un número ingresado. Visualizar un
mensaje indicando si el número existe o no existe y la posición del número en el arreglo
de datos.

Solución:

*Análisis de datos
e:n(números),nb(numero a buscar)
s:m(mensaje),pos(posición)

funcion fbuscar(arr[]:entero,xnb:entero):entero
xpos=0,i=0
para i=0 hasta 4
si arr[i]=xnb entonces
xpos=i //si encontro
i=5 //permite finalizar la e.repetitiva
sino
xpos=-1//no encontro
fin de si
fin de para
retornar(xpos)
fin de funcion

*Algoritmo
1.-inicio
2.-anum[5]:0,nb=0,f=0,n=0,pos=0,m=''
3.-para f=0 hasta 4
leer n
anum[f]=n
fin de para
leer nb
4.-pos=fbuscar(anum,nb)
si pos>=0 entonces
m='si existe'
sino
m='no existe'
fin de si
5.-escribir pos,m
6.-fin

*Prueba de Escritorio
10-20-30-40-50
nb=30
m='si existe'
pos=2

Página 185 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.


//libreria de e/s de datos por consola
#include <iostream.h>
//funcion fbuscar
int fbuscar(int arr[],int xnb){
int xpos=0,i=0;
for(i=0;i<=4;i++){
if(arr[i]==xnb){
xpos=i; //si encontro
i=5; //permite finalizar la e.repetitiva
}else{
xpos=-1;//no encontro
}//fin if
}//fin for
return(xpos);
}//fin funcion
//programa principal
main(){
//declarar variables
int anum[5];
int nb=0,f=0,n=0,pos=0;
char m[20];
//entrada de datos
for(f=0;f<=4;f++){
cout<<"Ingresar numero "<<f+1<<":";cin>>n;
anum[f]=n;
}
cout<<"Ingresar numero a buscar";cin>>nb;
//invocar a la funcion
pos=fbuscar(anum,nb);
if(pos>=0){
strcpy(m,"si existe");
}else{
strcpy(m,"no existe");
}
//salida de datos
cout<<m<<endl;
cout<<"La posicion de numero buscado es :"<<pos<<endl;
system("PAUSE");
}//fin de programa

Página 186 de 235


Italo Yaranga Vite
*Ejecución del programa.

2. Diseñar un algoritmo que permita almacenar cinco números en el arreglo a y b.


Visualizar los valores del arreglo a y b en forma intercalada al arreglo c.

Solución:
*Análisis de datos
E: n(número)
S: números intercalados del arreglo a y b en c

*Algoritmo
1.-inicio
2.-n=0,a[5]:0,b[5]:0,c[10]:0,i=0,j=0,r=0,k=0
3.-para i=0 hasta 4
leer n
a[i]=n
fin de para
para j=0 hasta 4
leer n
b[j]=n
fin de para
4.- para k=0 hasta 4
c[k+r]=a[k]
r=r+1
c[k+r]=b[k]
fin de para
5.-escribir
para k=0 hasta 9
escribir c[k]
fin de para
6.-fin

*Prueba de Escritorio
a[10-20-30-40-50]
b[60-70-80-90-100]
c[10-60-20-70-30-80-40-90-50-100]

Página 187 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.

/*
Ejercicio2:
Diseñar un algoritmo que permita almacenar cinco números en el arreglo a y b. Visualizar los
valores del arreglo a y b en forma intercalada al arreglo c.
*/
//librería de entrada y salida de datos
#include <iostream.h>
#include <conio.h>
//procedimiento principal
int main(){
//declarar variables
int n=0,i=0,j=0,r=0,k=0,y=0;
int a[5]={0}; //arreglo de datos estático
int b[5]={0}; //arreglo de datos estático
int c[10]={0}; //arreglo de datos estático
//entrada de datos
for(i=0;i<5;i++){
cout<<"Arreglo A número"<<(i+1)<<":";cin>>n;
a[i]=n;
}//fin de for
for(j=0;j<5;j++){
cout<<"Arreglo B número"<<(j+1)<<":";cin>>n;
b[j]=n;
}//fin de for
//proceso de datos
for(k=0;k<5;k++){
c[k+r]=a[k];
r=r+1;
c[k+r]=b[k];
}//fin de for
//salida de datos
for(y=0;y<=9;y++){
cout<<c[y]<<endl;
}//fin de for
getch();
} //fin procedimiento

Página 188 de 235


Italo Yaranga Vite
* Ejecución del programa.

3. Diseñar un algoritmo que permita registrar los sueldos de los n empleados en un arreglo
de datos. Visualizar sueldo mayor.

Solución:

*Análisis de datos
e:ne(número de empleados),sueldo
s:smayor

*Algoritmo
1.-inicio
2.-ne=0,sueldo=0.0,smayor=0.0,i=0
3.-leer ne
asueldo[ne]:0.0
para i=0 hasta ne
leer sueldo
asueldo[i]=sueldo
fin de para
5.-para i=0 hasta ne
si asueldo[i]>smayor entonces
smayor=asueldo[i]
fin de si
fin de para
6.-escribir smayor
7.-fin

*Prueba de Escritorio
ne=3
sueldo1=1000
sueldo2=2000
sueldo2=3000
smayor=3000

Página 189 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.

/*
Diseñar un algoritmo que permita registras n empleados y su sueldo en un arreglo de
datos. Visualizar sueldo mayor.
*/
//librería de e/s de datos por consola
#include <iostream.h>
#include <conio.h>
//permite utilizar el comando cls limpiar Pantallas
#include <stdlib.h>
//procedimiento principal
int main(){
//declarar variables
int ne,i;
double sueldo=0.0,smayor=0.0;
char rpta[2];

do{
//entrada de datos
cout<<"Ingresar número de empleados:";cin>>ne;
//proceso de datos
double asueldo[ne];
for(i=0;i<ne;i++){
cout<<"Ingresar sueldo "<<i+1<<":";cin>>sueldo;
asueldo[i]=sueldo;
}
for(i=0;i<ne;i++){
if(asueldo[i]>smayor){
smayor=asueldo[i];
}
}
//salida de datos
cout<<"el sueldo mayor es:"<<smayor<<endl;
cout<<"Desea seguir si/no:";cin>>rpta;
system("CLS"); //permite limpiar pantalla
}while(strcmp(rpta,"si")==0);
} //fin del procedimiento

Página 190 de 235


Italo Yaranga Vite
*Ejecución del programa.

4. Diseñar un arreglo de datos que permita almacenar cinco notas de un alumno visualizando su
promedio.

Solución:

*Análisis de datos
E:nota
S:p(promedio)

*Algoritmo
1.-inicio
2.-sn=0.0,p=0.0,n=0,i=0,nota=0.0
3.-leer n
4.-anotas[n]=0.0
para i=1 hasta n
leer nota
anotas[i]=nota
sn=sn+anotas[i]
fin de para
p=sn/n
4.-escribir p
5.-fin

*Prueba de Escritorio
anotas[1]=12
anotas[2]=14
anotas[3]=13
anotas[4]=16
anotas[5]=17
p=14,4

Página 191 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.

/*
4.Diseñar un arreglo de datos que permita almacenar cinco
notas de un alumno visualizando su promedio.
*/
//librerías de comandos de entrada y salida de datos por consola
#include <iostream.h>
#include <conio.h>
//procedimiento principal
int main(){
//declarar variables
double sn,p,nota;
int n,i;
//entrada de datos
cout<<"Ingresar cantidad de notas:";cin>>n;
double anotas[n];
//proceso de datos
for(i=0;i<n;i++){
cout<<"Ingresar Nota "<<i+1<<":";cin>>nota;
anotas[i]=nota;
sn=sn+anotas[i];
}
p=sn/n;
//salida de datos
cout<<"El promedio de los números es:"<<p;
getch();
}

*Ejecución del programa.

Página 192 de 235


Italo Yaranga Vite
5. Diseñar un algoritmo para un VIVERO que permita almacenar en un arreglo de datos las
cantidades de plantas de distintas variedades y en otro arreglo de datos los precios de
dichas variedades en orden correlativo. Visualizar un mensaje que me diga si hubo
ganancia o pérdida, el costo total, el ingreso por medio de las ventas y la ganancia
respectiva; esto mediante el ingreso de los precios de la tierra, bolsas, semillas y abono.

Solución:

*Análisis de datos
E: n(número), t(pc de tierra), b(pc de bolsas), s(pc de semillas),
a(pc de abono)
S: m(mensaje), c(costo total), in(ingreso), g(ganancia)

funcion fcosto(xt:entero,xb:entero,xs:entero,xa:entero):entero
retornar xt+xb+xs+xa
fin función

*Algortimo
1.-inicio
2.-x[5]:0 ,z[5]:0 ,n=0, t=0, b=0, s=0, a=0, i=0, j=0, y=0, c=0, r=0,
in=0, g=0, m=''
3.-para i=0 hasta 4 //cantidades de plantas
leer n
x[i]=n
fin del para
para j=0 hasta 4 //precio de dicha variedades
leer n
z[j]=n
fin del para
leer t,b,s,a
4.-c=fcosto(t,b,s,a)
para y=0 hasta 4
r=x[y]*z[y]
in=in+r
fin de para
g=in-c
si g>0 entonces
m='HUBO GANANCIAS'
fin de si
si g<0 entonces
m='HUBO PÉRDIDAS'
fin de si
5.-escribir m,c,in,g
6.-fin

*Prueba de Escritorio
x[5]: 400,200,300,20,80
z[5]: 2,3,5,15,8
t=500
b=19
s=1000
a=400
m='HUBO GANANCIA'
C=1919
in=3840
g=1921

Página 193 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.


//librería de entrada y salida de datos por consola
#include <iostream.h>
#include <conio.h>
//función fcosto
int fcosto(int xt,int xb,int xs,int xa){
return xt+xb+xs+xa;
} //fin de la funcion
//procedimiento principal
int main(){
//declarar variables
int t,b,s,a,c,p,g,n,i,in=0,j,y,r;
char m[20];
int x[5]; //arreglos de datos estáticos
int z[5]; //arreglos de datos estáticos
//entrada de datos
cout<<"***********VIVERO XYZ***********"<<endl;
cout<<""<<endl;
cout<<"Cantidades por variedad"<<endl;
for(i=0;i<=4;i++){
cout<<"Variedad "<<(i+1)<<" : ";cin>>n;
x[i]=n;
} //fin de for
cout<<""<<endl;
cout<<"Precios por variedad"<<endl;
for(j=0;j<=4;j++){
cout<<"Variedad "<<(j+1)<<" : ";cin>>n;
z[j]=n;
} //fin de for
cout<<""<<endl;
cout<<"Calculando la inversion"<<endl;
cout<<"Ingresar precio tierra: ";cin>>t;
cout<<"Ingresar precio bolsas: ";cin>>b;
cout<<"Ingresar precio semilla: ";cin>>s;
cout<<"Ingresar precio abono: ";cin>>a;
//proceso de datos
c=fcosto(t,b,s,a); //invocación de la función
for(y=0;y<=4;y++){
r=x[y]*z[y];
in=in+r;
}

Página 194 de 235


Italo Yaranga Vite

g=in-c;
if(g>0){
strcpy(m,"------------*HUBO GANANCIAS*-------------");
}
if(g<0){
strcpy(m,"------------*HUBO PERDIDAS*--------------");
}
//salida de datos
cout<<""<<endl;
cout<<m<<endl;
cout<<"El costo total es: "<<c<<endl;
cout<<"El ingreso es: "<<in<<endl;
cout<<"La ganancia es: "<<g;
getch();
} //fin del procedimiento principal

*Ejecución del programa.

Página 195 de 235


Italo Yaranga Vite

6. Diseñar un algoritmo que permita almacenar en un arreglos de datos los nombres de las
principales playas del sur y en otro arreglo de datos el número de bañistas en orden
correlativo. Visualizar los porcentajes de bañistas de cada playa en un arreglo de datos.

Solución:

*Análisis de datos
E: py(playas), n(número)
S: los porcentajes en un arreglo de datos

*Algoritmo
1.-inicio
2.-ap[5]:'', b[5]:0.0, c[5]:0.0, py='', i=0, j=0, k=0, y=0, n=0, bmy=0, bt=0,my=0.0
3.-para i=0 hasta 4
leer py
ap[i]=py
fin del para
para j=0 hasta 4
leer n
b[j]=n
fin del para
4.- para j=0 hasta 4
bt=bt+b[j]
fin del para
para k=0 hasta 4
c[k]=b[k]*100/bt
fin del para
my=c[0]
pos=0
si c[1]>my entonces
my=c[1]
pos=1
fin de si
si c[2]>my entonces
my=c[2]
pos=2
fin de si
si c[3]>my entonces
my=c[3]
pos=3
fin de si
si c[4]>my entonces
my=c[4]
pos=4
fin de si
5.-escribir
para y=0 hasta 4
escribir c[y]
fin del para
ap[pos]
6.-fin
*Prueba de Escritorio
ap[5]: 'san_pedro','silencio','san_bartolo','punta_negra','punta_hermosa'
b[5]: 1000,200,400,800,950
c[5]: 29.85,5.97,11.94,23.88,28.36
ap[pos]='san_pedro'

Página 196 de 235


Italo Yaranga Vite
*Implementación del algoritmo C++.

//librería de entrada y salida de datos por consola


#include <iostream.h>
#include <conio.h>
#include <iomanip.h> //permite disminuir decimales
#include <vector>
using namespace std;
//procedimiento principal
int main(){
vector<string> v1;
char py[20];
//declarar variables
int i=0,n=0,bmy=0,bt=0,j=0,k=0,y=0,pos;
double my;
double c[5];
double b[5];
//entrada de datos
cout<<"------PLAYAS DEL SUR*------"<<endl;
for(i=0;i<=4;i++){
cout<<"Playa "<<(i+1)<<" : ";cin>>py;
v1.push_back(py);
} //fin de for
cout<<""<<endl;
cout<<"NUMERO DE BAÑISTAS"<<endl;
for(j=0;j<=4;j++){
cout<<"En la playa "<<(j+1)<<" : ";cin>>n;
b[j]=n;
} //fin de for
//proceso de datos
for(j=0;j<=4;j++){
bt=bt+b[j]; //acumulador de bañistas
} //fin de for
for(k=0;k<=4;k++){
c[k]=b[k]*100/bt;
} //fin de for
my=c[0];
pos=0;
if (c[1]>my){
my=c[1];
pos=1;
}
if (c[2]>my){
my=c[2];
pos=2;
}
if (c[3]>my){
my=c[3];
pos=3;
}
if (c[4]>my){
my=c[4];
pos=4;
}

Página 197 de 235


Italo Yaranga Vite

//salida de datos
cout<<""<<endl;
cout<<"PORCENTAJE DE BAÑISTAS"<<endl;
for(y=0;y<=4;y++){
cout<<"En la playa "<<(y+1)<<" : ";
cout<<fixed<<setprecision(2)<<c[y]<<"%"<<endl;
} //fin de for
cout<<""<<endl;
cout<<"Playa con mayor cantidad de bañistas:"<<endl;
cout<<v1[pos];
getch();
} //fin del procedimiento

*Ejecución del programa.

Página 198 de 235


Italo Yaranga Vite
7. Diseñar un algoritmo que permita almacenar en un arreglo de datos el número de alumnas
por aula y en otro arreglo de datos el número de alumnos en orden correlativo. Visualizar el
porcentaje de chicas y chicos, e indicar por medio de un mensaje que sexo predomina.

Solución:

*Análisis de datos
E: n(número)
S: pa(porcentaje de chicas), pe(porcentaje de chicos), l(sexo predominante)

*Algoritmo
1.-inicio
2.-i=0, j=0, n=0, na=0, ne=0, nt=0.0, pa=0.0, pe=0.0, l='', a[5]:0, b[5]:0
3.-escribir 'NÚMERO DE ALUMNAS'
para i=0 hasta 4
leer n
a[i]=n
fin de para
escribir 'NÚMERO DE ALUMNOS'
para j=0 hasta 4
leer n
b[j]=n
fin de para
4.-para i=0 hasta 4
na=na+a[i]
fin de para
para j=0 hasta 4
ne=ne+b[j]
fin de para
si na>ne entonces
l='----*PREDOMINIO FEMENINO'
fin de si
si na<ne entonces
l='----*PREDOMINIO MASCULINO'
fin de si
si na=ne entonces
l='----*'
fin de si
nt=na+ne
pa=100*na/nt
pe=100-pa
5.-escribir pa,pe,l
6.-fin

*Prueba de escritorio
a[5]:6,10,14,12,8
b[5]:30,14,10,13,27
pa=34.72%
pe=65.28%
l='----*PREDOMINIO MASCULINO'

Página 199 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.


//librería de entrada y salida de datos por consola
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
//procedimiento principal
int main(){
int i=0,j=0,n=0,na=0,ne=0;
double pa,pe,nt;
char l[50];
int a[5];
int b[5];
//declaración de variables
//entrada de datos
cout<<"INSTITUCION EDUCATIVA"<<endl;
cout<<""<<endl;
cout<<"NUMERO DE ALUMNAS"<<endl;
for(i=0;i<=4;i++){
cout<<"En el aula "<<(i+1)<<" : ";cin>>n;
a[i]=n;
na=na+n;
}
cout<<""<<endl;
cout<<"NUMERO DE ALUMNOS"<<endl;
for(j=0;j<=4;j++){
cout<<"En el aula "<<(j+1)<<" : ";cin>>n;
b[j]=n;
ne=ne+n;
}
//procesos de datos
for(i=0;i<=4;i++){
na=na+a[i];
}
for(j=0;j<=4;j++){
ne=ne+b[j];
}
if(na>ne){
strcpy(l,"-----------------------------*PREDOMINIO FEMENINO");
}
if(na<ne){
strcpy(l,"-----------------------------*PREDOMINIO MASCULINO");
}
if(na==ne){
strcpy(l,"-----------------------------*");
}
nt=na+ne;
pa=100*na/nt;
pe=100-pa;
//salida de datos
cout<<"-----------------------------"<<endl;
cout<<"PORCENTAJE DE CHICAS: ";
cout<<fixed<<setprecision(2)<<pa<<"%"<<endl;
cout<<"PORCENTAJE DE CHICOS: "<<pe<<"%"<<endl;
cout<<l;
getch();
} //fin de procedimiento principal
Página 200 de 235
Italo Yaranga Vite
*Ejecución del programa.

Página 201 de 235


Italo Yaranga Vite

8. Diseñar un algoritmo que permita almacenar 10 temperaturas. Se desea calcular la media y


obtener el número de temperaturas mayores o iguales que la media.

Solución:

*Análisis de datos
E: t(temperaturas)
S: m(media de temperaturas), c(número de temperaturas >= de la media)

*Algoritmo
1.-inicio
2.-i=0, j=0, c=0, t=0.0, s=0.0, m=0.0, tem[10]:0.0
3.-escribir 'TEMPERATURAS EN GRADOS CELSIUS'
para i=0 hasta 9
leer t
tem[i]=t
s=s+t
fin de para
4.-para i=0 hasta 9
s=s+tem[i]
fin de para
m=s/10
para j=0 hasta 9
si tem[j]>=m entonces
c=c+1
fin de si
fin de para
4.-escribir m,c
5.-fin

*Prueba de escritorio
tem[10]: 23,25.2,35,30.26,42,16,15.62,30,40.32,26.5
m=28.39
c=5

Página 202 de 235


Italo Yaranga Vite
*Implementación del algoritmo C++.

//librería de entrada y salida de datos por consola


#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
//procedimiento principal
int main(){
//declarar variables
int i=0,j=0,c=0;
double s=0.0,m=0.0,t=0.0;
double tem[10];
//entrada de datos
cout<<"TEMPERATURAS EN GRADOS CELCIUS"<<endl;
for(i=0;i<=9;i++){
cout<<"Temperatura "<<(i+1)<<" : ";cin>>t;
tem[i]=t;
}
//procesos de datos
for(i=0;i<=9;i++){
s=s+tem[i];
}
m=s/10;
for(j=0;j<=9;j++){
if(tem[j]>=m){
c=c+1;
}
}
//salida de datos
cout<<""<<endl;
cout<<"---------------------------"<<endl;
cout<<"La temperatura media: ";
cout<<fixed<<setprecision(2)<<m<<endl;
cout<<"Temperaturas >= "<<m<<" : "<<c;
getch();
} //procedimiento principal

*Ejecución del programa.

Página 203 de 235


Italo Yaranga Vite

9. Diseñar un algoritmo que permita almacenar en dos arreglos de datos cuatro numeros
ingresados y genere un tercer arreglo que almacene la suma de los dos arreglos anteriores.

Solución:

*Análisis de datos:
E:n
S:sn

*Algoritmo:
1.-inicio
2.-n=0, a[4]:0, b[4]:0, c[4]:0, i, j, k
3.-para i = 0 hasta 3
leer n
a[i]=n
fin de para
para j = 0 hasta 3
leer n
b[j]=n
fin de para
4.-para k = 0 hasta 3
c[k]=a[k]+b[k]
fin para
5.-fin

*prueba de escritorio:
a[4]= 1-2-3-4
b[4]= 5-6-7-8
c[4]= 6-8-10-12

Página 204 de 235


Italo Yaranga Vite
*Implementación del algoritmo C++.
//libreria de /s de datos por consola
#include <iostream.h>
#include <conio.h>
//programa principal
int main(){
int n, i, j;
int a[4];
int b[4];
int c[4];

for(i=0; i<4; i++){


cout<<"Arreglo A numero "<<(i+1)<<": ";cin>>n;
a[i]=n;
}
for(i=0; i<4; i++){
cout<<"Arreglo B numero "<<(i+1)<<": ";cin>>n;
b[i]=n;
}
for(i=0; i<4; i++){
c[i]=a[i]+b[i];
}

//salida de datos
for(j=0; j<4; j++){
cout<<"Arreglo C numero"<<(j+1)<<": "<<c[j]<<endl;
}

system("PAUSE");
}//fin de programa

*Ejecución del programa.

Página 205 de 235


Italo Yaranga Vite

10. Diseñar un algoritmo para un conjunto de 10 personas se desea almacenar su edad. Cuál
es la mayor edad y cuántas veces se repite la mayor edad.

Solución:

*Análisis de datos
E:e(edad)
S:me(mayor edad),cont(conteo)

*Algoritmo
1.-inicio
2.-e=0,i=0,me=0,cont=0,edad[10]:0
3.-para i=0 hasta 9
leer e
edad[i]=e
fin de para
me=edad[0]
para i=1 hasta 9
si edad[i]>me entonces
me=edad[i]
fin de si
fin de para
cont=0
para i=0 hasta 9
si edad[i]=me entonces
cont=cont+1
fin de si
fin de para
4.- escribir me,cont
5.-fin

*Prueba de Escritorio
e1=15
e2=16
e3=17
e4=16
e5=18
e6=18
e7=19
e8=20
e9=18
e10=20
me=20
cont=2

Página 206 de 235


Italo Yaranga Vite
*Implementación del algoritmo C++.
//librería de entrada y salida de datos
#include <iostream.h>
#include <conio.h>
//procedimiento principal
int main(){
//declarar variables
int e,i,me,cont=0;
int edad[10];
//entrada de datos
cout<<"Para las edades de un conjunto de 10 personas. Hallar la mayor edad y
cuantas veces se repite"<<endl;
cout<<endl;
for(i=0;i<=9;i++){
cout<<"Ingrese edad"<<i+1<<": ";cin>>e;
edad[i]=e;
}//fin de for
//proceso de datos
me=edad[0];
for(i=1;i<=9;i++){
if(edad[i]>me){
me=edad[i];
}//fin de if
}//fin de for
for(i=0;i<=9;i++){
if(edad[i]==me){
cont=cont+1;
}//fin de if
}//fin de for
//salida de datos
cout<<endl;
cout<<"La mayor edad es: "<<me<<endl;
cout<<"La mayor edad aparece "<<cont<<" veces"<<endl;

getch();

}//fin de procedimiento

Página 207 de 235


Italo Yaranga Vite

*Ejecución del programa.

Página 208 de 235


Italo Yaranga Vite

[ SESION 09
Las matrices de datos permiten

almacenar datos en memoria

mediante el uso de filas y

columnas.

Página 209 de 235


Italo Yaranga Vite

SESION 09

 MATRICES DE DATOS

1. Diseñar un algoritmo que permita registrar números enteros dentro de una matriz de
3x3. Visualizar la suma de los números, la suma de los n pares, la cantidad de los n
impares.

Solución:

*Análisis de datos
E:n(números)
S:se(suma elementos),sp(suma pares),ci(cantidad de impares)

*Algoritmo
1.-inicio
2.-n=0,se=0,sp=0,ci=0,f=0,c=0,mnum[3,3]:0,r=0
3.-para f=0 hasta 2 //fila
para c=0 hasta 2 //columna
leer n
mnum[f][c]=n
fin de para
fin de para
4.-para f=0 hasta 2 //fila
para c=0 hasta 2 //columna
se=se+mnum[f][c]
r=residuo(mnum[f][c]/2)
si r=0 entonces
sp=sp+mnum[f][c] //suma de pares
sino
ci=ci+1 //contador de impares
fin de si
fin de para
fin de para
5.-escribir se,sp,ci
6.-fin

*Prueba de escritorio
n=1-2-3-4-5-6-7-8-9
se=45
sp=20
ci=5

Página 210 de 235


Italo Yaranga Vite
*Implementación del algoritmo C++.

//librería de entrada y salida de datos por consola


#include <iostream.h>
#include <conio.h>
//procedimiento principal
int main(){
//declarar variables
int n,se=0,sp=0,ci=0,f,c,r;
int mnum[3][3];
//entrada de datos
for(f=0;f<=2;f++){ //filas
for(c=0;c<=2;c++){ //columnas
cout<<"Ingresar número:";cin>>n;
mnum[f][c]=n;
}
}
//proceso de datos
for(f=0;f<=2;f++){ //filas
for(c=0;c<=2;c++){ //columnas
se=se+mnum[f][c];
r=mnum[f][c]%2;
if(r==0){
sp=sp+mnum[f][c];
}else{
ci=ci+1;
}
}
}
//salida de datos
cout<<"La suma de elementos es:"<<se<<endl;
cout<<"La suma de los n pares es:"<<sp<<endl;
cout<<"La cantidad de n impares es:"<<ci<<endl;
getch();
}//fin de procedimiento

Página 211 de 235


Italo Yaranga Vite

*Ejecución del programa

2. Diseñar un algoritmo que permita registrar nueve números ingresados en un matriz 3x3.
Visualizar la suma de la diagonal principal, secundaria, suma de datos por filas y columnas.

*Análisis de datos
E:n(numero)
S:sdp,sds,afila[],sc1,sc2,sc3

*Algoritmo
1.-inicio
2.-n=0,f=0,c=0,mnum[3][3]:0,afila[3]:0,sfila=0,sc1=0,sc2=0,sc3=0,sdp=0,sds=0
3.-para f=0 hasta 2 //fila
para c=0 hasta 2 //columna
leer n
mnum[f,c]=n
fin de para
fin de para
4.-para f=0 hasta 2 //fila
para c=0 hasta 2 //columna
//diagonal principal
si f=c entonces
sdp=sdp+mnum[f][c]
fin de si
//diagonal secundaria
si(f+c)=2 entonces
sds=sds+mnum[f][c]
fin de si
//acumulador de filas
sfila=sfila+mnum[f][c]
fin de para
afila[f]=sfila
sfila=0 //volver a inicializar la variable
//acumulador de columnas
sc1=mnum[f][0]
sc2=mnum[f][1]
sc3=mnum[f][2]
fin de para
5.-escribir sdp,sds,sc1,sc2,sc3,afila[0],afila[1],afila[2]
6.-fin

Página 212 de 235


Italo Yaranga Vite
*Implementación del algoritmo C++.

#include<iostream.h>
#include<conio.h>
//procedimiento principal
int main(){
//declarar variables
int n,f,c,sc1=0,sc2=0,sc3=0,sdp=0,sds=0,afila[3],sfila=0;
int mnum[3][3];
//entrada de datos
for(f=0;f<3;f++){ //fila
for(c=0;c<3;c++){ //columna
cout<<"Ingresar numero:";cin>>n;
mnum[f][c]=n;
}
}
//proceso de datos
for(f=0;f<3;f++){ //fila
for(c=0;c<3;c++){ //columna
//diagonal principal
if(f==c){
sdp=sdp+mnum[f][c];
}
if((f+c)==2) {
sds=sds+mnum[f][c];
}
//acumulador de filas
sfila=sfila+mnum[f][c];
}
afila[f]=sfila;
sfila=0; //inicializar variable
//acumulador de columnas
sc1= sc1+mnum[f][0];
sc2= sc2+mnum[f][1];
sc3= sc3+mnum[f][2];
}
//salida de datos
cout<<"La suma de la diagonal principal es: "<<sdp<<endl;
cout<<"La suma de la diagonal secundaria es: "<<sds<<endl;
cout<<"La suma de fila 1: "<<afila [0]<<endl;
cout<<"La suma de fila 2: "<<afila [1]<<endl;
cout<<"La suma de fila 3: "<<afila [2]<<endl;
cout<<"La suma de comuna 1: "<<sc1<<endl;
cout<<"La suma de comuna 2: "<<sc2<<endl;
cout<<"La suma de comuna 3: "<<sc3<<endl;
getch();
}

Página 213 de 235


Italo Yaranga Vite

*Ejecución del programa

3. Diseñar un algoritmo que permita registrar cinco personas dentro de una matriz de datos y
realizar una búsqueda de la persona por el DNI. Visualizando el nombre de la persona si la
búsqueda es satisfactoria sino un mensaje persona no existe.

Solución:
*Análisis de datos
E:DNI,nombre,xdni(dni a buscar)
S:xnombre

*Algoritmo
1.-inicio
2.-DNI='',nombre='',xdni='',xnombre='',i=0,adni[5]:'',pos=0
anombre[5]:'',m=''
3.-para i=0 hasta 4
leer DNI,nombre
adni[i]=DNI
anombre[i]=nombre
fin de para
4.-leer xdni
para i=0 hasta 4
si adni[i]=xdni entonces
pos=i //posición donde se encuentra el elemento buscado
i=5
sino
m='persona no existe'
fin de si
fin de para
5.-escribir
si pos>=0 entonces
escribir anombre [pos]
sino
escribir m
fin de si
6.-fin

Página 214 de 235


Italo Yaranga Vite
*Implementación del algoritmo C++.

//biblioteca de comandos de entrada y salida de datos por consola


#include <iostream.h>
#include <conio.h>
#include <vector>
using namespace std;
//procedimiento principal
int main(){
// creación de un vector tipo string
vector<string> v1;
vector<string> v2;
char xdni[10];
char nom[10];
char m[10];
//declarar variables
int n,nmy,i,pos;
//entrada de datos
for(i=0;i<5;i++){
cout<<"Ingresar DNI "<<(i+1)<<":";cin>>xdni;
v1.push_back(xdni);
cout<<"Ingresar Nombre "<<(i+1)<<":";cin>>nom;
v2.push_back(nom);
}
//proceso de datos
cout<<"Ingresar el DNI a buscar:";cin>>xdni;
for(i=0;i<5;i++){
if(v1[i]==xdni){
pos=i;
i=6;//permite finalizar la estructura repetitiva
}else{
strcpy(m,"Persona no existe");
pos=-1;
}
}
//salida de datos
if(pos>=0){
cout<<v2[pos]<<" "<<endl;
}else{
cout<<m<<endl;
}
getch();//permite leer un carácter del teclado
}

*Ejecución del programa

Página 215 de 235


Italo Yaranga Vite

4. Diseñar un algoritmo que permita registrar 5 animales de un zoológico dentro de un matriz


tomando encuenta su nombre y el tipo de alimentación (carnívoro,herbívoro, omnìvoro).
Dentro de otra matriz de 5x2 almacenar el precio por paquete de alimento para la
respectiva especie y la cantidad de paquetes consumidos en el tiempo a evaluar. Visualizar
los datos de la especie que tiene mayores egresos en el rubro de la alimentación.

Solución:

*Análisis de datos
E: nom(nombre del animal), clas(tipo de alimentación), n(número)
S: Datos de la especie con mayores egresos
*Algortimo
1.-inicio
2.-nom='', clas='', n=0.0, i=0, f=0, c=0, k=0, pos=0,
my=0.0, m[5,3]:0.0, cd[5]:0.0, anom[5]:''
aclas[5]:''
3.-para i=0 hasta 4
escribir 'ESPECIE'(i+1)
leer nom, clas
anom[i]=nom
aclas[i]=clas
fin de para
para f=0 hasta 4
escribir 'ESPECIE'(f+1)': PxPQT -> CANTIDAD'
para c=0 hasta 1
leer n
m[f,c]=n
fin de para
fin de para
4.-para k=0 hasta 4
cd[k]=m[k,0]*m[k,1]
fin de para
my=cd[0]
pos=0
si cd[1]>my entonces
my=cd[1]
pos=1
fin de si
si cd[2]>my entonces
my=cd[2]
pos=2
fin de si
si cd[3]>my entonces
my=cd[3]
pos=3
fin de si
si cd[4]>my entonces
my=cd[4]
pos=4
fin de si
5.-escribir 'ESPECIE'(pos+1)'/'anom[pos]'/'aclas[pos]
6.-fin
*Prueba de Escritorio
anom[5]: 'PUMA', 'OVEJA', 'CONDOR', 'MONO', 'JIRAFA'
aclas[5]: 'CARNIVORO', 'HERBIVORO', 'CARNIVORO', 'OMNIVORO', 'HERBIVORO'
n= 500, 10, 100, 8, 300, 9, 400, 6, 200, 8
'ESPECIE 1'
anom[pos]: 'PUMA'
aclas[pos]: 'CARNIVORO'

Página 216 de 235


Italo Yaranga Vite
*Implementación del algoritmo C++.
//librería de entrada y salida de datos por consola
#include <iostream.h>
#include <conio.h>
#include <vector>
using namespace std;
int main(){
//creación de un vector string
vector<string> v1;
vector<string> v2;
char nom[10];
char clas[10];
//declarar variables
int n,i,f,c,pos,k;
double my;
double m[5][2];
double cd[5];
//entrada de datos
cout<<" ZOOLOGICO XD"<<endl;
for(i=0;i<=4;i++){
cout<<""<<endl;
cout<<"ESPECIE "<<(i+1)<<" : "<<endl;
cout<<"Ingresar nombre: ";cin>>nom;
v1.push_back(nom);
cout<<"Tipo de alimentacion: ";cin>>clas;
v2.push_back(clas);
}
cout<<"____________________________________"<<endl;
for(f=0;f<=4;f++){ //filas
cout<<""<<endl;
cout<<"ESPECIE "<<(f+1)<<": PxPQT -> CANTIDAD"<<endl;
for(c=0;c<=1;c++){ //columna
cout<<"-Ingresar: ";cin>>n;
m[f][c]=n;
}
}
//procesos de datos
cout<<""<<endl;
cout<<"------------------------------------"<<endl;
for(k=0;k<=4;k++){
cd[k]=m[k][0]*m[k][1];
}
my=cd[0];
pos=0;
if(cd[1]>my){
my=cd[1];
pos=1;
}
if(cd[2]>my){
my=cd[2];
pos=2;
}

Página 217 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.


if(cd[3]>my){
my=cd[3];
pos=3;
}

if(cd[4]>my){
my=cd[4];
pos=4;
}
//salida de datos
cout<<""<<endl;
cout<<"Genera mas egresos:"<<endl;
cout<<"****************** ESPECIE "<<(pos+1)<<" / "<<v1[pos]<<" / "<<v2[pos];
getch();
} //fin de procedimiento principal

*Ejecución del programa

Página 218 de 235


Italo Yaranga Vite
5. Diseñar un algoritmo que permita registrar 7 regiones en una matriz asignandole un codigo y
especificando su capital. Luego del almacenamiento se debe solicitar ingresar un codigo de
región apareciendo de inmediato la región que representa y una interrogante sobre su
capital. Visualizar un mensaje que me informe si la respuesta fue correcta o no.

Solución:
*Análisis de datos
E: cod(código de región), reg(región), cap(capital), xcod, xcap
S: m(mensaje)

*Algoritmo
1.-inicio
2.-cod='', reg='', cap='', acod[7]:'', areg[7]:'', acap[7]:'', i=0,
xcod='', xcap='', m=''
3.-para i=0 hasta 6
leer cod, reg, cap
acod[i]=cod
areg[i]=reg
acap[i]=cap
fin de para
4.-escribir 'PONTE A PRUEBA'
leer xcod
para i=0 hasta 6
si acod[i]=xcod entonces
pos=i
escribir areg[pos]
i=7
fin de si
fin de para
escribir '¿CUAL ES SU CAPITAL?'
leer xcap
para i=0 hasta 6
si acap[pos]=xcap entonces
m='Respuesta Correcta'
sino
m='Respuesta Incorrecta'
fin de si
fin de para
5.-escribir m
6.-fin

*Prueba de Escritorio
acod[7]: 1, 2, 3, 4, 5, 6, 7
areg[7]: 'LAMBAYEQUE', 'ANCASH', 'UCAYALI', 'LORETO', 'AMAZONAS', 'JUNIN',
'APURIMAC'
acap[7]: 'CHICLAYO', 'HUARAZ', 'PUCALLPA', 'IQUITOS', 'CHACHAPOYAS',
'HUANCAYO', 'ABANCAY'
xcod= '3'
areg[pos]='UCAYALI'
xcap= 'IQUITOS'
m='Respuesta Incorrecta'

Página 219 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.

//librería de entrada y salida de datos por consola


#include <iostream.h>
#include <conio.h>
#include <vector>
using namespace std;
int main(){
//creación de un vector string
vector<string> v1;
vector<string> v2;
vector<string> v3;
char cod[10];
char reg[10];
char cap[10];
//declarar variables
int i,pos;
char xcod[20];
char xcap[20];
char m[20];
//entrada de datos
cout<<" REGINES DEL PERU"<<endl;
for(i=0;i<=6;i++){
cout<<""<<endl;
cout<<"Ingresar codigo: ";cin>>cod;
v1.push_back(cod);
cout<<"Ingresar region: ";cin>>reg;
v2.push_back(reg);
cout<<"Ingresar capital : ";cin>>cap;
v3.push_back(cap);
}
//procesos de datos
cout<<""<<endl;
cout<<""<<endl;
cout<<""<<endl;
cout<<""<<endl;
cout<<" (......)"<<endl;
cout<<" ^_^"<<endl;
cout<<""<<endl;
cout<<""<<endl;
cout<<"PONTE A PRUEBA***"<<endl;
cout<<""<<endl;
cout<<"Ingresar un codigo: ";cin>>xcod;
for(i=0;i<=6;i++){
if(v1[i]==xcod){
pos=i;
cout<<"------------------------"<<v2[pos]<<endl;
i=7;
}
}
cout<<""<<endl;
cout<<"¿CUAL ES SU CAPITAL?: ";cin>>xcap;

Página 220 de 235


Italo Yaranga Vite

for(i=0;i<=6;i++){
if(v3[pos]==xcap){
strcpy(m,"Respuesta Correcta");
}else{
strcpy(m,"Respuesta Incorrecta");
i=7;
}
}
//salida de datos
cout<<""<<endl;
cout<<"-------------"<<m;
getch();
} //fin de procedimiento principal

*Ejecución del programa

Página 221 de 235


Italo Yaranga Vite

6. Diseñar un algoritmo que permita registrar en una matriz 4 líneas de transporte tomando en
cuenta su distrito de partida y su distrito de destino, en la ultima fila se debe registre NPA
(no podemos ayudarlo). Realizar una búsqueda con el distrito al que quiero dirigirme y
visualizar los datos de la ruta de transporte que puedo usar si la bùsqueda es satisfactoria
sino mostrar el mensaje NPA.

Solución:
*Análisis de datos
E: l(lìnea de transpote), dp(distrito de partida), dd(destrito de destino),
dqd(distrito a dirigirme)
S: Datos de la empresa o NPA

*Algortimo
1.-inicio
2.-l='', dp='', dd='', al[5]:'', adp[5]:'', add[5]:'', i=0, pos=0, dqd=''
3.-para i=0 hasta 4
leer l, dp, dd
al[i]=l
adp[i]=dp
add[i]=dd
fin de para
4.-escribir '¿A DONDE QUIERE DIRIGIRSE'
leer dqd
para i=0 hasta 4
si add[i]=dqd entonces
pos=i
i=5
sino
pos=4
fin de si
fin de para
5.-escribir al[pos], adp[pos], add[pos]
6.-fin

*Prueba de Escritorio
al[5]: 'SM-27', 'SO-16', 'SO-18','NO-01','NPA'
adp[5]:
'PACHACAMAC','SAN_BARTOLO','VILLA_EL_SALVADOR','VILLA_EL_SALVADO
R','-'
add[5]: 'BREÑA','SAN_MIGUEL','CARABAYLLO','COMAS','-'
dqd=LURIN
NPA: ---

Página 222 de 235


Italo Yaranga Vite
*Implementación del algoritmo C++.

//librería de entrada y salida de datos por consola


#include <iostream.h>
#include <conio.h>
#include <vector>
using namespace std;
int main(){
//creación de un vestor string
vector<string> v1;
vector<string> v2;
vector<string> v3;
char l[20];
char dp[20];
char dd[20];
//declarar variables
int i,pos;
char dqd[20];
//entrada de datos
for(i=0;i<=4;i++){
cout<<""<<endl;
cout<<"Ingresar ruta: ";cin>>l;
v1.push_back(l);
cout<<"Distrito de partida: ";cin>>dp;
v2.push_back(dp);
cout<<"Distrito de destino: ";cin>>dd;
v3.push_back(dd);
}
//procesos de datos
cout<<""<<endl;
cout<<"¿A DONDE QUIERE DIRIGIRSE? ";cin>>dqd;
for(i=0;i<=4;i++){
if(v3[i]==dqd){
pos=i;
i=5;
}else{
pos=4;
}
}
//salida de datos
cout<<""<<endl;
cout<<"TIENE LA SIGUIENTE OPCION"<<endl;
cout<<v1[pos]<<" : "<<v2[pos]<<"-"<<v3[pos];
getch();
} //fin de procedimiento principal

Página 223 de 235


Italo Yaranga Vite

*Ejecución del programa

7. Diseñar un algoritmo que genere la suma de dos matrices de 2x2.


Solución:
*Análisis de datos:
E:n, f, c, a[2][2], b[2][2]
S:s[2][2]
*Algoritmo:
1.-inicio
2.-n=0, f=0, c=0, a[2][2]:entero, b[2][2]:entero, s[2][2]:entero
3.-para f = 0 hasta 2 // fila
para c = 0 hasta 2 // columna
leer n
a[f][c]=n
fin de para
fin de para
para f = 0 hasta 2 // fila
para c = 0 hasta 2 // columna
leer n
b[f][c]=n
fin de para
fin de para
4.-para f = 0 hasta 2 // fila
para c = 0 hasta 2 // columna
s[f][c]=a[f][c]+b[f][c]
escribir s[f][c]
s[f][c]=0
fin de para
fin de para
5.-fin
*Prueba de escritorio:
a[2][2]= 1 2
34
b[2][2]= 5 6
78
s[2][2]= 6 8
10 12

Página 224 de 235


Italo Yaranga Vite
*Implementación del algoritmo C++.

#include <iostream.h> // librería de entrada y salida de datos de una consola


#include <conio.h>

//procedimiento principal
int main(){
//declarar variables
int n, f, c;
int a[2][2];
int b[2][2];
int s[2][2];
//entrada de datos
for(f=0;f<2;f++){ // filas
for(c=0;c<2;c++){ // columnas
cout<<"Matriz A. Ingresar numero de la fila "<<(f+1)<<": ";cin>>n;
a[f][c]=n;
}
}
for(f=0;f<2;f++){ // filas
for(c=0;c<2;c++){ // columnas
cout<<"Matriz B. Ingresar numero de la fila "<<(f+1)<<": ";cin>>n;
b[f][c]=n;
}
}

// proceso de datos
cout<<endl;
for(f=0;f<2;f++){ // filas
for(c=0;c<2;c++){ // columnas
s[f][c]=a[f][c]+b[f][c];

cout<<"La Matriz generada por la suma es: fila "<<(f+1)<<": "<<s[f][c]<<endl;


s[f][c]=0;
}// fin de for
}//fin de for
getch();
}// fin de procedimiento

Página 225 de 235


Italo Yaranga Vite

*Ejecución del programa

Página 226 de 235


Italo Yaranga Vite
8. Diseñar un algoritmo que lea por teclado una matriz 3x3 y muestre su matriz traspuesta.

Solución:

*Analisis
E:m(matriz ingresada)
S:-----

*Algoritmo
1.-inicio
2.- n=0,i=0,j=0,m[3][3]:0
3.-//leer m
para i=1 hasta 3
para j=1 hasta 3
leer n
m[i][j]=n
fin para
fin para
4.- //imprimir matriz transpuesta
para j=1 hasta 3
para i=1 hasta 3
imprimir m[i][j]=n
fin para
fin para
5.- fin

*Prueba de escritorio
M =(/ 1 2 3 - 4 5 6 - 7 8 9 /)
MT =(/ 1 4 7 - 2 5 8 - 3 6 0/)

Página 227 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.

#include <iostream.h>
#include <conio.h>

//PROGRAMA PRINCIPAL
int main(){
//declaracion de variables
int n,m[3][3],i,j;

//entrada de la matriz
cout<<"Ingresar elementos de la matriz"<<endl;
for (i=1;i<=3;i++){
for (j=1;j<=3;j++){
cin>>n;
m[i][j]=n;
}//end for J
}//end for

for (j=1;j<=3;j++){
cout<<endl;
for (i=1;i<=3;i++){
cout<<m[i][j]<<" ";
}
}

getch();
}//FIN DE PROGRAMA

*Ejecución del programa

Página 228 de 235


Italo Yaranga Vite
9. Diseñar un algoritmo que lea por teclado una matriz M(3x3) y muestre las matrices M+M y
MxM.

Solución:

*Analisis de datos
E:m1(matriz ingresada)
S:m2(matriz suma),m3(matriz producto)

*subrutina
procedimiento suma(m[3][3]:entero)
i=0,j=0,m2[3][3]:0
para i=0 hasta 2
para j=0 hasta 2
m2[i][j]=2*m[i][j]
imprimir m2[i][j]
fin para
fin para

procedimiento producto(m[3][3]:entero)
i=0,j=0,m3[3][3]:0
para i=0 hasta 2
para j=0 hasta 2
m3[i][j]=m[i][j]*m[i][j]
imprimir m3[i][j]
fin para
fin para

*Algoritmo
1.- inicio
2.- i=0,j=0,n=0,m1[3][3]:0
3.- //leer m1
para i=0 hasta 2
para j=0 hasta 2
leer n
m1[i][j]=n
fin para
fin para
4.- //llamando a las subrutinas
suma(m1)
producto(m1)
5.- fin

*Prueba de escritorio
m1= 1-2-3-4-5-6-7-8-9
M+M= 2-4-6-8-10-12-14-16-18
M*M= 1-4-9-16-25-36-49-64-81

Página 229 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.

#include <iostream.h>
#include <conio.h>
void suma(int m[3][3]){
int i,j,m2[3][3];
cout<<"La matriz suma M+M= "<<endl;
for (i=0;i<=2;i++){
cout<<endl;
for (j=0;j<=2;j++){
m2[i][j]=2*m[i][j];
cout<<m2[i][j]<<" ";
}//
}//end for
}//end sub

void producto(int m[3][3]){


int i,j,m3[3][3];
cout<<"La matriz producto M*M= "<<endl;
for (i=0;i<=2;i++){
cout<<endl;
for (j=0;j<=2;j++){
m3[i][j]=m[i][j]*m[i][j];
cout<<m3[i][j]<<" ";
}//
}//end for
}//end sub

//programa principal
int main(){
//declarando variables
int i,j,n,m1[3][3];

//entrada de datos
cout<<"Infresar los elementos de la matriz"<<endl;
for (i=0;i<=2;i++){
for (j=0;j<=2;j++){
cin>>n;
m1[i][j]=n;
}//
}//end for

//salida de datos
suma(m1);
cout<<endl;
producto(m1);
getch();
}//fin de programa

Página 230 de 235


Italo Yaranga Vite
*Ejecución del programa

Página 231 de 235


Italo Yaranga Vite

10. Diseñar un algoritmo para un conjunto de 5 alumnos se desea almacenar las notas de sus
4 prácticas y presentar el promedio por alumno, sabiendo que este se calcula eliminando la
nota más baja.

Solución:

*Análisis de datos
E:nt(nota)
S:promedios

*Algoritmo
1.-inicio
2.-nt=0.0,s=0.0,min=0.0,f=0,c=0,nota[5,4]:0.0
3.-para f=0 hasta 4//fila
para c=0 hasta 3//columna
leer nt
nota[f,c]=nt
fin de para
fin de para
4.-para f=0 hasta 4
s=nota[f,0]
min=nota[f,0]
para c=1 hasta 3
si nota[f,c]<min entonces
min=nota[f,c]
fin de si
s=s+nota[f,c]
fin de para
escribir (s-min)/3
fin de para
5.-fin

*Prueba de Escritorio
notas del alumno 1 = 16-14-15-13
notas del alumno 2 = 17-14-20-13
notas del alumno 3 = 11-15-18-18
notas del alumno 4 = 14-15-18-19
notas del alumno 5 = 15-17-14-18
promedio de notas del alumno 1 = 15
promedio de notas del alumno 2 = 17
promedio de notas del alumno 3 = 17
promedio de notas del alumno 4 = 17.3333
promedio de notas del alumno 5 = 16.6667

Página 232 de 235


Italo Yaranga Vite

*Implementación del algoritmo C++.

//librería de entrada y salida de datos por consola


#include <iostream.h>
#include <conio.h>
//procedimiento principal
int main(){
//declarar variables
double nt,s,min;
int f,c;
double nota[5][4];
//entrada de datos
cout<<"Para un conjunto de 5 alumnos se presentara el promedio por alumno de
las 4 practicas, sabiendo que este se calcula eliminando la nota mas baja"<<endl;
for(f=0;f<=4;f++){
cout<<endl;
cout<<"Notas del Alumno "<<f+1<<endl;
cout<<endl;
for(c=0;c<=3;c++){
cout<<"Ingrese nota "<<c+1<<": ";cin>>nt;
nota[f][c]=nt;
}//fin de for
}//fin de for
//proceso de datos
for(f=0;f<=4;f++){
s=nota[f][0];
min=nota[f][0];
for(c=1;c<=3;c++){
if(nota[f][c]<min){
min=nota[f][c];
}//fin de if
s=s+nota[f][c];
}//fin de for
cout<<endl;
cout<<"El promedio de las notas del Alumno "<<f+1<<" es: "<<(s-min)/3<<endl;
}//fin de for
getch();
}//fin de procedimiento

Página 233 de 235


Italo Yaranga Vite

*Ejecución del programa

Página 234 de 235

También podría gustarte