Вы находитесь на странице: 1из 55

Universidad Tecnolgica del

Peru
ESCUELA DE INGENIERIA DE SISTEMAS
Gua de Laboratorio de Principios de
Algoritmos
Docente:
Ing. Pedro ngel Molina Velarde

2015-II

Universidad Tecnolgica del Peru


ESCUELA DE INGENIERIA DE SISTEMAS

Gua de Laboratorio de Programacin de


Alto Nivel I
Sesin N0 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.
2.

Conocer el Borlan C++.


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

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;
3

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;

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 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)
b)
c)
d)
e)

Encender el computador.
Crear carpeta donde guardar sus programas.
Ingresar al Borland C++ 4.5
Codificar los algoritmos desarrollados en el aula.
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.

2.
3.

4.

5.

6.

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;
}
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.
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.
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;
}
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.
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>

7.
8.

9.

10.

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;
}
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
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
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.
Disee un algoritmo que determine el porcentaje de varones y de mujeres que hay en un saln
de clase.

Universidad Tecnolgica del Peru


ESCUELA DE INGENIERIA DE SISTEMAS

Gua de Laboratorio de Programacin de


Alto Nivel I
Sesin N0 3

CODIFICANDO CON ESTRUCTURAS SECUENCIALES

I. OBJETIVOS
Al trmino de esta experiencia, el estudiante ser capaz de:
1.
2.
3.
4.

Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos.


Identificar los diversos errores de compilacin y corregirlos adecuadamente.
Plantear correctamente las estructuras secuenciales en cdigo C++.
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

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)
b)
c)
d)
e)

Encender el computador.
Crear carpeta donde guardar sus programas.
Ingresar al Borland C++ 4.5
Codificar los algoritmos desarrollados en el aula.
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 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%.
10

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

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;
}

11

Universidad Tecnolgica del Peru


ESCUELA DE INGENIERIA DE SISTEMAS

Gua de Laboratorio de Programacin de


Alto Nivel I 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.
2.
3.
4.

Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos.


Identificar los diversos errores de compilacin y corregirlos adecuadamente.
Plantear correctamente en cdigo C++ el control selectivo if - else.
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: ;
12

cin>> n ;
if (n > 0)
cout << Positivo;
else
if (n < 0)
cout<< Negativo;
else
cout <<Es cero;
}
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)
b)
c)
d)
e)

Encender el computador.
Crear carpeta donde guardar sus programas.
Ingresar al Borland C++ 4.5
Codificar los algoritmos desarrollados en el aula.
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;

13

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.

3.

4.

}
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
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.
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.
Una fabrica paga a
sus empleados de acuerdo a
Aos
de
Servicios
%
de
Gratificacin
su condicin, de tal
manera que un obrero
0a5
60
contratado recibe al
mes S/.1200.00 y un
6
a
10
80
obrero
estable
S/.1000.00.
as
mismo,
11 a ms
100
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;

14

else if(as>6 && as<=10)


g=sb*0.80;
else
g=sb;
if(mes==7 || mes==12)
sf=sb+g;
else
sf=sb;
cout<<"El sueldo final del obrero del mes "<<mes<<" es: "<<sf<<endl;

}
5.

Una
empresa
se encarga de la venta
a.
S/. 3.50 si se compra hasta
y distribucin
de CD. Los clientes
9 unidades.
pueden adquirir
los
artculos
por
b.
S/. 3.30 si se compra entre
cantidad. Los
precios son:
10 unidades y hasta 99.
El
vendedor c.
gana por cada CD
S/. 3.10 si se compra entre
vendido S/. 1.25.
Realizar un algoritmo
100 y 499 unidades.
S/. 2.80 para ms de 500.
que
calcule
el d.
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
Promedio
Categora
en base a su promedio, acuerdo a la siguiente tabla:
20 17
A
Solucin:
16

14
B
# include <iostream.h>
13 12
C
void main() {
11

0
D
int prom,;

7.

8.

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; }
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.
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:

