You are on page 1of 52

1

Universidad Juan Pablo II


ESCUELA DE INGENIERIA DE SISTEMAS
Gua de Laboratorio de Algoritmos
Sesin N
0
2
EL ENTORNO DEL BORLAND C++

INTRODUCCION

El concepto de algoritmo, aunque similar y obviamente relacionado, no debe confundirse con el
concepto de programa. Mientras el primero es la especificacin de un conjunto de pasos
(operaciones, instrucciones, rdenes,...) orientados a la resolucin de un problema, el segundo es el
conjunto de operaciones especificadas en un determinado lenguaje de programacin y para un
computador concreto, susceptible de ser ejecutado (o compilado). Un algoritmo, estrictamente
hablando, no puede ejecutarse hasta que se implementa, ya sea en un lenguaje de programacin, en
un circuito elctrico, en un aparato mecnico, usando papel y lpiz, o en algn otro modelo de
computacin.
El software que usaremos para la prueba y ejecucin de los algoritmos desarrollados en aula ser el
Borlan C++ 4.5, el cual es sencillo de manejar por su entorno prctico, y permitir al alumno digitar
sus soluciones algortmicas para probar la lgica de sus planteamientos.

I. OBJETIVOS

1. Conocer el Borlan C++.
2. Codificar, compilar y ejecutar los ejercicios de aplicacin.


II. IMPORTANTE

Antes de comenzar a manipular el Borland C++, crearemos siempre, una carpeta, donde se guardarn
todas las aplicaciones realizadas en el presente laboratorio. Para ello realice lo siguiente:
Ingrese al Explorador del Windows (puede hacerlo dando clic derecho sobre el Botn Inicio de
la Barra de Tareas y seleccione la opcin Explorar).
La ventana del Explorador esta dividida en dos columnas, en la columna de la izquierda
busque hacia abajo la unidad de almacenamiento (D:) y de un clic izquierdo sobre l. Luego
dirija el mouse hacia la columna de la derecha y en un sector vaco, presione clic derecho,
seleccione la opcin Nuevo y luego la opcin Carpeta.
Aparecer una carpeta amarilla con un texto: Nueva Carpeta sombreado en azul, digite sobre
l, el nombre para su carpeta (este puede ser LABORAT-1), luego de digitar presione la tecla
Enter. Listo, ya tiene su carpeta dentro de la cual guardar todo lo que trabaje a
continuacin.
Cierre la ventana del Explorador del Windows.


III. MANEJO DEL SOFTWARE

2
Para ingresar al Borland C++, puede verificar en el escritorio del Windows si aparece el icono de
acceso directo y de doble clic sobre l, sino aparece, puede dirigirse al Botn Inicio


seleccionar la opcin Programas, y de la lista que se despliega, seleccionar Borlan C++ 4.5 a
continuacin de la siguiente lista, la opcin Borlan C++.

Se mostrar la siguiente ventana, que es el entorno de trabajo del Borland C++.
























El cursor aparece disponible en la ventana de la hoja de trabajo (hoja en blanco) para que pueda
digitar su programa.
NOTA:
a) Si aparece la hoja escrita con algn cdigo, cierre solo la ventana de la hoja de trabajo.
b) Si no aparece la hoja de trabajo, o la cerr, dirjase al men File y seleccione la opcin New,
con ello aparecer una nueva hoja de trabajo donde podr comenzar a digitar.

1. Digite el cdigo de su algoritmo, por ejemplo:
#include <iostream.h>
void main( )
{
float sb, mv1, mv2, mv3, extra1, extra2, extra3, totextra, sueldo;
cout<< Ingresar sueldo base <<endl;
cin>> sb;
cout<< Ingresar monto de la 1 venta <<endl;
cin>> mv1;
cout<< Ingresar monto de la 2 venta <<endl;
cin>> mv2;
cout<< Ingresar monto de la 3 venta <<endl;
cin>> mv3;
extra1 = mv1 * 0.10;
extra2 = mv2 * 0.10;
extra3 = mv3 * 0.10;
totextra = extra1 + extra2 + extra3;
sueldo = sb + totextra;

cout<< El total de dinero extra es: << totextra;
cout<< El salario de mes es: << sueldo;
3
}



2. Guarde su archivo, para ello dirjase al men File y seleccione la opcin Save as , le mostrar el
siguiente cuadro de dilogo:



Seleccione de la parte inferior central de la ventana (Drivers:) el disco D:
En la ventana superior aparecern todas las carpetas creadas en la unidad D:, usted busque
la suya (por ejemplo: LABORAT-1) y de doble clic sobre l.
En la ventana del lado izquierdo digite el nombre de su programa (por ejemplo: ejercicio1).
Presione el botn OK.
NOTA: asegrese que su archivo quedo guardado, mirando el ttulo de la ventana donde digito su
programa (hoja de trabajo), este debe figurar con el nombre ejercicio1 (o con el nombre que
usted lo guard).

3. Compile su programa para que ste sea traducido de lenguaje de alto nivel a lenguaje de
mquina, para ello dirjase al men Project y seleccione la opcin Compile, o presione las teclas
Alt + F9, le mostrar una ventana donde le indicar si hay errores o no de traduccin.

Si aparecen errores, presionar la tecla OK. En la parte inferior aparecer una ventana con la
lista de errores detectados, verifique el primer error, corrija su cdigo y vuelva a compilar,
as sucesivamente uno por uno, hasta tener 0 errores.
Cuando tenga 0 errores, presione la tecla OK.

4. Ejecute su programa para comprobar si los ingresos, el proceso y la salida que esta
proporcionando su programa son lo que usted espera. Para ello presione el botn Run de la
4
barra de herramientas. Se mostrar una ventana donde estar la frase que usted digit como
entrada para su programa, complete todos los datos que le solicita y verifique que los resultados
que esta proporcionado su programa son correctos.
Si no fueran correctos, cierre la ventana de ejecucin y verifique su cdigo, corrija algn mal
clculo o alguna mala asignacin de variables y vuelva a compilar, ejecutar y verificar con
nuevos datos si los resultados son correctos.
Pruebe varias veces su programa con distintos datos para garantizar el buen funcionamiento
de su aplicacin.
Cuando todo este bien, cierre la ventana donde digito su programa (hoja de trabajo) y, a
continuacin genere una nueva hoja de trabajo para que pueda digitar el cdigo de su
siguiente algoritmo. Esto lo puede hacer dirigindose al men File y seleccione la opcin
New, con ello aparecer la nueva hoja de trabajo para comenzar a digitar.

Contine con los pasos del 1 al 4 para cada uno de los ejercicios que realice.


IV. EQUIPOS Y MATERIALES
Computadora personal
Programa Borland C++ 4.5 instalado
Cuaderno de clases, donde estn los ejercicios resueltos en pseudocdigos.

V. METODOLOGIA Y ACTIVIDADES

a) Encender el computador.
b) Crear carpeta donde guardar sus programas.
c) Ingresar al Borland C++ 4.5
d) Codificar los algoritmos desarrollados en el aula.
e) Presentar avances y ejecucin de cada uno de los ejercicios al docente o jefe de prctica
encargado para la calificacin correspondiente.
f) Guardar la carpeta de sus archivos a sus memorias.
g) Retirarse del laboratorio de forma ordenada.


ALGORITMOS
Gua Practica N 2

1. Dado un nmero natural de 4 cifras disee un algoritmo que permita obtener el revs del
nmero. As, si se lee el nmero 2358, el algoritmo deber imprimir 8532.
Solucin:
#include<iostream.h>
void main() {
int n,x,mil,cen,dec,uni,nr;
cout<<"Ingresar numero de 4 cifras: ";
cin>>n;
x=n;
mil=x/1000;
x=x%1000;
cen=x/100;
x=x%100;
dec=x/10;
uni=x%10;
nr=uni*1000+dec*100+cen*10+mil;
cout<<"El numero original es: "<<n<<endl;
cout<<"Y el numero al reves es: "<<nr<<endl;
}
5
2. Determinar el valor de la hipotenusa de un triangulo rectngulo aplicando el teorema de
Pitgoras, el permetro y el rea conociendo el valor de sus catetos.
3. Construir un algoritmo que calcule el monto que pagar un determinado alumno en el momento
de la matricula, sabiendo que dicho alumno realiza una matrcula por crditos, el costo de cada
crdito es de S/.27.50. La Cantidad de crditos por ciclo es del total de 21.
4. En un sistema de numeracin inglesa la estatura de una persona esta dada por la suma de los
pies y pulgadas que tiene. As por ejemplo una persona puede medir 5 pies con 4 pulgadas.
Construir un algoritmo que exprese este tipo de medida a metros. Se sabe que: 1 pie = 12
pulgadas, 1 pulgada = 2.54 cm y 1 metro = 100 cm.
Solucin:
#include <iostream.h>
void main() {
float pie,pul,pul1,pult,cm,mt;
cout<<"Ingresar cantidad de pies: ";
cin>>pie;
cout<<"Ingresar cantidad de pulgadas: ";
cin>>pul;
pul1=pie*12;
pult=pul+pul1;
cm=pult*2.54;
mt=cm/100;
cout<<"La persona mide: "<<mt<<" centimetros"<<endl;
}
5. Un hospital ha recibido una donacin especial que ser repartida de la siguiente manera: 45%
para Medicina General, 30% para Cardiologa, 15% para Pediatra y el resto para
Traumatologa. Disee un algoritmo que determine cuanto recibir cada rea.
6. Construir un algoritmo que calcule el monto mensual que adeuda un cliente que compra un
equipo de sonido al crdito, sabiendo que el monto de compra recibe un incremento del 19% de
impuesto, as como, de 5% de inters mensual por cada letra que fracciona.
Solucin:
#include <iostream.h>
void main() {
float costo,igv,costoneto,pmensual,inc,pfinal;
int cuota;
cout<<"Ingresar costo del equipo de sonido: ";
cin>>costo;
cout<<"Ingresar cantidad de cuotas: ";
cin>>cuota;
igv=costo*0.19;
costoneto=costo+igv;
pmensual=costoneto/cuota;
inc=pmensual*0.05;
pfinal=pmensual+inc;
cout<<"La cuota mensual es: "<<pfinal<<" soles"<<endl;
}
7. disee un algoritmo para convertir una cantidad dada en pulgadas a pies, yardas y centmetros.
Se sabe que: 1 yarda = 3 pies, 1 pie = 12 pulgadas, 1 pulgada = 2.54 cm , 1 metro = 100 cm
8. Dada la capacidad de un recipiente en galones, disee una algoritmo que exprese dicha
capacidad en litros, metros cbicos y pies cbicos. Considere que: 1 pie cbico = 0.0283 metros
cbicos, 1 galn = 3.79 litros, 1 metro cbico = 1000 litros
6
9. Tres personas deciden invertir su dinero para fundar una empresa. Cada una de ellas invierte
una cantidad distinta. Obtener el porcentaje que cada quien invierte con respecto a la cantidad
total invertida.
10. Disee un algoritmo que determine el porcentaje de varones y de mujeres que hay en un saln
de clase.


Universidad Juan Pablo II
ESCUELA DE INGENIERIA DE SISTEMAS
Gua de Laboratorio de Algoritmos
Sesin N
0
3
CODIFICANDO CON ESTRUCTURAS SECUENCIALES


