Vous êtes sur la page 1sur 37

LP

Guia de Problemas 2017-I


En la presente gua, se presenta problemas con soluciones bsicas (no incluye
estetica). El usuario debe para todos los problemas:
1.- Validar datos
2.- las entradas o lectura de datos deben presentar un orden o esttica. Asimismo para
los reportes.
3.- identificar tipo de los error y corregir

ESTRUCTURAS SECUENCIALES

1. Dado un nmero natural de 4 cifras disee un programa que permita obtener el invertido
(revs ) y sin usar estructuras repetitivas del nmero. ejemplo, si se lee el nmero 1155, el
algoritmo deber imprimir 5511.
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;
}
2. Disear un programa 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.
3. 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>

1
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;
}
4. 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 programa que determine cuanto recibir cada rea.
5. Construir un programa 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;
}

8.- Disee un programa que intercambie las cifras de las unidades de dos nmeros
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
}
9.- 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 programa 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.
10- 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 ;
cout<<"El porcentaje del examen final es: "<<porcexf ;
cout<<"El porcentaje del trabajo final es: "<<porctraf ;
cout<<"La nota final del alumno es: "<<nf<<endl;
}
1.
11.- Disee un programa 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
12.-isee 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;

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

4
ESTRUCTURAS CONDICIONALES
if else

1. Construir un programa 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
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.

5
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
Aos de Servicios % de Gratificacin
estable S/.1000.00. as mismo, todos los empleados
0a5 60
reciben un pago de gratificacin en los meses de Julio
6 a 10 80
y diciembre. Dicha gratificacin vara de acuerdo a los
11 a ms 100
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;
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
a. S/. 3.50 si se compra hasta
S/. 1.25. Disear un programa que 9 unidades.
calcule el precio total para el cliente, el b. S/. 3.30 si se compra entre
costo total y la ganancia para el 10 unidades y hasta 99.
vendedor. c. S/. 3.10 si se compra entre
100 y 499 unidades.
d. S/. 2.80 para ms de 500.

6
6. Disear un programa que determine la categora de un estudiante en base a su promedio,
acuerdo a la siguiente tabla:
Promedio Categora
Solucin:
20 17 A
# include <iostream.h>
16 14 B
void main() {
13 12 C
int prom,;
11 0 D
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";
cout<<"El promedio del alumno es: "<<proml;
cout<<"por lo tanto le corresponde la categoria: "<<cat ;
}

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

7
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:
Superficie del bosque (%) Tipo de rbol
70% pino
20% oyamel
10% 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.
Superficie del bosque (%) Tipo de rbol
50% pino
30% oyamel
20% cedro

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.

8
ESTRUCTURAS SELECTIVA: switch

1. Disear un programa 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;
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. Disear un programa 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;

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

3. 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
Disear un programa que calcule el pago total que har un determinado cliente.

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

10
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;
}
total=din+inte;
if(Bd==0) {
cout<<"El interes ganado es: "<<inte<<endl;
cout<<"El total a recibir es: "<<total<<endl;
}
}
5. 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.
6. 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;

11
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;
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;
}
7. 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.
8. 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
El cliente solo puede financiar una compra 6 C 15
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.

12
9. 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 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.
10. 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.
11. 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.
12. Disear un programa 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%

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

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

14
ESTRUCTURAS REPETITIVAS :
while, do while y for

1. Se quiere ingresar las calificaciones de los alumnos. Disear un programa para calcular el
promedio de las calificaciones ingresadas. El programa 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;
}
2. 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.
3. Suponga que se tiene un conjunto de N personas. Disear un programa 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;
}
4. 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 Categora Edad
siguiente tabla: Nios 0 12
Jvenes 13 29
Adultos 30 ms
15
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;
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;
}
5. 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.
6. 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 programa
termina cuando se ingresa un producto que no este a la venta.
Solucin:

16
#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;
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;
}
7. 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).
8. Disear un programa 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;
}
9. 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.