15

# 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;
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;
}
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:
9.

Superficie del bosque (%)


70%
20%
10%
Superficie del bosque (%)
50%
30%
20%

Tipo de rbol
pino
oyamel
cedro
Tipo de rbol
pino
oyamel
cedro

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
8
40
B
6
30
C
4
20
D
2
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.

16

Universidad Tecnolgica del Peru


ESCUELA DE INGENIERIA DE SISTEMAS

Gua de Laboratorio de Programacin de


Alto Nivel I
N 6
CODIFICANDO CON ESTRUCTURAS SELECTIVAS
USO DEL CONTROL switch
I. OBJETIVOS
Al trmino de esta experiencia, el estudiante ser capaz de:
1.
2.
3.
4.

Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos.


Identificar los diversos errores de compilacin y corregirlos adecuadamente.
Plantear correctamente en cdigo C++ el control selectivo switch.
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).

17

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;
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)
b)
c)
d)
e)

Encender el computador.
Crear carpeta donde guardar sus programas.
Ingresar al Borland C++ 4.5
Codificar los algoritmos desarrollados en el aula.
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:
18

# include <iostream.h>
void main() {
int nd;
cout<<"Ingresar numero del dia: ";
cin>>nd;
switch(nd) {
case 1: cout<<"Lunes";break;
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;
}

19

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:
Compra (S/.)
Descuento (%)
0 250
0
251 500
5
501 1000
10
1001 ms
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
15
Juguetes
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 (%)
05
0
0
6 12
6
4
13 mas
9
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;

20

else if(mes<=12)
inte=din*0.04;
else
inte=din*0.07;break;
default:
cout<<"Tipo de Moneda no valida"<<endl;
Bd=1;
}
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
30
25
20
Martimo
25
20
15
Terrestre
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;
21

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;
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
8
40
B
6
30
C
4
20
D
2
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 Max. Letras Tipo de Tarjeta Inters (%)
12
A
5
crdito como indica a continuacin:
8
B
10
6
C
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.
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 (%)
22

Pars
184.00
10
15
Italia
139.70
15
20
Grecia
127.40
20
25
Un cliente solo puede comprar pasajes para una ciudad. Calcular el total que tiene que pagar un
determinado cliente.
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
2.50
2.00
B
2.00
1.50
C
1.50
1.00
As mismo, el obrero recibe una bonificacin especial de acuerdo a la cantidad que produce:
Unidades Producidas
Bonificacin (%)
1 250
0.00
251 500
50.00
501 1000
100.00
1001 mas
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
20
De 1501 a 3000 soles
10
De 3001 a 6000 soles
5
De 6001 soles a ms
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
5%
B
7%
C
10%
D
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
25
200
4
B
20
150
3
C
15
100
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.

23

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.

Universidad Tecnolgica del Peru


ESCUELA DE INGENIERIA DE SISTEMAS

Gua de Laboratorio de Programacin de


Alto Nivel I
N 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.
2.
3.
4.

Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos.


Identificar los diversos errores de compilacin y corregirlos adecuadamente.
Plantear correctamente en cdigo C++ el control repetitivo while , Do while y For.
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;
}

24

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;
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)
b)
c)
d)
e)

Encender el computador.
Crear carpeta donde guardar sus programas.
Ingresar al Borland C++ 4.5
Codificar los algoritmos desarrollados en el aula.
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

25

1.
2.

3.

4.

5.

Ingresar nmeros enteros y calcular la suma de dichos nmeros. El algoritmo termina cuando
se ingresa el numero cero.
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;
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;
}
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.
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;
}
Una persona debe realizar un muestreo con N personas para
Edad
determinar el promedio de peso de los nios, jvenes y Categora
adultos que existen en su zona habitacional. Se determinan Nios
0 12
las categoras con base en la siguiente tabla:
Jvenes
13 29
Solucin:
Adultos
30 ms
#include<iostream.h>
void main(){
int N,i,edad,pes,suma1=0,suma2=0,suma3=0,c1=0,c2=0,c3=0;

26

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;
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;

27

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;
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;

28

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
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')

29

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;

}
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
+