I. OBJETIVOS

Al trmino de esta experiencia, el estudiante ser capaz de:
1. Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos.
2. Identificar los diversos errores de compilacin y corregirlos adecuadamente.
3. Plantear correctamente las estructuras secuenciales en cdigo C++.
4. Usar correctamente el programa.


II. FUNDAMENTO TEORICO

Para alcanzar los objetivos de esta experiencia, es necesario tener en consideracin los siguientes
aspectos tericos:
Estructura Secuencial
Se caracteriza porque una accin se ejecuta detrs de otra. El flujo del programa coincide con el
orden fsico en el que se han ido poniendo las instrucciones. Dentro de este tipo podemos encontrar
operaciones de inicio/fin, inicializacin de variables, operaciones de asignacin, clculo,
sumarizacin, etc.
Este tipo de estructura se basa en las 5 fases de que consta todo algoritmo o programa:
1. Definicin de variables (Declaracin)
2. Inicializacin de variables.
3. Lectura de datos
4. Clculo
5. Salida


7
III. EQUIPOS Y MATERIALES

Computadora personal
Programa Borland C++ 4.5 instalado
Cuaderno de clases, donde estn los ejercicios resueltos en pseudocdigos.


IV. PROCEDIMIENTO

a) Encender el computador.
b) Crear carpeta donde guardar sus programas.
c) Ingresar al Borland C++ 4.5
d) Codificar los algoritmos desarrollados en el aula.
e) Presentar avances y ejecucin de cada uno de los ejercicios al docente o jefe de prctica
encargado para la calificacin correspondiente.
f) Guardar la carpeta de sus archivos a sus memorias.
g) Retirarse del laboratorio de forma ordenada.

8
ALGORITMOS Estructuras Secuenciales
Gua Practica N2

1. Disee un algoritmo que intercambie las cifras de las unidades de dos nmeros naturales.
Solucin:
# include<iostream.h>
void main() {
int n1,n2,u1,u2;
cout<<"Ingresar primer numero: ";
cin>>n1;
cout<<"Ingresar segundo numero: ";
cin>>n2;
u1=n1%10;
u2=n2%10;
n1=(n1-u1)+u2;
n2=(n2-u2)+u1;
cout<<"Los numeros con las unidades intercambiadas son: "<<n1<<" y "<<n2<<endl;
}
2. En una tienda se ha puesto en oferta la venta de cierto tipo de producto ofreciendo un
descuento fijo del 11% del monto de la compra. Disee un algoritmo que determine el monto
original de la compra, el monto del descuento y el monto a pagar por la compra de cierta
cantidad de unidades del producto.
3. Un alumno desea saber cual ser su calificacin al final de un curso, sabiendo que dicha
calificacin se compone de los siguientes porcentajes:
55% del promedio de sus tres practicas
30% de la calificacin del examen final
15% de la calificacin del trabajo final
Solucin:
#include <iostream.h>
void main () {
int p1,p2,p3,exf,trab,prom;
float porcp,porcexf,porctraf,nf;
cout<<"Ingresar notas de las practicas 1, 2 y 3: ";
cin>>p1>>p2>>p3;
cout<<"Ingresar nota de examen final: ";
cin>>exf;
cout<<"Ingresar nota de trabajo final: ";
cin>>trab;
prom=(p1+p2+p3)/3;
porcp=prom*0.55;
porcexf=exf*0.30;
porctraf=trab*0.15;
nf=porcp+porcexf+porctraf;
cout<<"El porcentaje de las 3 practicas es: "<<porcp<<endl;
cout<<"El porcentaje del examen final es: "<<porcexf<<endl;
cout<<"El porcentaje del trabajo final es: "<<porctraf<<endl;
cout<<"La nota final del alumno es: "<<nf<<endl;
}
4. El dueo de una tienda compra un artculo a un precio determinado. Obtener el precio en que lo
debe vender para obtener una ganancia del 30%.
9
5. Disee un algoritmo para repartir una cantidad de dinero a tres personas en forma proporcional
a sus edades. El monto que le corresponde a cada persona se calcula con la siguiente formula:
Monto de la persona = edad de la persona * monto a repartir
Suma total de edades
6. Disee un algoritmo que lea la capacidad de un disco duro en gigabytes y lo convierta a
megabytes, kilobytes y bytes.
1 kilobytes = 1024 bytes
1 megabytes = 1024 kilobytes
1 gigabytes = 1024 megabytes
7. Construir un algoritmo que lea una temperatura en grados Centgrados y calcule su equivalente
en grados Fahrenheit, Kelvin y Rankine.
C = F 32 = K 273 = R 492
5 9 5 9
8. Dado un nmero natural de 5 cifras, disee un algoritmo que determine la suma y el producto de
las cifras del nmero.
9. Dada una hora del da en el formato hh:mm:ss, disee un algoritmo que determine que tiempo
falta para terminar el da, expresado tambin en el formato hh:mm:ss.
10. Disee un algoritmo para sumar dos tiempos. Ambos tiempos vienen dados en el formato
HH:MM:SS. La suma tambin debe ser expresada de la misma manera.
Solucin:
#include<iostream.h>
void main() {
int s1,m1,s2,m2,h1,h2,sp,ma,sf,mp,ha,mf,hp,hf;
cout<<"Ingresar primer tiempo: ";
cin>>h1>>m1>>s1;
cout<<"Ingresar segundo tiempo: ";
cin>>h2>>m2>>s2;
sp=s1+s2;
ma=sp/60;
sf=sp%60;
mp=m1+m2+ma;
ha=mp/60;
mf=mp%60;
hp=h1+h2+ha;
hf=hp%24;
cout<<"La suma de los 2 tiempos es: "<<hf<<":"<<mf<<":"<<sf<<endl;
}

10

Universidad Juan Pablo II
ESCUELA DE INGENIERIA DE SISTEMAS
Gua de Laboratorio de Algoritmos N
0
4 y 5
CODIFICANDO CON ESTRUCTURAS SELECTIVAS
USO DEL CONTROL if - else

I. OBJETIVOS
Al trmino de esta experiencia, el estudiante ser capaz de:
1. Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos.
2. Identificar los diversos errores de compilacin y corregirlos adecuadamente.
3. Plantear correctamente en cdigo C++ el control selectivo if - else.
4. Usar correctamente el programa.

II. FUNDAMENTO TEORICO
Para alcanzar los objetivos de esta experiencia, es necesario tener en consideracin los siguientes
aspectos tericos:
Estructura Selectiva (control if)
Se identifican porque estn compuestos de una condicin. La estructura si - entonces evala la
condicin y en tal caso: Si la condicin es verdadera, entonces ejecuta la accin o acciones si son
varias.
Si la condicin es falsa, entonces puede no hacerse nada, o en algunos casos estas estructuras lgicas
tambin permiten controlar cuando se tienen dos opciones de accin (sino), por la naturaleza de
estas se debe ejecutar una o la otra, pero no ambas a la vez, es decir, son mutuamente excluyentes.

En la solucin de problemas encontramos numerosos casos en los que luego de tomar una decisin y
marcar el camino correspondiente a seguir, es necesario tomar otra decisin. Dicho proceso puede
repetirse numerosas veces. En aquellos problemas en donde un bloque condicional incluye otro
bloque condicional se dice que un bloque de alternativa mltiple.

Por ejemplo: Cdigo trabajado con el control if que indica si un nmero ingresado es positivo,
negativo o cero:
#include <iostream.h>
void main( ) {
int n;
cout<<Ingresar nmero: ;
cin>> n ;
if (n > 0)
cout << Positivo;
else if (n < 0)
cout<< Negativo;
else
cout <<Es cero;
}

11
III. EQUIPOS Y MATERIALES

Computadora personal
Programa Borland C++ 4.5 instalado
Cuaderno de clases, donde estn los ejercicios resueltos en pseudocdigos.

IV. PROCEDIMIENTO

a) Encender el computador.
b) Crear carpeta donde guardar sus programas.
c) Ingresar al Borland C++ 4.5
d) Codificar los algoritmos desarrollados en el aula.
e) Presentar avances y ejecucin de cada uno de los ejercicios al docente o jefe de prctica
encargado para la calificacin correspondiente.
f) Guardar la carpeta de sus archivos a sus memorias.
g) Retirarse del laboratorio de forma ordenada.


ALGORITMOS Estructuras Selectivas (if - else)
Gua Practica N 4 y N 5

1. Construir un algoritmo que permita ingresar 3 nmeros enteros positivos y que determine cual
de ellos es el mayor, cual es el menor y cual es el nmero medio.
Solucin:
# include <iostream.h>
void main() {
int n1,n2,n3,mayor=0,menor=9999,medio;
cout<<"Ingresar 1er numero: ";
cin>>n1;
cout<<"Ingresar 2do numero: ";
cin>>n2;
cout<<"Ingresar 3er numero: ";
cin>>n3;
if(n1>mayor)
mayor=n1;
if(n2>mayor)
mayor=n2;
if(n3>mayor)
mayor=n3;
if(n1<menor)
menor=n1;
if(n2<menor)
menor=n2;
if(n3<menor)
menor=n3;
medio=(n1+n2+n3)-(mayor+menor);
cout<<"El mayor de los 3 numeros es: "<<mayor<<endl;
cout<<"El menor de los 3 numeros es: "<<menor<<endl;
cout<<"El numero del centro es: "<<medio<<endl;
}
2. El dueo de una empresa desea planificar las decisiones financieras que tomara en el siguiente
ao. La manera de planificarlas depende de lo siguiente: Si actualmente su capital se
encuentra con saldo negativo, pedir un prstamo bancario para que su nuevo saldo sea de $10
12
000. Si su capital tiene actualmente un saldo positivo pedir un prstamo bancario para tener
un nuevo saldo de $20 000, pero si su capital tiene actualmente un saldo superior a los $20
000 no pedir ningn prstamo. Posteriormente repartir su presupuesto de la siguiente
manera: $5 000 para equipo de computo, $2 000 para mobiliario y el resto la mitad ser para
la compra de insumos y la otra para otorgar incentivos al personal. Desplegar que cantidades
se destinaran para la compra de insumos e incentivos al personal y, en caso de que fuera
necesario, a cuanto ascendera la cantidad que se pedira al banco.