17
10. 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.
11. Se tiene un conjunto de 10 tarjetas cada una contiene la informacin del censo para una
persona: Sexo, Edad y Estado civil (a.- soltera, 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.
12. En un examen el tipo de calificacin es el siguiente:
Puntaje Calificacin
100 70 A
69 30 B
29 0 C
Disear un programa 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.
13. 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.
14. Disear un programa 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.
15. 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.
16. 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++;

18
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;
}
17. Disear un programa que permita calcular la suma de los primeros N trminos de la siguiente
serie:
64/21 + 62/24 + 60/27 + 58/30 +

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

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

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 asegura a ms personas de Tipo Mximo nmero de Personas Pago mensual (S/.)
la indicadas en el cuadro anterior
A 8 40
tendr que pagar S/.8.00 mensuales por
B 6 30
cada persona adicional si es que el
C 4 20
seguro es de tipo A o B, y S/.5.00
D 2 10
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 main()
{
cout<<"Ingresar dinero ahorrado en el banco:";
cin>>da;
cout<<"Ingresar tasa de interes:";
float g;

g=da*ti;
if(g>7000)
mf=da+g;
else
mf=da;

20
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:

void main() {
float cb;
int dis,nd;

cout<<"Ingresar distancia en Km:";


cin>>dis;
cout<<"Ingresar numero de dias:";
cin>>nd;

float cp,desc,cb;
cp=dis*3.20;
if(dis>800 && nd>7)
desc=cp*0.30;
else
desc=0;
cb=cp-desc;

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

21
7. Calcular el pago de un obrero que trabaja Tarifa (S/. x unidad)
al destajo. El pago que recibe el obrero
Categora Tejas Losetas
por cada unidad producida depende de su
A 2.50 2.00
categora y del tipo de producto que
B 2.00 1.50
produce, como se muestra en el siguiente
C 1.50 1.00
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.

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.

22
ARREGLOS UNIDIMENSIONALES (VECTORES)

1. Disear un programa que permita 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. Disear un programa que permita 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];
}
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. Disear un programa para Guardar N y M nmeros en dos vectores tal como A y B, luego
mostrar A B en un nuevo vector C.

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

cout<<"Ingresar tamao del vector: ";


cin>>x;
for(int i=1;i<=x;i++)
cout<<"Ingresar numero: ";
cin>>D[i];

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

24
}
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:

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

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

BIDIMENSIONALES (MATRICES)

Punteros o posiciones de columnas


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

datos
nombre [filas] [columnas]

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.
Sum
1 2 3
a
1 5 8 12 25 1
A 7 13 14 34
2 2
=

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

1. Disear 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) {

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

2. Disear un programa para Guardar en una matriz cuadrada N nmeros enteros, luego
reemplazar sus diagonales principal y secundaria con el nmero 5.
3. Disear un programa para 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;
}
}

}
4. Ingresar nmeros enteros a una matriz cuadrada y ordenar de forma descendente los
elementos de la diagonal principal.

28
5. 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.
6. 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.
7. Construir un programa que permita promediar todos los elementos que forman la letra
L, de una matriz de tamao N x M.
8. Guardar nmeros enteros en una matriz de tamao N*M luego, devolver en un vector
la fila que tiene la mayor suma.
9. 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.
10. 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.
11. 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.
12. 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.
13. Guardar nmeros enteros en una matriz de tamao N * M, luego ordenar de forma
descendente la columna que contiene el menor nmero.
14. 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.
15. 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.
16. Intercambiar los contenidos del menor y el mayor nmero de cada fila de una matriz
de tamao N * M.
17. 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.

Otros ejemplos