30

Universidad Tecnolgica del Peru


ESCUELA DE INGENIERIA DE SISTEMAS

Gua de Laboratorio de Programacin de


Alto Nivel I
Nro 9,10 y 11
CODIFICANDO CON FUNCIONES
USO DEL CONTROL
I. OBJETIVOS
Al trmino de esta experiencia, el estudiante ser capaz de:
1.
2.
3.
4.

Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos.


Identificar los diversos errores de compilacin y corregirlos adecuadamente.
Plantear correctamente en cdigo C++ el control.
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

31

Retorno 0
Fin_funcion
Ejemplo: Un programa que calcula la suma de 2 nmeros y la imprime:
#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)
b)
c)
d)
e)

Encender el computador.
Crear carpeta donde guardar sus programas.
Ingresar al Borland C++ 4.5
Codificar los algoritmos desarrollados en el aula.
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:
32

Tipo

Mximo nmero de Personas

Pago mensual (S/.)

A
8
40
B
6
30
C
4
20
D
2
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.
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() {

33

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;

}
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
A
5
8
B
10
6
C
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;

34

else
}

cout<<"El monto de cada letra es: "<<pfl<<" soles"<<endl;


cout<<"El pago total es: "<<ptotal<<" soles"<<endl; }
cout<<"La venta no procede"<<endl;

int 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;
}
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
25
200
4
B
20
150
3
C
15
100
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
2.50
2.00
B
2.00
1.50
C
1.50
1.00

35

As mismo, el obrero recibe una bonificacin especial de acuerdo a la cantidad que produce:
Unidades Producidas
Bonificacin (%)
1 250
0.00
251 500
50.00
501 1000
100.00
1001 mas
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:
Contrato
Aumento %
De 0 a 1500 soles
20
De 1501 a 3000 soles
10
De 3001 a 6000 soles
5
De 6001 soles a ms
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.

36

Universidad Tecnolgica del Peru


ESCUELA DE INGENIERIA DE SISTEMAS

Gua de Laboratorio de Programacin de


Alto Nivel I
N0 12 y N0 13
CODIFICANDO CON PROCEDIMIENTOS Y FUNCIONES
USO DEL CONTROL
I. OBJETIVOS
Al trmino de esta experiencia, el estudiante ser capaz de:
5.
6.
7.
8.

Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos.


Identificar los diversos errores de compilacin y corregirlos adecuadamente.
Plantear correctamente en cdigo C++ el control.
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.
37

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&);
void impresion(float);

Declaracin de procedimientos

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: ";
ingresos
cin>>x;
cout<<"ingrese 2 numero: ";
cin>>y;
}

Desarrollo

del

procedimiento

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)
i)
j)
k)
l)

Encender el computador.
Crear carpeta donde guardar sus programas.
Ingresar al Borland C++ 4.5
Codificar los algoritmos desarrollados en el aula.
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

38

Gua Prctica N 12 y N 13
Desarrollar los siguientes ejercicios usando procedimientos y funciones:
1. Una compaa de seguros ofrece a sus clientes cuatro tipos de seguro de vida:
Si
el cliente Tipo Mximo nmero de Personas Pago mensual (S/.) asegura
a
ms
personas de la
indicadas
en
el
A
8
40
cuadro anterior
tendr que pagar
B
6
30
S/.8.00
mensuales por cada
C
4
20
persona adicional
si es que el seguro
D
2
10
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){

39

cout<<"El monto final de su cuenta es: "<<mf<<endl;


}
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
A
5
8
B
10
6
C
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>

40

void
void
void
void

ingresar(char&,float&,int&);
evaluar_max(char,int&);
evaluar_interes(char,float&);
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;

41