3. Calcular el costo del servicio de mudanza, de acuerdo a la distancia entre el punto de partida y
de llegada. Para calcular el costo se debe tener en cuenta: Si la distancia por cada viaje es
mayor o igual a 5 km, se cobrar S/. 7.00 por kilmetro, de lo contrario se cobrar el monto
bsico que es de S/. 25.00.
4. Una fabrica paga a sus empleados de acuerdo a su condicin, de tal manera que un obrero
contratado recibe al mes S/.1200.00 y un obrero
estable S/.1000.00. as mismo, todos los empleados
reciben un pago de gratificacin en los meses de Julio
y Diciembre. Dicha gratificacin vara de acuerdo a
los aos de servicios que tiene el empleado, como se
muestra en el siguiente cuadro:
Adems todos los empleados reciben un descuento por AFP del 9%. Calcular el sueldo de un
obrero correspondiente a un mes determinado
Solucin:
# include <iostream.h>
void main() {
int as,mes,s;
char cond;
float sb,g,sf;
cout<<"Ingresar condicion del empleado Estable[E], Contratado[C] : ";
cin>>cond;
cout<<"Ingresar aos de servicio: ";
cin>>as;
cout<<"Ingresar mes del pago: ";
cin>>mes;
if(cond=='E')
s=1000;
else if(cond=='C')
s=1200;
else
cout<<"Vuelva a intentarlo condicion no valida"<<endl;
sb=s-s*0.09;
if(as>0 && as<=5)
g=sb*0.60;
else if(as>6 && as<=10)
g=sb*0.80;
else
g=sb;
if(mes==7 || mes==12)
sf=sb+g;
else
sf=sb;
Aos de Servicios % de Gratificacin
0 a 5
6 a 10
11 a ms
60
80
100
13
cout<<"El sueldo final del obrero del mes "<<mes<<" es: "<<sf<<endl;
}
5. Una empresa se encarga de la venta y distribucin de CD. Los clientes pueden adquirir los
artculos por cantidad. Los precios son:
El vendedor gana por cada CD vendido S/.
1.25. Realizar un algoritmo que calcule el
precio total para el cliente, el costo total y
la ganancia para el vendedor.
6. Disee un algoritmo que determine la
categora de un estudiante en base a su promedio, acuerdo a la
siguiente tabla:
Solucin:
# include <iostream.h>
void main() {
int prom,;
char cat;
cout<<"Ingresar promedio del alumno: ";
cin>>prom;
if(prom>0 && prom<=11)
cat='d';
else if(prom>=12 && prom<=13)
cat='C';
else if(prom>=14 && prom<=16)
cat='B';
else if(prom>=17 && prom<=20)
cat='A';
else
cout<<"Promedio no valido"<<endl;
cout<<"El promedio del alumno es: "<<prom<<endl;
cout<<"por lo tanto le corresponde la categoria: "<<cat<<endl; }
7. Disee un algoritmo que determine el promedio final de un alumno conociendo sus tres notas.
El profesor del curso ha prometido incrementar en dos puntos la nota de la tercera prctica
calificada si es que es mayor a 10. considere que la mxima nota final es 20.
8. Una empresa de bienes races ofrece casas de inters 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 aos. 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 aos. La empresa quiere obtener cuanto debe
pagar un comprador por concepto de enganche y cuanto por cada pago parcial
Solucin:
# include <iostream.h>
void main() {
float ic,cc,e,r,pm;
cout<<"Los ingresos del comprador son: ";
cin>>ic;
cout<<"Ingresar el costo de la casa: ";
cin>>cc;
if(ic<8000) {
e=cc*0.15;
r=cc-e;
a. S/. 3.50 si se compra hasta 9 unidades.
b. S/. 3.30 si se compra entre 10 unidades y hasta 99.
c. S/. 3.10 si se compra entre 100 y 499 unidades.
d. S/. 2.80 para ms de 500.
Promedio Categora
20 17
16 14
13 12
11 0
A
B
C
D
14
pm=r/120; }
else if(ic>=8000) {
e=cc*0.30;
r=cc-e;
pm=r/84; }
cout<<"La cuota inicial es: "<<e<<endl;
cout<<"El pago mensual es: "<<pm<<endl;
}
9. El gobierno del estado Peruano desea reforestar un bosque. Si la superficie del terreno
excede a 1 milln de metros cuadrados, entonces decidir sembrar de la siguiente manera:
Si la superficie del terreno es menor o igual a un milln de metros cuadrados, entonces
decidir sembrar de la siguiente manera:





El gobierno desea saber el numero de pinos, oyameles y cedros que tendr que sembrar en el
bosque, si se sabe que en 10 metros cuadrados caben 8 pinos, en 15 metros cuadrados caben
15 oyameles y en 18 metros cuadrados caben 10 cedros.





10. Una compaa de seguros ofrece a sus clientes cuatro tipos de seguro de sepelio:
Tipo Max. Personas Pago mensual (S/.)
A
B
C
D
8
6
4
2
40
30
20
10
Si el cliente asegura a ms personas de la indicadas en el cuadro anterior tendr que pagar
S/.8.00 mensuales por cada persona adicional si es que el seguro es de tipo A o B, y S/.5.00
mensuales por cada persona adicional si es que el seguro es de tipo C o D. Calcular el monto
anual que tiene que pagar un determinado cliente.










Superficie del bosque (%) Tipo de rbol
50%
30%
20%
pino
oyamel
cedro
Superficie del bosque (%) Tipo de rbol
70%
20%
10%
pino
oyamel
cedro
15



Universidad Juan Pablo II
ESCUELA DE INGENIERIA DE SISTEMAS
Gua de Laboratorio de Algoritmos N
0
6
CODIFICANDO CON ESTRUCTURAS SELECTIVAS
USO DEL CONTROL switch

I. OBJETIVOS
Al trmino de esta experiencia, el estudiante ser capaz de:
1. Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos.
2. Identificar los diversos errores de compilacin y corregirlos adecuadamente.
3. Plantear correctamente en cdigo C++ el control selectivo switch.
4. Usar correctamente el programa.

II. FUNDAMENTO TEORICO
Para alcanzar los objetivos de esta experiencia, es necesario tener en consideracin los siguientes
aspectos tericos:
Estructura Selectiva (control switch)
Se identifican porque estn compuestos de un selector, el cual es una variable, que ser evaluada
segn el contenido que esta tenga, para lo cual es indispensable conocer los datos por anticipado que
dicha variable puede almacenar, sino se conocen, el control no es aplicable.
Cada posible dato que pueda almacenar esta variable selectora ser una caso (case) que llevar a una
o ms acciones a realizar de cumplirse con esa alternativa.
El Flag o Bandera (Bd) es una variable de comparacin que se utiliza para evitar que se visualice
una salida ante un mensaje de error. Inicializa en un valor 0 (Bd 0) y ante un mensaje de error
cambia de estado a 1 (Bd 1).

Por ejemplo: Cdigo trabajado con el control switch, que simula una calculadora:

#include <iostream.h>
void main( )
{
char op;
int Bd = 0; // Declaracin del Flag o Bandera
float x, y, resultado;
16
cout << "Introduzca operando1, operador y operando2: ";
cin >> x >> op >> y;
switch (op)
{
case +: resultado = x + y; break;
case -: resultado = x - y; break;
case *: resultado = x * y; break;
case /: if (y != 0)
resultado = x / y;
else
{
cout<<Divisin irreal;
Bd = 1;
}
break;
default:
cout<<"el operador no existe"<<endl;
Bd = 1;
}
if (Bd!=1)
cout<<"la "<<op<<" es: "<<resultado<<endl;
}

III. EQUIPOS Y MATERIALES

Computadora personal
Programa Borland C++ 5.02 instalado
Cuaderno de clases, donde estn los ejercicios resueltos en pseudocdigos.

IV. PROCEDIMIENTO

a) Encender el computador.
b) Crear carpeta donde guardar sus programas.
c) Ingresar al Borland C++ 4.5
d) Codificar los algoritmos desarrollados en el aula.
e) Presentar avances y ejecucin de cada uno de los ejercicios al docente o jefe de prctica
encargado para la calificacin correspondiente.
f) Guardar la carpeta de sus archivos a sus memorias.
g) Retirarse del laboratorio de forma ordenada.



ALGORITMOS Estructuras Selectivas (switch)
Gua Prctica N 6

1. Construya un algoritmo que al ingresar un nmero entero imprima el da de la semana que le
corresponde. Por ejemplo: al ingresar 1 debe imprimir lunes.
Solucin:
# include <iostream.h>
void main() {
int nd;
cout<<"Ingresar numero del dia: ";
cin>>nd;
switch(nd) {
case 1: cout<<"Lunes";break;
17
case 2: cout<<"Martes";break;
case 3: cout<<"Miercoles";break;
case 4: cout<<"Jueves";break;
case 5: cout<<"Viernes";break;
case 6: cout<<"Sabado";break;
case 7: cout<<"Domingo";break;
default: cout<<"Dia no valido"<<endl;
}
}
2. Construya una calculadora que lea 2 nmeros y un operador y efecte la operacin indicada
(suma, resta, multiplicacin y divisin).
3. Construya un algoritmo que al ingresar una fecha (da, mes y ao) nos indique si la fecha
ingresada es correcta o no.
4. Construir un algoritmo que al ingresar un nmero entero que indique el mes, nos muestre
cuantos das tiene dicho mes.
Solucin:
# include <iostream.h>
void main() {
int mes,a,d,Bd=0;
cout<<"Ingresar mes: ";
cin>>mes;
cout<<"Ingresar ao: ";
cin>>a;
switch(mes) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: d=31;break;
case 4:
case 6:
case 9:
case 11: d=30;break;
case 2: if(a % 4==0)
d=29;
else
d=28; break;

default: cout<<"Mes no valido"<<endl;
Bd=1;
}
if(Bd==0)
cout<<"El mes "<<mes<<" tiene: "<<d<<" dias"<<endl;

}

5. Un supermercado ofrece a sus clientes descuentos de acuerdo al monto de compra, como se
muestra en el siguiente cuadro:
18
Compra (S/.) Descuento (%)
0 250
251 500
501 1000
1001 ms
0
5
10
15
Para recibir los beneficios de descuento un cliente solo puede comprar dentro de un
determinado rubro, as mismo dependiendo del rubro de la compra, se le aplica el siguiente
impuesto sobre la compra descontada.
Rubro Impuesto (%)
Comestibles
Juguetes
15
20
Construir un algoritmo que calcule el pago total que har un determinado cliente.