1.-
//matriz_ORDENA_COLUMNAS.cpp
# define linea "__________________"
void main()
{ int n,m,c,i,j,r,nvm,mayor,nv=1,k,a[100][100],b[100];
char resp,opc;
system("title Por Cordova Neri Teodoro matriz_ORDENA_COLUMNAS.cpp ");

29
system("color 2F");
//system("title ORDENANDO ELEMENTOS DE LA MATRIZ A POR COLUMNAS EN FORMA
ASCENDENTE ");
clrscr(); system("color 1b");
do
{ gotoxy(42,1);cout<<" CONSULTA Nro "<<nv;
nvm=0; mayor=0;
do{gotoxy(4,2);clreol();system("color 2F");
cout<<"Ingrese # Filas = ";cin>>n;
}while(n<1);
do{gotoxy(4,3);clreol();system("color 2F");
cout<<"Ingrese # Columnas = ";cin>>m;
}while(m<1);
gotoxy(25,5); cout<<"Ingrese elementos a la Matriz";
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{gotoxy(15*i+10,6+j);cout<<"A["<<i<<","<<j<<"] = ";cin>>a[i][j];
}
//copiando en vector
int k=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{k++;
b[k]=a[i][j];
if(b[k]>mayor)
{ mayor=b[k];
nvm=0;
}
if(b[k]==mayor)
{nvm++;
}
}
gotoxy(2,11);cout<<"Matriz:Columnas";
gotoxy(1,12);cout<<linea;
for(i=1;i<=k;i++)
{gotoxy(3,13+i );cout<<"V["<<i<<"] = "<<b[i];
} getche();
// ordenando
int aux;
for(i=1;i<=k-1;i++)
for(j=i+1;j<=k;j++)
if(b[i]>b[j])
{ aux=b[i]; b[i]=b[j]; b[j]=aux;
}
// reporte ordenado
gotoxy(20,11);cout<<"Orden Ascendente ";
gotoxy(20,12);cout<<linea;
for(i=1;i<=k;i++)
{gotoxy(22,13+i );cout<<"V["<<i<<"] = "<<b[i]; }

// Regresando a la Matriz
int t=1;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{a[i][j]=b[t];
t++;
}// reporte ordenado por--------- de la matriz
gotoxy(45,11);cout<<" MATRIZ ORDENADA POR COLUMNAS ";
gotoxy(39,12);cout<<linea;gotoxy(55,12);cout<<linea;
gotoxy(62,12);cout<<linea;

30
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{ gotoxy(28+15*i,13+j ); //cout<<"A["<<i<<","<<j<<"] = "<<a[i][j];
cout<<a[i][j];
}
// MAYOR ELEMENTO
if(nvm!= k){gotoxy(40,20);cout<<"Mayor elemento es = "<<mayor;
gotoxy(40,22);cout<<"numero de apariciones es = "<<nvm;
}
else{gotoxy(40,20);cout<<"No hay numero mayor";
}

do{ gotoxy(20,24);cout<<"SR DESEA CONTINUAR..? <S/N> ==>_ ";cin>>resp;


}while(resp!='N' && resp!='n' && resp!='s' && resp!='S');
clrscr();
}while(resp=='s' || resp=='S');

if(resp =='N')
{for(int t=0;t<40;t++)
{gotoxy(20+t,12);cout<<"-";
gotoxy(20+t,14);cout<<"-";
}

system("color 4a");
for(int j=0;j<100000;j++)
{ gotoxy(30,13);cout<<j<<" Saliendo-->.....";
}
}
}

2.-