else

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; }

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
25
200
4
B
20
150
3
C
15
100
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
Tarifa (S/. x unidad)
trabaja al destajo. El pago que recibe el
Categora
Tejas
Losetas
obrero por cada unidad producida
A
2.50
2.00
depende de su categora y del tipo de
B
2.00
1.50
producto que produce, como se muestra
C
1.50
1.00
en el siguiente cuadro:
As mismo, el obrero recibe una bonificacin especial de acuerdo a la cantidad que produce:
Unidades Producidas
Bonificacin (%)
1 250
0.00
251 500
50.00
501 1000
100.00
1001 mas
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);
}

42

void ingresar(char&tp,int&un,char&cat){
cout<<"Ingresar tipo de producto Teja[T],Loseta[L]:";
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;
}

43

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.
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
20
De 1501 a 3000 soles
10
De 3001 a 6000 soles
5
De 6001 soles a ms
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.

44

Universidad Tecnolgica del Peru


ESCUELA DE INGENIERIA DE SISTEMAS

Gua de Laboratorio de Programacin de


Alto Nivel I
N0 14
CODIFICANDO CON ARREGLOS UNIDIMENSIONALES
(VECTORES)
USO DEL CONTROL
I. OBJETIVOS
Al trmino de esta experiencia, el estudiante ser capaz de:
1.
2.
3.
4.

Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos.


Identificar los diversos errores de compilacin y corregirlos adecuadamente.
Plantear correctamente en cdigo C++ el control.
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>

45

void main() {
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)
b)
c)
d)
e)

Encender el computador.
Crear carpeta donde guardar sus programas.
Ingresar al Borland C++ 4.5
Codificar los algoritmos desarrollados en el aula.
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++) {

46

cout<<"Ingresar numero: ";


cin>>A[i];

}
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];
}
}

47

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++)
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.

48

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:
#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)

49

nsueldo[i]=sueldo[i]+sueldo[i]*0.08;
else

nsueldo[i]=sueldo[i]+sueldo[i]*0.10;

}
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.

50

Universidad Tecnolgica del Peru


ESCUELA DE INGENIERIA DE SISTEMAS

Gua de Laboratorio de Programacin de


Alto Nivel I
N0 15
CODIFICANDO CON ARREGLOS BIDIMENSIONALES
(MATRICES)
USO DEL CONTROL

I. OBJETIVOS
Al trmino de esta experiencia, el estudiante ser capaz de:
5.
6.
7.
8.

Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos.


Identificar los diversos errores de compilacin y corregirlos adecuadamente.
Plantear correctamente en cdigo C++ el control.
Usar correctamente el programa.

II. FUNDAMENTO TEORICO


Para alcanzar los objetivos de esta experiencia, es necesario tener en consideracin los
siguientes aspectos tericos:
MATRICES
Punteros o posiciones de columnas

Punteros o posiciones de filas

1
1.2
2.8
3.1

1
2
3

b [3] [4] =

nombre

[filas]

2
7.25
6.1
24.8

[columnas]

Una matriz se define:

datos

nombre [fila] [columna] arreglo de tipo

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


Para hacer referencia:
Ejemplo:

3
8.0
9.3
38.4

b [2] [1] = 2.8


b [3] [2] = 24.8

51

4
14.6
5.4
6.4

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
A
=

2
3
4

5
7

8
13

12
14

Sum
a
25
34

9
3

11
4

6
6

26
13

1
2
3
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)
i)
j)
k)
l)

Encender el computador.
Crear carpeta donde guardar sus programas.
Ingresar al Borland C++ 4.5
Codificar los algoritmos desarrollados en el aula.
Presentar avances y ejecucin de cada uno de los ejercicios al docente o jefe de
prctica encargado para la calificacin correspondiente.

52

m) Guardar la carpeta de sus archivos a sus memorias.


n) Retirarse del laboratorio de forma ordenada.

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.

53

5. Intercambiar los elementos de la diagonal principal por los elementos de la ltima fila
de una matriz cuadrada.
Solucin:
#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.

54

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.
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.

55