6. Un banco realiza el pago de intereses a sus clientes por un deposito a plazo fijo de acuerdo a la
siguiente informacin: Tipo de moneda, Tiempo de deposito y monto depositado. Los intereses
sern aplicados segn el siguiente cuadro:
Meses Soles (%) Dlares (%)
0 5
6 12
13 mas
0
6
9
0
4
7
Mostrar el inters y el monto total a recibir.
Solucin:
# include <iostream.h>
void main() {
int mes,Bd=0;
float din,inte,total;
char mon;
cout<<"Ingresar dinero a ahorrar: ";
cin>>din;
cout<<"Ingresar tiempo de ahorro: ";
cin>>mes;
cout<<"Ingresar moneda soles[S],Dolares[D]: ";
cin>>mon;
switch(mon) {
case 'S': if(mes>0 && mes<=5)
inte=0;
else if(mes<=12)
inte=din*0.06;
else
inte=din*0.09;break;
case 'D': if(mes>0 && mes<=5)
inte=0;
else if(mes<=12)
inte=din*0.04;
else
inte=din*0.07;break;
default: cout<<"Tipo de Moneda no valida"<<endl;
Bd=1;
}
19
total=din+inte;
if(Bd==0) {
cout<<"El interes ganado es: "<<inte<<endl;
cout<<"El total a recibir es: "<<total<<endl;
}
}
7. Una tienda de venta de polos ha establecido porcentajes de descuento, indicados a
continuacin, de acuerdo a las caractersticas de la prenda: Tipo de algodn (Simple, Pima),
Tipo de prensa (Nio, Joven, Adulto), Detalle de la prenda (Sin estampado, Con estampado)
Nio Joven Adulto
Tipo de algodn S C S C S C
Simple 3 5 4 6 5 7
Pima 5 3 6 4 7 5
Calcular el importe a pagar por una prenda.
8. 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 ($/tonelada)
Medio de transporte Norte Sur Centro
Areo
Martimo
Terrestre
30
25
20
25
20
15
20
15
10
Asimismo, si la carga que se transporta es perecible, se le incrementa el 7% del pago total de
acuerdo a las toneladas.
Solucin:
# include <iostream.h>
void main() {
int ton,Bd=0,p;
float inc,pf;
char mt,des,tc;
cout<<"Ingresar cantidad de toneladas: ";
cin>>ton;
cout<<"Ingresar transporte Aereo[A],Maritimo[M], Terrestre[T]: ";
cin>>mt;
cout<<"Ingresar destino norte[N],sur[S], centro[C]: ";
cin>>des;
cout<<"Ingresar tipo de carga perecible[P]: ";
cin>>tc;
switch(mt){
case 'A': switch(des) {
case 'N': p=ton*30;break;
case 'S': p=ton*25;break;
case 'C': p=ton*20;break;
default: cout<<"Destino no valido"<<endl;
Bd=1;
};break;
case 'M': switch(des) {
case 'N': p=ton*25;break;
case 'S': p=ton*20;break;
case 'C': p=ton*15;break;
default: cout<<"Destino no valido"<<endl;
20
Bd=1;
};break;
case 'T': switch(des) {
case 'N': p=ton*20;break;
case 'S': p=ton*15;break;
case 'C': p=ton*10;break;
default: cout<<"Destino no valido"<<endl;
Bd=1;
};break;
default: cout<<"No existe medio de transporte"<<endl;
Bd=1;
}


if(tc=='P')
inc=p*0.07;
else
inc=0;
pf=p+inc;
if(Bd==0)
cout<<"El pago total es: "<<pf<<" soles"<<endl;
}
9. Una compaa de seguros ofrece a sus clientes cuatro tipos de seguro de sepelio:
Tipo Mximo nmero de Personas Pago mensual (S/.)
A
B
C
D
8
6
4
2
40
30
20
10
Si el cliente asegura a ms personas de la indicadas en el cuadro anterior tendr que pagar
S/.8.00 mensuales por cada persona adicional si es que el seguro es de tipo A o B, y S/.5.00
mensuales por cada persona adicional si es que el seguro es de tipo C o D. Calcular el monto
anual que tiene que pagar un determinado cliente.
10. Un centro comercial ofrece ventas financiadas por 3 tipos de tarjetas de crdito como indica
a continuacin:


El cliente solo puede financiar una compra
hasta el mximo de letras que se indica en el
cuadro anterior, en caso contrario la venta no debe proceder. Calcular el monto de cada letra
por pagar as como el monto total.
11. Una empresa area realiza ofertas de pasajes a 3 destinos diferentes, de acuerdo a la
cantidad de pasajes que se compra, como se muestra en el siguiente cuadro:
Destino Precio ($) Menos de 5 pasajes (%) De 5 a ms Pasajes (%)
Pars
Italia
Grecia
184.00
139.70
127.40
10
15
20
15
20
25
Un cliente solo puede comprar pasajes para una ciudad. Calcular el total que tiene que pagar un
determinado cliente.
Max. Letras Tipo de Tarjeta Inters (%)
12
8
6
A
B
C
5
10
15
21
12. Calcular el pago de un obrero que trabaja al destajo. El pago que recibe el obrero por cada
unidad producida depende de su categora y del tipo de producto que produce, como se
muestra en el siguiente cuadro:
Tarifa (S/. x unidad)
Categora Tejas Losetas
A
B
C
2.50
2.00
1.50
2.00
1.50
1.00
As mismo, el obrero recibe una bonificacin especial de acuerdo a la cantidad que produce:
Unidades Producidas Bonificacin (%)
1 250
251 500
501 1000
1001 mas
0.00
50.00
100.00
150.00
Adems del total de ingresos se descuenta 75 por seguro.
13. En una empresa, los salarios van a aumentar en base al contrato actual del trabajador:
Contrato Aumento %
De 0 a 1500 soles
De 1501 a 3000 soles
De 3001 a 6000 soles
De 6001 soles a ms
20
10
5
0
Adems el trabajador recibir una bonificacin especial de acuerdo a su condicin civil.
Estado civil Bonificacin
Soltero 100.00
Casado 150.00
Se pide mostrar cuanto es la bonificacin del trabajador y cual es su sueldo neto.
14. Disee un algoritmo que determine el pago a realizar, sabiendo sus montos y que los
descuentos dependen de la categora, en base a la siguiente tabla:
Categora Descuentos
A
B
C
D
5%
7%
10%
15%

15. Un club social a clasificado a sus socios en 3 categoras, como se muestra en el siguiente
cuadro:
Categoria Cant. Boletos Pago Mensual (S/.) Dscto (%)
A
B
C
25
20
15
200
150
100
4
3
2
Dicho club realiza mensualmente un tipo de evento (rifas, almuerzos, etc.)., de esta manera, un
socio esta obligado a vender la cantidad de boletos que se indican en el cuadro anterior, pero si
un socio vende ms de los boletos indicados, se le descuenta S/.2.00 por cada boleto vendido.
Adems si el socio tiene ms de 55 aos recibe un porcentaje de descuento de su pago
mensual. Calcular el monto total que paga un socio en un mes.





22


Universidad Juan Pablo II
ESCUELA DE INGENIERIA DE SISTEMAS
Gua de Laboratorio de Algoritmos N
0
7 y 8
CODIFICANDO CON ESTRUCTURAS REPETITIVAS
USO DEL CONTROL While, Do while y For

I. OBJETIVOS
Al trmino de esta experiencia, el estudiante ser capaz de:
1. Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos.
2. Identificar los diversos errores de compilacin y corregirlos adecuadamente.
3. Plantear correctamente en cdigo C++ el control repetitivo while , Do while y For.
4. Usar correctamente el programa.

II. FUNDAMENTO TEORICO
Para alcanzar los objetivos de esta experiencia, es necesario tener en consideracin los siguientes
aspectos tericos:
El ciclo Mientras (while) es un ciclo de preverificacin porque se hace una prueba antes de que los
enunciados del ciclo se puedan ejecutar. Si la expresin de verificacin es verdadera (diferente de
cero) se ejecutarn los enunciados del ciclo. Si la expresin de verificacin es falsa (cero) se
ignorarn los enunciados del ciclo y se ejecutar el siguiente enunciado que sigue al ciclo.
En cdigo C++
while (condicin es V)
{
enunciado 1;
enunciado 2;
....................
enunciado n;
}
El ciclo Do while aqu la verificacin se hace al final del ciclo, en lugar de al principio del ciclo. Esta
es la diferencia principal entre Mientras (while) y Hacer mientras (do/while). Ya que do/while es un
ciclo posverificador, los enunciados del ciclo siempre se ejecutarn por lo menos una vez. Para
romper el ciclo, la expresin de verificacin debe convertirse en falso de este modo, si el valor de la
verificacin es inicialmente verdadero, algo debe suceder dentro del ciclo para cambiar el valor a
falso; de lo contrario, tendr un ciclo infinito.
En cdigo C++
do
{
enunciado 1;
23
enunciado 2;
..................
enunciado n;
}
while(condicin es V);

El ciclo for Al ciclo for se le llama ciclo de repeticin fija porque el ciclo se repite un nmero
determinado de veces. Lo primero que se lleva a cabo antes de ejecutar los enunciados del ciclo es la
inicializacin de una variable controladora del ciclo. Iniciacin significa establecer una variable a
algn valor inicial. Despus se ejecuta la expresin de verificacin para verificar el valor de la
variable.

En cdigo C++

for (contador = valor inicial; expresin de verificacin contador; incrementa o decrementa
contador)
{
enunciado 1;
enunciado 2;
...................
enunciado n;
} // Fin del for

III. EQUIPOS Y MATERIALES

Computadora personal
Programa Borland C++ 4.5 instalado
Cuaderno de clases, donde estn los ejercicios resueltos en pseudocdigos.

IV. PROCEDIMIENTO

a) Encender el computador.
b) Crear carpeta donde guardar sus programas.
c) Ingresar al Borland C++ 4.5
d) Codificar los algoritmos desarrollados en el aula.
e) Presentar avances y ejecucin de cada uno de los ejercicios al docente o jefe de prctica
encargado para la calificacin correspondiente.
f) Guardar la carpeta de sus archivos a sus memorias.
g) Retirarse del laboratorio de forma ordenada.

ALGORITMOS Estructuras Repetitivas (while do while -for)
Gua Prctica N 7