//MATR_TOTALES_OK_2012.cpp
void main()
{int a[100][100], n,m,i,j,sumaf=0,sumac=0, tpt[100], tpal[100],cop[200],h=0;
char resp,nomb[100][100]; //ordeno por producto
char cop_nomb[100][100];
system("title Por Cordova Neri, teodoro ");
do{clrscr(); system("color 9A");
gotoxy(10,2); cout<<" ==> CONTROL DE ALMACEN <==";
gotoxy(3,3); cout<<"-------------------------------------------";
gotoxy(5,5);cout<<" Tipos de Productos = "; cin>>n;cprintf("\a");
gotoxy(35,5);cout<<" Cantidad de Almacenes = "; cin>>m; cprintf("\a");
int d=0,p,r,t;
clrscr();
gotoxy(10,4);cout<<" LECTURA DE DATOS ";;
gotoxy(5,5);cout<<" ________________________________";;
system("color 1b");
for(i=1;i<=n;i++)
{ gotoxy(4,6+i); cout<<"Producto["<<i<<"]= ";gets(nomb[i]);
for(j=1;j<=m;j++)
{ gotoxy(3,6+j+i*2);
cout<<"Cantidad["<<i<<","<<j<<"]= "; cin>>a[i][j];
d++;
cop[d]=a[i][j];
h++;
strcpy(cop_nomb[h],nomb[i]);

31
}
clrscr(); system("color 1b");
}
//reporte de la matriz
clrscr(); system("color 1b");
gotoxy(10,1); cout<<" PROCESANDO MATRIZ ALMACENES ";
for(i=1;i<=n;i++)
{for(j=1;j<=m;j++)
{ gotoxy(2+14*j,2+i); cout<<a[i][j];
}
gotoxy(3,2); cout<<"_____________________________________________________";
gotoxy(3,8); cout<<"_____________________________________________________";
}

gotoxy(20,12);cout<<" ALMACEN ";


gotoxy(5,13);cout<<"Tipo Producto Cantidad ";
gotoxy(3,14); cout<<"_____________________________________________________";
gotoxy(3,24); cout<<"_____________________________________________________";
//report de nombre de productos
for(i=1;i<=h;i++)
{gotoxy(7,14+i);cout<<i<<".- "<<cop_nomb[i];
}
//report de tipos por cantidad en cada almacen
for(j=1;j<=d;j++)
{gotoxy(30,14+j); cout<<cop[j];
}
// BUSCOMMAYOR CANTIDAD DE PRODUCTOS
int mayor, pp,q;
mayor=-1;
for(i=1;i<=n;i++)
{for(j=1;j<=m;j++)
{if(a[i][j]>mayor)
{ mayor=a[i][j];
pp=i,
q=j;
}
}
gotoxy(15,7);cout<<"mayor cantidad = "<<mayor<<" posicion(" <<pp<<","<<q<<")";
}
getche();clrscr(); system("color 1b");
// ordenando por nobre forma ascencente
int aux1; char nom[100];
for(i=1;i<=d-1;i++){
{for(j=i+1;j<=d;j++)
if(strcmp(cop_nomb[i],cop_nomb[j])>0)
{ strcpy(nom,cop_nomb[i]); aux1=cop[i];
strcpy(cop_nomb[i],cop_nomb[j]); cop[i]=cop[j];
strcpy(cop_nomb[j],nom); cop[j]=aux1;
}
}
}
int g=d;
gotoxy(10,4);cout<<"Productos Ordenados por Nombre Cantidad ";
gotoxy(5,5);cout<<"--------------------------------------------------------";

for(int l=1;l<=g;l++)
{gotoxy(10,5+l); cout<<l<<setw(15)<<cop_nomb[l]<<setw(25)<<cop[l];
}
getche(); clrscr();
//calculando total por tipos y almacenes
system("color 9A"); int vsf[100];

32
for(i=1;i<=n;i++)
{sumaf=0;
for(j=1;j<=m;j++)
{sumaf=sumaf+a[i][j];
}
vsf[i]=sumaf;
}
gotoxy(3,2);cout<<" >>TOTAL PRODUCTOS POR TIPO<< ";
gotoxy(8,4);cout<<" Nombre Cantidad ";
gotoxy(4,5);cout<<" -------------------------------";
for(i=1;i<=n;i++)
{gotoxy(10,6+i);cout<<nomb[i];
gotoxy(25,6+i);cout<<vsf[i];
}

// PRODUCTOS POR ALMACEN


int TPPAL[100],sumaal;
for(j=1;j<=m;j++)
{sumaal=0;
for(i=1;i<=n;i++)
{sumaal=sumaal+a[i][j];
}
TPPAL[j]=sumaal;
}
gotoxy(40,2);cout<<" >>TOTAL PRODUCTOS POR ALMACEN<< ";
gotoxy(40,4);cout<<" Almacen Cantidad ";
gotoxy(35,5);cout<<" -------------------------------------";

for(i=1;i<=n;i++)
{gotoxy(45,6+i);cout<<"Almacen["<<i<<"] "<<TPPAL[i];
}
// mostrar matriz ordenada forma ascendente
/*
int orde[100],k=0;
//ordenando matriz por filas
for(i=1;i<=n;i++)
{ for(j=1;j<=m;j++)
{ k++;
a[i][j]=cop[k];
}
}
*/
gotoxy(30,25); cout<<" Nuevo aleatorio....?(S/N)==> ";
resp=toupper(getche());cout<<"\a";
} while(resp=='S');

33
TRIDIMENSIONAL
void main ()
{ int Notas[5][30][5], i,j,k,nalum,np,secc,sumap=0,prom_Al[100];
float prom_por_alumns=0.0,prom_por_secc=0.0; clrscr();system("color 1b");
system("title Por Cordova Neri Teodoro matriz_tri_prom.cpp");
gotoxy(10,2);cout<<" SISTEMA ACADEMICO TRIDIMENSIONAL ";
gotoxy(5,3);cout<<linea1;
do{
gotoxy(10,4);clreol();system("color 4a");
cout<<" Ingrese numero de Secciones = ";cin>>secc;
}while(secc<1 || secc>4);
for (i=1;i<=secc;i++)
{ do{
gotoxy(12,5);clreol();system("color 4a");
cout<<" Sr.ingrese # de alumnos de seccion ["<<i<<"]=";cin>>nalum;
}while(nalum<1 || nalum>30);
for(j=1;j<=nalum;j++)
{ do
{ gotoxy(12,6+nalum);clreol();system("color 4a");
cout<<"Ingrese # de Practicas de Alumno["<<j<<"] de seccion["<<i<<"]="; cin>>np;
}while(np<0 || np>5);

for(k=1;k<=np;k++)
{ do{
gotoxy(10,9+k);clreol(); system("color 4a");
cout<<"Practica["<<k<<"] de alumno["<<j<<"]="; cin>>Notas[i][j][k];
}while(Notas[i][j][k]<0 || Notas[i][j][k]>20);
sumap=sumap+Notas[i][j][k];
}// fin for k practicas
gotoxy(10,12+k+2);
cout<<" Promedio de Alumno["<<j<<"]="<<sumap/np<<" de seccion["<<i<<"]";
if(sumap/np>10.0)
{gotoxy(50,17);cout<<", => Aprobado ";
}
else
{gotoxy(50,17);cout<<", ==> Desaprobado ";
}
prom_por_alumns=prom_por_alumns+sumap/np;

sumap=0; getche(); clrscr();system("color 4a");


} //fin de for j alumnos
prom_por_secc=prom_por_alumns/nalum;
gotoxy(10,10);system("color 1b");
cout<<"Promedio de Secccion["<<i<<"]="<<prom_por_secc;
prom_por_alumns=0.0;
prom_por_secc=0.0;
getche(); clrscr();
}// fin de for i secciones
}

34
Procesamiento de Cadenas

Sintaxis: datos [10] [5] [30]

1.-. Disear un programa que permita leer dos


cadenas y luego mostrarlo concatenadas,
considerando el espacio entra cadenas, as como el
total de letras a y e, mostrar tambin estos
caracteres en forma concatenada tal como se
ilustra en la figura adjunta.
1.- lectura de las dos cadebas cad1[] y cad2[].
2.- concatenar las cadenas: cad3[]=cad1[]+cad2[].
3.- contarnumerosvocales( cad1[], cad2[], cad3[]):
Asimismo, cuenta el total de caracteres por tipo
a y tipo e, mostrando finalmente cada
carcter concatenadas y el acumulado por cada
vocal, tal como se ilustra en la sigte fig.

4.- Disponer de las alternativas y ejecuta cada


opcin.

SOLUCION 1// func_cad_concatenar.cpp


int total=0;
char cad1[30],cad2[30],cad3[100];

35
void main()
{
clrscr();
gotoxy(10,3);cout<<" Ingrese cadena # 1 = ";gets(cad1);
gotoxy(10,4);cout<<" Ingrese cadena # 2 = ";gets(cad2);

for(i=0;cad1[i]!='\0';i++){
cad3[j]=cad1[i];
j++;// registra indice final
// copio al final de cade3 un espacio en blanco no '\0' borra resto de cad3
cad3[j]=' ';
}
j++;// para iniciar despues de un espacio cad2 copiando en cad3
// ab mndd
for(i=0;cad2[i]!='\0';i++){
cad3[j]=cad2[i];
j++;//Para actualizar j q inicie la cad2 copiando con espacio en cad2
cad3[j]='\0';// para cerrar cad3
}
gotoxy(10,6);cout<<" Cadenas concatenadas = "<<cad3;
gotoxy(5,7); cout<<"-----------------------------------------------------------------";
getche(); return(cad3);

strcpy(cad5,strcat(cad3,strcat(cad1,cad2))) ;
gotoxy(10,3);cout<<" Cadena concatenada = "<<cad5;
getche();

clrscr();
int conta=0,j,k=0,conte=0,k1=0;
char leA[10],leE[10];
gotoxy(10,2);cout<<" Cadena concatenada = "<<cad3;
gotoxy(5,3); cout<<"-----------------------------------";
for (j=0;j<=strlen(cad3)-1;j++)
{ if ((cad3[j]=='a')||(cad3[j]=='A'))
{ conta++;
leA[k]=cad3[j];
k++;
leA[k]='\0';
}
else
if ((cad3[j]=='e')||(cad3[j]=='E'))
{ conte++;
leE[k1]=cad3[j];
k1++;
leE[k1]='\0';
}
}// FIN DEL FOR
int total=k+k1;
gotoxy(10,5);cout<<" Clasificacion de Vocales " ;
gotoxy(5,6);cout<<" -------------------------------------------" ;
gotoxy(10,8);cout<<" Total de vocales tipo a = "<<conta;
gotoxy(10,9);cout<<" Secuencia de vocales tipo a = "<<leA;
gotoxy(10,11);cout<<" Total de vocales tipo e = "<<conte;
gotoxy(10,12);cout<<" Secuencia de vocales tipo e = "<<leE;
gotoxy(5,14);cout<<" -------------------------------------------" ;
gotoxy(10,16);cout<<" Total de vocales en el texto(a,e) = "<<total; getche();
int op;
do { clrscr(); gotoxy(10,3);cout<<" ==> Menu Principal <== ";
gotoxy(10,4);cout<<"---------------------------------";
gotoxy(10,6);cout<<" [1] Ingrese 2 cadenas " ;
gotoxy(10,7);cout<<" [2] Unir cadenas " ;

36
gotoxy(10,8);cout<<" [3] Contar vocales (a,e) ";
gotoxy(10,9);cout<<" [4] Salir";
gotoxy(10,10);cout<<"---------------------------------";
gotoxy(10,11);cout<<" < Edite opcion > ==> ";cin>>op;
switch(op){
case 1:{ clrscr();
ingresarcadenas();break;}
case 2:{clrscr();
unioncadena(cad1,cad2,cad3);break;}
case 3:{
clrscr();
contarnumerosvocales(cad1,cad2,cad3);break;}
}
} while (op!=4);
}

2. La siguinete grafica ilustra el ingreso de alumnos por Apellidos, nombre, codigo, y edad. luego
sus notas
exp,exf y 3 practicas. se pide genere reportes para conocer:
1.- El promedio por alumno y mustra estado APROBADO / DESAPROBADO
2.- Total de alumnos aprobado , desaprobados.
3.- Alumnos ordenados por Edad en forma Ascendente
4.- Total de alumnos segun edad buscada por el usuario
Reportes
Grafica que ilustra reporte de alumnos, mostrando condicin

Grafica que ilustra reporte de alumnos, ordenados por edad en forma


Ascendente y el total de alumnos segn edad buscada por el usuario:

37

Vous aimerez peut-être aussi