1. Ingresar nmeros enteros y calcular la suma de dichos nmeros. El algoritmo termina cuando
se ingresa el numero cero.
2. Se quiere ingresar las calificaciones de los alumnos. Y realizar un algoritmo para calcular el
promedio de las calificaciones ingresadas. El algoritmo termina cuando se ingresa una nota
negativa.
Solucin:
# include<iostream.h>
void main(){
int not,suma=0,cont=0;
float prom;
24
do{
cout<<"Ingresar nota del alumno: " ;
cin>>not;
if(not>0){
suma=suma+not;
cont=cont+1; // o tambien cont++
}
}while(not>0) ;
prom=suma/cont;
cout<<"El promedio de notas de los "<<cont<<" alumnos es: "<<prom<<endl;
}
3. En un proceso repetitivo se ingresan las edades de las personas, se desea saber cuantas
personas mayores de edad hay y cuantas menores de edad. El proceso termina cuando se
ingresa el cero.
4. Suponga que se tiene un conjunto de N personas. Realizar un algoritmo para calcular la talla
ms alta de todo el grupo.
Solucin:
#include<iostream.h>
void main(){
int N,cont=0;
float t,mayor=0;
cout<<"Ingresar cantidad de personas: ";
cin>>N;
while(cont<N){
cout<<"Ingresar talla: ";
cin>>t;
if(t>mayor)
mayor=t;
cont++;
}
cout<<"La persona mas alta mide "<<mayor<<" cm"<<endl;
}
5. Una persona debe realizar un muestreo con N personas para determinar el promedio de peso
de los nios, jvenes y adultos que existen en su zona
habitacional. Se determinan las categoras con base en la
siguiente tabla:
Solucin:
#include<iostream.h>
void main(){
int N,i,edad,pes,suma1=0,suma2=0,suma3=0,c1=0,c2=0,c3=0;
float prom1,prom2,prom3;
cout<<"Ingresar cantidad de personas a evaluar: ";
cin>>N;
for(i=0;i<N;i++){
cout<<"Ingresar edad: ";
cin>>edad;
cout<<"Ingresar peso: ";
cin>>pes;
if(edad>0 && edad<=12){
suma1=suma1+pes;
Categora Edad
Nios
Jvenes
Adultos
0 12
13 29
30 ms
25
c1++;
}else if(edad<=29){
suma2=suma2+pes;
c2++;
}else
suma3=suma3+pes;
c3++;
}
if(c1>0)
prom1=suma1/c1;
else
prom1=0;
if(c2>0)
prom2=suma2/c2;
else
prom2=0;
if(c3>0)
prom3=suma3/c3;
else
prom3=0;
cout<<"El peso promedio de los nios es: "<<prom1<<endl;
cout<<"El peso promedio de los jovenes es: "<<prom2<<endl;
cout<<"El peso promedio de los adultos es: "<<prom3<<endl;
}
6. Un entrenador le ha propuesto a un atleta recorrer una ruta de 5 kilmetros durante 10 das,
para determinar si es apto para la prueba de 5 Kilmetros o debe buscar otra especialidad.
Para considerarlo apto debe cumplir por lo menos una de las siguientes condiciones:
- Que en ninguna de las pruebas haga un tiempo mayor a 16 minutos.
- Que al menos en una de las pruebas realice un tiempo mayor a 16 minutos.
- Que su promedio de tiempos sea menor o igual a 15 minutos.
7. Una empresa de ventas por catalogo ofrece 4 productos distintos cuyos precios de venta al
detalle son: producto A S/.12.60, producto B S/.23.50, producto C S/.27.40 y producto D
S/.31.70. Escriba un algoritmo que lea el tipo de producto y la cantidad de productos vendida
en un da, calcular y mostrar el monto total de todos los productos vendidos. El algoritmo
termina cuando se ingresa un producto que no este a la venta.
Solucin:
#include<iostream.h>
void main(){
char tip;
int cant,Bd=0;
float pago,total=0;
do{
cout<<"Ingresar tipo de producto [A][B][C]o [D]: ";
cin>>tip;
cout<<"Ingresar cantidad que desea: ";
cin>>cant;
switch(tip){
case 'A': pago=cant*12.60;break;
case 'B': pago=cant*23.50;break;
case 'C': pago=cant*27.40;break;
26
case 'D': pago=cant*31.70;break;
default:
cout<<"Fin del proceso"<<endl;
Bd=1;
}
total=total+pago;

}while(Bd==0);
cout<<"La venta del dia de todos los productos es: "<<total<<" soles"<<endl;
}
8. Se ha seleccionado n nmeros de personas para realizar una encuesta, en un proceso repetitivo
se ingresa el grado de instruccin y la edad de cada persona. Se desea saber el promedio de
edades, la mayor edad y el porcentaje de personas con instruccin Primaria, Secundaria y
Superior (P, S, R).
9. Disear un algoritmo que permita calcular la suma de los primeros N trminos de la siguiente
serie:
1 + 1/3 + 1/5 + 1/7 + 1/9 +
Solucin:
#include<iostream.h>
void main(){
int N,cont=0;
float suma=0,num=1,den=1;
cout<<"Ingresar la cantidad de terminos a sumar: ";
cin>>N;
while(N>cont){
cout<<"El termino es: "<<num<<"/"<<den<<endl;
suma=suma+(num/den);
num=num*1;
den=den+2;
cont++;
}
cout<<"La suma de los terminos es: "<<suma<<endl;
}
10. Al final de un curso se desea saber cual ha sido el alumno con la mejor nota promedio. Se sabe
que este ao entraron 75 alumnos y que todos tienen 3 asignaturas. Dar el nombre y la nota
media.
11. Determinar la cantidad semanal de dinero que recibir cada uno de los n obreros de una
empresa. Se sabe que cuando las horas que trabajo un obrero exceden de 40, el resto se
convierte en horas extras que se pagan al doble de una hora normal, cuando no exceden de 8;
cuando las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se paga por
una hora normal y el resto al triple.
12. Se tiene un conjunto de 10 tarjetas cada una contiene la informacin del censo para una
persona: Sexo, Edad y Estado civil (a.- soltero, b. Casado, c. Viudo, d. Divorciado). Disee un
pseudocdigo estructurado que lea todos estos datos, e imprima el nmero de censo de todas
las jvenes solteras que estn entre 16 y 21 aos.
13. En un examen el tipo de calificacin es el siguiente:
Puntaje Calificacin
100 70 A
69 30 B
29 0 C
27
Escribe un algoritmo que encuentre:
a) El nmero de estudiantes que rindieron el examen.
b) El nmero de estudiantes que obtuvieron A, B y C.
El algoritmo termina cuando se le ingresa un puntaje negativo.
14. Una compaa de seguros tiene contratados a n vendedores. Cada uno hace tres ventas a la
semana. Su poltica de pagos es que un vendedor recibe un sueldo base, y un 10% extra por
comisiones de sus ventas. El gerente de su compaa desea saber cuanto dinero obtendr en la
semana cada vendedor por concepto de comisiones por las tres ventas realizadas, y cuanto
tomando en cuenta su sueldo base y sus comisiones.
15. Construya un algoritmo que muestre, calcule la suma total y determine cuantos nmeros
mltiplos de M hay en los N primeros nmeros naturales, tal que M <= N. Ejem: Cuantos
mltiplos de 7 hay en los primeros 100 nmeros naturales.
16. Hacer un algoritmo que lea N consumos de un restaurante. Si el consumo ingresado excede los
70 soles, el descuento ser de 5%. Muestre todos los pagos hechos.
17. Una empresa almacena los datos de N empleados, para esto, en un proceso repetitivo se
ingresa el sexo y el salario de cada empleado. Se pide calcular:
a) La cantidad de personas que ganan ms de 700 al mes.
b) El promedio de salarios.
c) El porcentaje de mujeres que trabajan en esa empresa
d) El porcentaje de varones que trabajan en esa empresa
Solucin:
#include<iostream.h>
void main(){
int N,i,c1=0,c2=0,c3=0;
char sex;
float s,suma=0,prom,porm,porf;
cout<<"Ingresar cantidad de empleados: ";
cin>>N;
for(i=0;i<N;i++){
cout<<"Ingresar sexo [M] o [F]: ";
cin>>sex;
cout<<"Ingresar salario: ";
cin>>s;
suma=suma+s;
if(s>700)
c1++;
if(sex=='M')
c2++;
else if(sex=='F')
c3++;

}
prom=suma/N;
porm=(c2*100)/N;
porf=(c3*100)/N;
cout<<"Los empleados que ganan mas de S/. 700 son: "<<c1<<endl;
cout<<"El promedio de salarios es: "<<prom<<" soles"<<endl;
cout<<"El porcentaje de hombres es: "<<porm<<" %"<<endl;
cout<<"El porcentaje de mujeres es: "<<porf<<" %"<<endl;
}
28
18. Disear un algoritmo que permita calcular la suma de los primeros N trminos de la siguiente
serie:
64/21 + 62/24 + 60/27 + 58/30 +


Universidad Juan Pablo II
ESCUELA DE INGENIERIA DE SISTEMAS
Gua de Laboratorio de Algoritmos N
0
9 y N
0
11
CODIFICANDO CON FUNCIONES
USO DEL CONTROL

I. OBJETIVOS
Al trmino de esta experiencia, el estudiante ser capaz de:
1. Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos.
2. Identificar los diversos errores de compilacin y corregirlos adecuadamente.
3. Plantear correctamente en cdigo C++ el control.
4. Usar correctamente el programa.

II. FUNDAMENTO TEORICO
Para alcanzar los objetivos de esta experiencia, es necesario tener en consideracin los siguientes
aspectos tericos:
MODULO

Un mdulo representa una tarea determinada, consta de un conjunto de instrucciones que se
procesan una sola vez y se referirn mediante un nombre por el que posteriormente sern llamados
o invocados desde diferentes puntos del programa.
Un mdulo debe tener un punto de entrada y un punto de salida y puede ser:
Una funcin
Un procedimiento o subrutina

FUNCIONES

Es un subprograma que proporciona un valor o resultado segn sea sus argumentos (parmetros) de
entrada.
Una funcin se invoca cuando se hace referencia, mediante su nombre y una lista de parmetros en
cualquier instruccin donde se pueda usar una constante o variable.

Funcion_nombre (lista de parmetros) : tipo de resultado
Acciones
Retorno 0
Fin_funcion

Ejemplo: Un programa que calcula la suma de 2 nmeros y la imprime:
29
#include<iostream.h>
int suma(int,int) ; // Declaracin de la funcin suma
void main(){
int a,b,s;
cout<<"Ingresar primer numero:";
cin>>a;
cout<<"Ingresar segundo numero:";
cin>>b;
s=suma(a,b);
cout<<"La suma es: "<<s<<endl; // Llamar a la misma funcin suma
}
int suma(int a,int b){
int s;
s=a+b; Desarrollo de la funcin suma
return s;
}

III. EQUIPOS Y MATERIALES

Computadora personal
Programa Borland C++ 4.5 instalado
Cuaderno de clases, donde estn los ejercicios resueltos en pseudocdigos.

IV. PROCEDIMIENTO

a) Encender el computador.
b) Crear carpeta donde guardar sus programas.
c) Ingresar al Borland C++ 4.5
d) Codificar los algoritmos desarrollados en el aula.
e) Presentar avances y ejecucin de cada uno de los ejercicios al docente o jefe de prctica
encargado para la calificacin correspondiente.
f) Guardar la carpeta de sus archivos a sus memorias.
g) Retirarse del laboratorio de forma ordenada.

ALGORITMOS Funciones
Gua Prctica N 09 y N 11

Desarrollar los siguientes ejercicios usando funciones:

1. Una compaa de seguros ofrece a sus clientes cuatro tipos de seguro de vida:
Tipo Mximo nmero de Personas Pago mensual (S/.)
A
B
C
D
8
6
4
2
40
30
20
10
Si el cliente asegura a ms personas de la indicadas en el cuadro anterior tendr que pagar
S/.8.00 mensuales por cada persona adicional si es que el seguro es de tipo A o B, y S/.5.00
30
mensuales por cada persona adicional si es que el seguro es de tipo C o D. Calcular el monto
anual que tiene que pagar un determinado cliente.
2. Una papelera ha puesto en oferta la venta al por mayor (en cientos) de papel bond de acuerdo a
los siguientes criterios:
Para los primeros 5 cientos, se hace un descuento del 10% por cada ciento.
De 6 a ms cientos, se hace un descuento del 15% por cada ciento.
Disee un algoritmo que determine el importe bruto, el importe del descuento y el importe a
pagar por una compra de papel bond.
3. Un hombre desea saber cuanto dinero se genera por concepto de intereses sobre la cantidad
que tiene en inversin en el banco. El decidir reinvertir los intereses siempre y cuando estos
excedan a $7000, y en ese caso desea saber cuanto dinero tendr finalmente en su cuenta.
Solucin:
#include<iostream.h>
float inversion(float,float); // Declaracin de la funcin inversin
void main(){
float da,ti,mf;
cout<<"Ingresar dinero ahorrado en el banco:";
cin>>da;
cout<<"Ingresar tasa de interes:";
cin>>ti;
mf=inversion(da,ti);
cout<<"El monto final de su cuenta es: "<<mf<<endl;
}
float inversion(float da,float ti){
float g,mf;
g=da*ti;
if(g>7000)
mf=da+g;
else
mf=da;
return mf;
}
4. Determinar el precio de un boleto de ida y vuelta en ferrocarril, conociendo la distancia a
recorrer y sabiendo que si el nmero de das de estancia es superior a 7 y la distancia superior
a 800 KM. El costo del boleto tiene una reduccin del 30%. El precio por cada km. recorrido es
de S/.3.20.
Solucin:
#include<iostream.h>

float costo_boleto(int,int); // Declaracin de la funcin costo_boleto

void main() {
float cb;
int dis,nd;
cout<<"Ingresar distancia en Km:";
cin>>dis;
cout<<"Ingresar numero de dias:";
cin>>nd;
cb=costo_boleto(dis,nd);
cout<<"El costo del boleto es: "<<cb<<endl;
31
}
float costo_boleto(int dis,int nd){
float cp,desc,cb;
cp=dis*3.20;
if(dis>800 && nd>7)
desc=cp*0.30;
else
desc=0;
cb=cp-desc;
return cb;
}
5. Un centro comercial ofrece ventas financiadas por 3 tipos de tarjetas de crdito como indica
a continuacin:
Max. Letras Tipo de Tarjeta Inters (%)
12
8
6
A
B
C
5
10
15
El cliente solo puede financiar una compra hasta el mximo de letras que se indica en el cuadro
anterior, en caso contrario la venta no debe proceder. Calcular el monto de cada letra por
pagar as como el monto total.
Solucin:
#include<iostream.h>
int evaluar_max(char);
float evaluar_interes(char);

void main(){
float inte,mc,mp,pfl,ptotal;
int nl,max;
char tarj;
cout<<"Ingresar tipo de tarjeta que posee [A],[B]o [C]: ";
cin>>tarj;
cout<<"Ingresar monto de compra: ";
cin>>mc;
cout<<"Ingresar numero de letras: ";
cin>>nl;
max=evaluar_max(tarj);
inte=evaluar_interes(tarj);

if(nl<max && max!=0 && inte!=0){
mp=mc/nl;
pfl=mp+mp*inte;
ptotal=pfl*nl;
cout<<"El monto de cada letra es: "<<pfl<<" soles"<<endl;
cout<<"El pago total es: "<<ptotal<<" soles"<<endl; }
else
cout<<"La venta no procede"<<endl;
}

int evaluar_max(char tarj){
int max;
32
switch(tarj){
case 'A': max=12; break;
case 'B': max=8; break;
case 'C': max=6; break;
default: cout<<"Tipo de tarjeta no valida"<<endl;
max=0;
}
return max;
}


float evaluar_interes(char tarj){
float inte;
switch(tarj){
case 'A': inte=0.05; break;
case 'B': inte=0.10; break;
case 'C': inte=0.15; break;
default: cout<<"Tipo de tarjeta no valida"<<endl;
inte=0;
}
return inte;
}

6. Un club social ha clasificado a sus socios en 3 categoras, como se muestra en el siguiente
cuadro:
Categora Cant. Boletos Pago Mensual (S/.) Dscto (%)
A
B
C
25
20
15
200
150
100
4
3
2
Dicho club realiza mensualmente un tipo de evento (rifas, almuerzos, etc.)., de esta manera, un
socio esta obligado a vender la cantidad de boletos que se indican en el cuadro anterior, pero si
un socio vende ms de los boletos indicados, se le descuenta S/.2.00 por cada boleto vendido a
su pago mensual. Adems si el socio tiene ms de 55 aos recibe un porcentaje de descuento
de su pago mensual. Calcular el descuento que tiene el socio y monto del mes.
7. Calcular el pago de un obrero que trabaja al destajo. El pago que recibe el obrero por cada
unidad producida depende de su categora y del tipo de producto que produce, como se
muestra en el siguiente cuadro:
Tarifa (S/. x unidad)
Categora Tejas Losetas
A
B
C
2.50
2.00
1.50
2.00
1.50
1.00
As mismo, el obrero recibe una bonificacin especial de acuerdo a la cantidad que produce:
Unidades Producidas Bonificacin (%)
1 250
251 500
501 1000
1001 mas
0.00
50.00
100.00
150.00
Adems del total de ingresos se descuenta 75 por seguro.
8. En una empresa, los salarios van a aumentar en base al contrato actual del trabajador:
33
Contrato Aumento %
De 0 a 1500 soles
De 1501 a 3000 soles
De 3001 a 6000 soles
De 6001 soles a ms
20
10
5
0
Adems el trabajador recibir una bonificacin especial de acuerdo a su condicin civil.
Estado civil Bonificacin
Soltero 100.00
Casado 150.00
Se pide mostrar cuanto es la bonificacin del trabajador y cual es su sueldo neto.
















































34









Universidad Juan Pablo II
ESCUELA DE INGENIERIA DE SISTEMAS
Gua de Laboratorio de Algoritmos N
0
12 y N
0
13
CODIFICANDO CON PROCEDIMIENTOS Y FUNCIONES
USO DEL CONTROL

I. OBJETIVOS
Al trmino de esta experiencia, el estudiante ser capaz de:
5. Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos.
6. Identificar los diversos errores de compilacin y corregirlos adecuadamente.
7. Plantear correctamente en cdigo C++ el control.
8. Usar correctamente el programa.

II. FUNDAMENTO TEORICO
Para alcanzar los objetivos de esta experiencia, es necesario tener en consideracin los siguientes
aspectos tericos:
PROCEDIMIENTOS: Es un subprograma que proporciona cero, uno o varios valores en funcin de sus
parmetros definidos en su formato.

Procedimiento_nombre (lista de parmetros)
Acciones
Fin_procedimiento

Los procedimientos realizan parte del proceso si devolver un dato en particular. Se trabaja con un
modulo principal, el cual contiene las llamadas a las funciones y/o procedimientos a realizar.

PARAMETROS Son datos mediante los cuales se comunica explcitamente con la unidad de programa
que llama. Los parmetros pueden ser de 2 tipos: Parmetros formales y Parmetros actuales

El paso de parmetros pueden realizarse por medio de dos mtodos:
Por valor, cuando tiene un valor determinado que se pasa al correspondiente parmetro
formal. Los parmetros por valor no pueden ser modificados por el subprograma.
Por referencia (&), es aquel en el que se pasa la variable y no el valor, lo que permite que
pueda ser modificada por el subprograma llamado.
35

Por ejemplo: Trabajando con procedimientos hacer un programa que calcule la suma de 2 nmeros.

#include <iostream.h>

void ingresos(float&,float&);
void suma(float,float, float&); Declaracin de procedimientos
void impresion(float);

void main( )
{
float a,b,s;
ingresos(a,b);
suma(a,b,s);
impresion(s);
}
void ingresos (float &x, float &y)
{
cout<<"ingrese 1 numero: "; Desarrollo del procedimiento ingresos
cin>>x;
cout<<"ingrese 2 numero: ";
cin>>y;
}

void suma(float x, float y, float &suma)
{
suma = x + y;
}

void impresion (float d)
{
cout<<"la suma es: "<<d;
}

III. EQUIPOS Y MATERIALES

Computadora personal
Programa Borland C++ 4.5 instalado
Cuaderno de clases, donde estn los ejercicios resueltos en pseudocdigos.

IV. PROCEDIMIENTO

h) Encender el computador.
i) Crear carpeta donde guardar sus programas.
j) Ingresar al Borland C++ 4.5
k) Codificar los algoritmos desarrollados en el aula.
l) Presentar avances y ejecucin de cada uno de los ejercicios al docente o jefe de prctica
encargado para la calificacin correspondiente.
m) Guardar la carpeta de sus archivos a sus memorias.
n) Retirarse del laboratorio de forma ordenada.

ALGORITMOS Procedimientos y Funciones
Gua Prctica N 12 y N 13

Desarrollar los siguientes ejercicios usando procedimientos y funciones:
36

1. Una compaa de seguros ofrece a sus clientes cuatro tipos de seguro de vida:
Si el cliente asegura a ms personas de
la indicadas en el cuadro anterior
tendr que pagar S/.8.00 mensuales por
cada persona adicional si es que el
seguro es de tipo A o B, y S/.5.00
mensuales por cada persona adicional si
es que el seguro es de tipo C o D. Calcular el monto anual que tiene que pagar un determinado
cliente.
2. Una papelera ha puesto en oferta la venta al por mayor (en cientos) de papel bond de acuerdo a
los siguientes criterios:
Para los primeros 5 cientos, se hace un descuento del 10% por cada ciento.
De 6 a ms cientos, se hace un descuento del 15% por cada ciento.
Disee un algoritmo que determine el importe bruto, el importe del descuento y el importe a
pagar por una compra de papel bond.
3. Un hombre desea saber cuanto dinero se genera por concepto de intereses sobre la cantidad
que tiene en inversin en el banco. El decidir reinvertir los intereses siempre y cuando estos
excedan a $7000, y en ese caso desea saber cuanto dinero tendr finalmente en su cuenta.
Solucin:
#include<iostream.h>
void ingresar(float&,float&); // Declaracin del procedimiento ingresar
void inversion(float,float,float&); // Declaracin del procedimiento inversin
void imprimir(float); // Declaracin del procedimiento imprimir
void main(){
float da,ti,mf;
ingresar(da,ti);
inversion(da,ti,mf);
imprimir(mf);
}

void ingresar(float&da,float&ti){
cout<<"Ingresar dinero ahorrado en el banco:";
cin>>da;
cout<<"Ingresar tasa de interes:";
cin>>ti;
}
void inversion(float da,float ti,float &mf){
float g;
g=da*ti;
if(g>7000)
mf=da+g;
else
mf=da;
}
void imprimir(float mf){
cout<<"El monto final de su cuenta es: "<<mf<<endl;
}
Tipo Mximo nmero de Personas Pago mensual (S/.)
A
B
C
D
8
6
4
2
40
30
20
10
37
4. Determinar el precio de un boleto de ida y vuelta en ferrocarril, conociendo la distancia a
recorrer y sabiendo que si el nmero de das de estancia es superior a 7 y la distancia superior
a 800 KM. El costo del boleto tiene una reduccin del 30%. El precio por cada km. recorrido es
de S/.3.20.
Solucin:
#include<iostream.h>
void ingresar(int&,int&); // Declaracion del procedimiento ingresar
float costo_boleto(int,int); // Declaracin de la funcin costo_boleto
void imprimir(float); // Declaracion del procedimiento imprimir
void main() {
float cb;
int dis,nd;
ingresar(dis,nd);
cb=costo_boleto(dis,nd);
imprimir(cb);
}
void ingresar(int&dis,int&nd){
cout<<"Ingresar distancia en Km:";
cin>>dis;
cout<<"Ingresar numero de dias:";
cin>>nd;
}
float costo_boleto(int dis,int nd){
float cp,desc,cb;
cp=dis*3.20;
if(dis>800 && nd>7)
desc=cp*0.30;
else
desc=0;
cb=cp-desc;
return cb;
}
void imprimir(float cb){
cout<<"El costo del boleto es: "<<cb<<endl;
}
5. Un centro comercial ofrece ventas financiadas por 3 tipos de tarjetas de crdito como indica
a continuacin:
Max. Letras Tipo de Tarjeta Inters (%)
12
8
6
A
B
C
5
10
15
El cliente solo puede financiar una compra hasta el mximo de letras que se indica en el cuadro
anterior, en caso contrario la venta no debe proceder. Calcular el monto de cada letra por
pagar as como el monto total.
Solucin:

#include<iostream.h>

void ingresar(char&,float&,int&);
void evaluar_max(char,int&);
38
void evaluar_interes(char,float&);
void imprimir(float,int,float,int);

void main() {

float inte,mc;
int nl,max;
char tarj;
ingresar(tarj,mc,nl);
evaluar_max(tarj,max);
evaluar_interes(tarj,inte);
imprimir(mc,max,inte,nl);
}



void ingresar(char&tarj,float&mc,int&nl){
cout<<"Ingresar tipo de tarjeta que posee [A],[B]o [C]: ";
cin>>tarj;
cout<<"Ingresar monto de compra: ";
cin>>mc;
cout<<"Ingresar numero de letras: ";
cin>>nl;
}

void evaluar_max(char tarj,int&max){
switch(tarj){
case 'A': max=12; break;
case 'B': max=8; break;
case 'C': max=6; break;
default: cout<<"Tipo de tarjeta no valida"<<endl;
max=0;
}
}

void evaluar_interes(char tarj,float &inte){
switch(tarj){
case 'A': inte=0.05; break;
case 'B': inte=0.10; break;
case 'C': inte=0.15; break;
default: cout<<"Tipo de tarjeta no valida"<<endl;
inte=0;
}
}
void imprimir(float mc,int max,float inte,int nl){
float mp,pfl,ptotal;
if(nl<max && max!=0 && inte!=0){
mp=mc/nl;
pfl=mp+mp*inte;
ptotal=pfl*nl;
39
cout<<"El monto de cada letra es: "<<pfl<<" soles"<<endl;
cout<<"El pago total es: "<<ptotal<<" soles"<<endl; }
else
cout<<"La venta no procede"<<endl;
}
6. Un club social ha clasificado a sus socios en 3 categoras, como se muestra en el siguiente
cuadro:
Categora Cant. Boletos Pago Mensual (S/.) Dscto (%)
A
B
C
25
20
15
200
150
100
4
3
2
Dicho club realiza mensualmente un tipo de evento (rifas, almuerzos, etc.)., de esta manera, un
socio esta obligado a vender la cantidad de boletos que se indican en el cuadro anterior, pero si
un socio vende ms de los boletos indicados, se le descuenta S/.2.00 por cada boleto vendido a
su pago mensual. Adems si el socio tiene ms de 55 aos recibe un porcentaje de descuento
de su pago mensual. Calcular el descuento que tiene el socio y monto del mes.
7. Calcular el pago de un obrero que trabaja
al destajo. El pago que recibe el obrero
por cada unidad producida depende de su
categora y del tipo de producto que
produce, como se muestra en el siguiente
cuadro:
As mismo, el obrero recibe una bonificacin especial de acuerdo a la cantidad que produce:
Unidades Producidas Bonificacin (%)
1 250
251 500
501 1000
1001 mas
0.00
50.00
100.00
150.00
Adems del total de ingresos se descuenta 75 por seguro.
Solucin:
#include<iostream.h>
void ingresar(char&,int&,char&);
void tarifa(char,char,int,float&,int&);
void bonificacion(int,float,float&);
float sueldo(float,float);
void imprimir(float,int);

void main(){
char tp,cat;
int un,Bd=0;
float tar,bon,s;
ingresar(tp,un,cat);
tarifa(tp,cat,un,tar,Bd);
bonificacion(un,tar,bon);
s=sueldo(tar,bon);
imprimir(s,Bd);
}

void ingresar(char&tp,int&un,char&cat){
cout<<"Ingresar tipo de producto Teja[T],Loseta[L]:";
Tarifa (S/. x unidad)
Categora Tejas Losetas
A
B
C
2.50
2.00
1.50
2.00
1.50
1.00
40
cin>>tp;
cout<<"Ingresar unidades producidas:";
cin>>un;
cout<<"Ingresar categoria del obrero [A],[B],[C]:";
cin>>cat;
}

void tarifa(char tp,char cat,int un,float&tar,int&Bd){
switch(tp){
case 'T':switch(cat){
case 'A':tar=un*2.50;break;
case 'B':tar=un*2.00;break;
case 'C':tar=un*1.50;break;
default: cout<<"Categoria no valida"<<endl;
Bd=1;
};break;
case 'L':switch(cat){
case 'A':tar=un*2.00;break;
case 'B':tar=un*1.50;break;
case 'C':tar=un*1.00;break;
default: cout<<"Categoria no valida"<<endl;
Bd=1;
};break;
default: cout<<"Tipo de producto no valido"<<endl;
Bd=1;
}
}

void bonificacion(int un,float tar,float&bon) {
if(un>1 && un<250)
bon=0;
else if(un<=500)
bon=tar*0.50;
else if(un<=1000)
bon=tar;
else
bon=tar*1.50;
}

float sueldo(float tar,float bon){
float s;
s=(tar+bon)-75;
return s;
}
void imprimir(float s,int Bd){
if(Bd==0)
cout<<"El sueldo final del obrero es: "<<s<<" soles"<<endl;
}
8. Disear un algoritmo que devuelva la cantidad de nmeros positivos y negativos ingresados a
travs del teclado. El algoritmo termina cuando se ingresa el nmero cero.
41
Solucin:

#include<iostream.h>

void evaluar(int&,int&);
void imprimir(int,int);

void main() {

int c1=0,c2=0;
evaluar(c1,c2);
imprimir(c1,c2);
}



void evaluar(int&c1,int&c2) {
int n;
do {
cout<<"Ingresar numero: ";
cin>>n;
if(n>0)
c1++;
else if(n<0)
c2++;
} while(n!=0);
}

void imprimir(int c1,int c2) {
cout<<"La cantidad de numeros positivos es: "<<c1<<endl;
cout<<"La cantidad de numeros negativos es: "<<c2<<endl;
}
9. En una empresa, los salarios van a aumentar en base al contrato actual del trabajador:
Contrato Aumento %
De 0 a 1500 soles
De 1501 a 3000 soles
De 3001 a 6000 soles
De 6001 soles a ms
20
10
5
0
Adems el trabajador recibir una bonificacin especial de acuerdo a su condicin civil.
Estado civil Bonificacin
Soltero 100.00
Casado 150.00
Se pide mostrar cuanto es la bonificacin del trabajador y cual es su sueldo neto.







42










Universidad Juan Pablo II
ESCUELA DE INGENIERIA DE SISTEMAS
Gua de Laboratorio de Algoritmos N
0
14
CODIFICANDO CON ARREGLOS UNIDIMENSIONALES (VECTORES)
USO DEL CONTROL

I. OBJETIVOS
Al trmino de esta experiencia, el estudiante ser capaz de:
1. Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos.
2. Identificar los diversos errores de compilacin y corregirlos adecuadamente.
3. Plantear correctamente en cdigo C++ el control.
4. Usar correctamente el programa.

II. FUNDAMENTO TEORICO
Para alcanzar los objetivos de esta experiencia, es necesario tener en consideracin los siguientes
aspectos tericos:
Un arreglo es un conjunto de elementos de igual tipo.
Por ejemplo:
Si decimos arreglo de enteros, nos referimos a que nuestro conjunto de datos sern solo del
tipo nmeros enteros (1,2,3,.....,etc).
Si decimos arreglo de caracteres, ser porque los datos que almacenaremos sern solo del
tipo carcter (a, b, c, ..... , etc).
Un arreglo permite almacenar y manipular los datos almacenados, por lo que podemos decir que al
trabajar con un arreglo, los datos no son voltiles, como suceden con las variables, donde cabe la
posibilidad de perder un valor anterior si es que se le asigna uno nuevo.

Por ejemplo: Ingresar n nmeros a un vector, y calcular el promedio.

#include <iostream.h>

void main() {

43
int n,i,suma=0,prom,a[50];
cout<<"Ingresar cantidad de valores: ";
cin>>n;
for(i=1;i<=n;i++)
{
cout<<"Ingresar numero: ";
cin>>a[i];
}
for(i=1;i<=n;i++)
{
suma=suma+a[i];
}
prom=suma/n;
cout<<"El promedio de los numeros ingresados es: "<<prom<<endl;
}



III. EQUIPOS Y MATERIALES

Computadora personal
Programa Borland C++ 4.5 instalado
Cuaderno de clases, donde estn los ejercicios resueltos en pseudocdigos.

IV. PROCEDIMIENTO

a) Encender el computador.
b) Crear carpeta donde guardar sus programas.
c) Ingresar al Borland C++ 4.5
d) Codificar los algoritmos desarrollados en el aula.
e) Presentar avances y ejecucin de cada uno de los ejercicios al docente o jefe de prctica
encargado para la calificacin correspondiente.
f) Guardar la carpeta de sus archivos a sus memorias.
g) Retirarse del laboratorio de forma ordenada.


ALGORITMOS Arreglos Unidimensionales (Vectores)
Gua Prctica N 14

1. Guardar N y M nmeros enteros a dos vectores tal como A y B, luego trasladar los nmeros
impares del vector A al final del vector B.
2. Ingresar n nmeros enteros a un vector, luego ingresar un numero cualquiera, se pide pasar a
un nuevo vector todos los nmeros menores e iguales al numero que ingreso, en caso no exista
ninguno, mostrar un mensaje correspondiente.
Solucin:

#include<iostream.h>
void main() {
int n,i,A[40],x,j=0,B[40];
cout<<"Ingresar tamao del vector: ";
cin>>n;
for(i=1;i<=n;i++) {
cout<<"Ingresar numero: ";
cin>>A[i];
}
44
cout<<"Ingresar numero a comparar: ";
cin>>x;
for(i=1;i<=n;i++) {
if(A[i]<=x) {
j++;
B[j]=A[i];
}
}
if(j==0)
cout<<"No se encontro ningun numero menor o igual a X"<<endl;
else {
cout<<"Los numeros menores o iguales a X son: "<<endl;
for(i=1;i<=j;i++)
cout<<A[i]<<"\t";
}
}
3. Guardar N y M nmeros en dos vectores tal como A y B, luego mostrar A B en un nuevo
vector C.
Solucin:
#include<iostream.h>

void ingresar(int&,int D[30]);
void unir(int,int,int A[30],int B[20],int&,int C[50]);
void imprimir(int,int D[50]);

void main() {
int n,A[30],m,B[20],q,C[50];
ingresar(n,A);
cout<<"\nEl vector A es:"<<endl;
imprimir(n,A);
ingresar(m,B);
cout<<"\nEl vector B es:"<<endl;
imprimir(m,B);
unir(n,m,A,B,q,C);
cout<<"\nEl vector C es:"<<endl;
imprimir(q,C);
}

void ingresar(int &x,int D[30]) {
cout<<"Ingresar tamao del vector: ";
cin>>x;
for(int i=1;i<=x;i++) {
cout<<"Ingresar numero: ";
cin>>D[i];
}
}

void unir(int n,int m,int A[30],int B[20],int&q,int C[50]) {
int i;
for(i=1;i<=n;i++)
45
C[i]=A[i];
q=n+1;
for(i=1;i<=m;i++) {
C[q]=B[i];
q++;
}
}

void imprimir(int x,int D[50]){
for(int i=1;i<=x;i++)
cout<<D[i]<<"\t";
cout<<endl;
}

4. Ingresar n nmeros enteros a un vector, calcule el promedio entero y luego reemplace el mayor
numero por el promedio calculado.
Solucin:
#include <iostream.h>
void main() {
int n,i,suma=0,prom,a[50],mayor=0,pos;
cout<<"Ingresar cantidad de valores: ";
cin>>n;
for(i=1;i<=n;i++) {
cout<<"Ingresar numero: ";
cin>>a[i];
}
for(i=1;i<=n;i++) {
suma=suma+a[i];
}
prom=suma/n;
for(i=1;i<=n;i++) {
if(a[i]>mayor) {
mayor=a[i];
pos=i;
}
}
a[pos]=prom;
cout<<"El promedio de los numeros es: "<<prom<<endl;
cout<<"El vector reemplazado es: ";
for(i=1;i<=n;i++)
cout<<a[i]<<"\t";
}
5. Ingresar un de cuatro cifras, y colocar cada uno de sus dgitos en un vector, adems mostrar
la posicin del menor digito.
6. Guardar n nmeros enteros a un vector, calcular el promedio y reemplazar todos los nmeros
que ocupan las posiciones pares, por el promedio calculado.
7. En un concurso de conocimiento se almacena en un vector los nombres de N participantes y en
otro vector las notas obtenidas (valores de 0 a 20), se pide mostrar el nombre del participante
que obtuvo la mayor nota.
Solucin:
46

#include <iostream.h>
void main()
{
int n,i, mayor=0,posm,a[50];
char*nom[10]={" "," "," "," "," "," "," "," "," "," "};

cout<<"Ingresar cantidad de valores: ";
cin>>n;
for(i=1;i<=n;i++) {
cout<<"Ingresar nombre: ";
cin>>nom[i];
cout<<"Ingresar puntaje: ";
cin>>a[i];
}

for(i=1;i<=n;i++) {
if(a[i]>mayor) {
mayor=a[i];
posm=i;
}
}
cout<<"El alumno con mayor nota es: ";
cout<<nom[posm];
}
8. En una empresa se va incrementar los sueldos de los empleados, para esto, se guarda en un
vector los nombres de los N empleados y en otro vector sus sueldos actuales, se pide calcular
el nuevo sueldo, sabiendo que para aquellos que ganen ms de 2500 se le incrementara el 8%,
caso contrario, se le incrementara el 10%.
Solucin:
#include<iostream.h>
void main() {
int n,i;
float sueldo[40],nsueldo[40];
char*nombre[10]={" "," "," "," "," "," "," "," "," "," "};
cout<<"Ingresar cantidad de empleados: ";
cin>>n;
for(i=1;i<=n;i++) {
cout<<"Ingresar nombre: ";
cin>>nombre[i];
cout<<"Ingresar sueldo: ";
cin>>sueldo[i];
}

for(i=1;i<=n;i++) {
if(sueldo[i]>2500)
nsueldo[i]=sueldo[i]+sueldo[i]*0.08;
else
nsueldo[i]=sueldo[i]+sueldo[i]*0.10;
}
47
cout<<"Los empleados: "<<endl;
for(i=1;i<=n;i++)
cout<<nombre[i]<<"\t";
cout<<endl;
cout<<"tienen un nuevo sueldo de: "<<endl;
for(i=1;i<=n;i++)
cout<<nsueldo[i]<<"\t";
}
9. Ingresar N y M nmeros enteros a 2 vectores tal como A y B, si el vector A tiene mas
elementos que B, pasar los nmeros impares de A al final de B, caso contrario, pasar los
nmeros impares de B al fina de A.
10. Ingresar n nmeros enteros a un vector, luego ingrese un numero, si el numero ingresado se
encuentra dentro del vector, que muestre su posicin, caso contrario mostrar el mensaje: El
numero no esta en el arreglo.




































48








Universidad Juan Pablo II
ESCUELA DE INGENIERIA DE SISTEMAS
Gua de Laboratorio de Algoritmos N
0
15
CODIFICANDO CON ARREGLOS BIDIMENSIONALES (MATRICES)
USO DEL CONTROL

I. OBJETIVOS
Al trmino de esta experiencia, el estudiante ser capaz de:
5. Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos.
6. Identificar los diversos errores de compilacin y corregirlos adecuadamente.
7. Plantear correctamente en cdigo C++ el control.
8. Usar correctamente el programa.

II. FUNDAMENTO TEORICO
Para alcanzar los objetivos de esta experiencia, es necesario tener en consideracin los siguientes
aspectos tericos:
MATRICES




b [3] [4] =
1 2 3 4
1 1.2 7.25 8.0 14.6
2 2.8 6.1 9.3 5.4
3 3.1 24.8 38.4 6.4


nombre [filas] [columnas]

Una matriz se define: nombre [fila] [columna] arreglo de tipo

Ejemplo: b [3] [4] arreglo de reales

Para hacer referencia:

Ejemplo: b [2] [1] = 2.8
b [3] [2] = 24.8
Punteros o posiciones de filas
Punteros o posiciones de columnas
datos
49
Por ejemplo: Disear un algoritmo que sume las filas de una matriz A de filas N y columnas M y los
coloque en un nuevo vector Suma.
1 2 3 Suma
1 5 8 12 25 1
A = 2 7 13 14 34 2
3 9 11 6 26 3
4 3 4 6 13 4

#include<iostream.h>
void main() {
int n,i,j,m,A[20][10],suma[20];
cout<<"Ingresar cantidad de filas: ";
cin>>n;
cout<<"Ingresar cantidad de columnas: ";
cin>>m;
for(i=1;i<=n;i++) {
for(j=1;j<=m;j++) {
cout<<"Ingresar numero: ";
cin>>A[i][j];
}
}

for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
suma[i]=suma[i]+A[i][j] ;
}
}
cout<<"\n\n""Mostrando la matriz A: "<<endl;
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
cout<<A[i][j]<<"\t";
cout<<endl;
}
}
cout<<"La suma de las filas es: ";
for(i=1;i<=n;i++)
cout<<suma[i]<<"\t";
}

III. EQUIPOS Y MATERIALES

Computadora personal
Programa Borland C++ 4.5 instalado
Cuaderno de clases, donde estn los ejercicios resueltos en pseudocdigos.

IV. PROCEDIMIENTO

h) Encender el computador.
i) Crear carpeta donde guardar sus programas.
j) Ingresar al Borland C++ 4.5
k) Codificar los algoritmos desarrollados en el aula.
l) Presentar avances y ejecucin de cada uno de los ejercicios al docente o jefe de prctica
encargado para la calificacin correspondiente.
m) Guardar la carpeta de sus archivos a sus memorias.
n) Retirarse del laboratorio de forma ordenada.
50

ALGORITMOS Arreglos Bidimensionales
Gua Prctica N 15

1. Sumar los elementos correspondientes de las columnas pares de una matriz de tamao
N * M y guardarlo en un vector.
2. Construir un programa que permita guardar nmeros enteros en una matriz cuadrada
de tamao N, luego pasar a un nuevo vector todos los nmeros pares.
Solucin:
#include<iostream.h>
void main() {
int n,i,j,A[20][10],q=0,B[40];
cout<<"Ingresar cantidad de filas y columnas: ";
cin>>n;

for(i=1;i<=n;i++) {
for(j=1;j<=n;j++) {
cout<<"Ingresar numero: ";
cin>>A[i][j];
}
}

for(i=1;i<=n;i++) {
for(j=1;j<=n;j++){
if(A[i][j]%2==0) {
q++;
B[q]=A[i][j];
}
}
}
cout<<"\n\n""Mostrando la matriz A: "<<endl;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
cout<<A[i][j]<<"\t";
cout<<endl;
}
}
cout<<"Los numeros pares de la matriz son: ";
for(i=1;i<=q;i++)
cout<<B[i]<<"\t";
}

3. Guardar en una matriz cuadrada N nmeros enteros, luego reemplazar sus diagonales
principal y secundaria con el nmero 5.
4. Calcular el promedio de cada fila de una matriz de tamao N * M que contiene
nmeros enteros.
5. Intercambiar los elementos de la diagonal principal por los elementos de la ltima fila
de una matriz cuadrada.
Solucin:
51
#include<iostream.h>
void main() {
int n,i,j,A[20][10],aux;
cout<<"Ingresar cantidad de filas y columnas: ";
cin>>n;
for(i=1;i<=n;i++) {
for(j=1;j<=n;j++) {
cout<<"Ingresar numero: ";
cin>>A[i][j]; }
}

for(i=1;i<=n;i++) {
aux=A[i][i];
A[i][i]=A[n][i];
A[n][i]=aux; }

cout<<"\n\n""Mostrando la matriz intercambiada: "<<endl;
for(i=1;i<=n;i++) {
for(j=1;j<=n;j++) {
cout<<A[i][j]<<"\t";
cout<<endl;
}
}

}
6. Ingresar nmeros enteros a una matriz cuadrada y ordenar de forma descendente los
elementos de la diagonal principal.
7. En un concurso final de atletismo participan varios deportistas, los cuales realizan
pruebas en 4 etapas. Ingresar los nombres de los deportistas y guardarlos en un
vector, luego ingresar el tiempo que empleo cada atleta en cada una de las etapas;
finalmente mostrar en un vector el promedio de tiempos de cada atleta, en otro
vector la suma de tiempos de cada etapa y el nombre del atleta que menos tiempo
empleo durante todo el concurso.
8. Una empresa ha convocado a un concurso de un puesto de trabajo. En dicho concurso
se presentan N postulantes, cuyos nombres son guardados en un vector, as mismo, se
realiza 4 pruebas cuyos puntajes obtenidos son guardados en una matriz. Calcular el
puntaje de cada postulante. Finalmente mostrar el nombre del candidato y en caso
existiera un empate mostrar los nombres de los candidatos que empataron.
9. Construir un programa que permita promediar todos los elementos que forman la letra
L, de una matriz de tamao N x M.
10. Guardar nmeros enteros en una matriz de tamao N*M luego, devolver en un vector
la fila que tiene la mayor suma.
11. Ingresar nmeros enteros a una matriz cuadrada de tamao N, luego intercambiar los
elementos de la fila X por los elementos de la fila Y. X e Y deben ser ingresados.
12. Trasladar los elementos de la primera y la ultima columna de una matriz de tamao N
x M a un vector, luego mostrar en forma ascendente los elementos de este vector.
52
13. Ingresar en un vector los nombres de alumnos, as mismo almacenar en una matriz 3
notas por cada alumno, calcular el promedio sabiendo que se elimina la nota ms baja y
mostrar el nombre del alumno con el mayor promedio.
14. Hacer un algoritmo para mover los contenidos de las filas de una matriz una posicin
hacia la derecha. El ltimo elemento de cada fila pasar a la primera posicin de la
misma. Trabajar con una matriz N x M.
15. Guardar nmeros enteros en una matriz de tamao N * M, luego ordenar de forma
descendente la columna que contiene el menor nmero.
16. Llenar una matriz de tamao N con nmeros enteros, luego ingresar el ndice de la fila
y de la columna cuyos elementos se desea sumar y guardarlo en un vector.
17. Ingresar nmeros enteros a una matriz de tamao N x M, calcular el promedio de los
nmeros pares y reemplazar el mayor nmero de cada columna por el promedio
calculado.
18. Guardar nmeros enteros en una matriz cuadrada de tamao N, luego pasar a un nuevo
vector todos los nmeros pares y a otro vector todos los nmeros impares.
19. Intercambiar los contenidos del menor y el mayor nmero de cada fila de una matriz
de tamao N * M.
20. Construir un algoritmo que permita sumar los elementos de la primera columna con los
elementos de la ltima columna, de una matriz cuadrada, luego muestre el resultado de
esta suma en un vector.

You might also like