Académique Documents
Professionnel Documents
Culture Documents
ndice
Encargado Pre-edicin: Vctor Manuel Chambi Encargado Difusin y Publicacin Online: Jorge Antonio Linares Vera Colaborador estructura secuencial: Eder Salcedo, Royer Fernandez Colaborador estructura selectiva simple y doble: Alexis Lipe, Diego Canchari Colaborador estructura selectiva mltiple: Manuel Chambi, Edwin Aroapaza Colaborador estructura repetitiva mientras: Luis Charres, Jos Dueas Colaborador estructura repetitiva para: Luis Charres, Eder Orellano Colaborador estructura de datos arreglos, vectores y matrices: Martin Huacho, Fiorela Crdenas
_________________________________________________
Respetar los derechos de Autor y Publicacin, Material Exclusivo para ESISVIRTUAL La comunidad Informtica
http://www.esisvirtual.com
ndice
Agradecimientos
Es difcil dejar de mencionar a las personas que da a da fortalecen el conocimiento y la sabidura de los dems. Me faltaran lneas en este libro para mencionar a todos. Pero mencionare a las personas muy especiales que han ayudado con su sabidura y experiencia plasmar muchas de sus experiencias en esta obra, Ing. Edgar Pilco Apaza e Ing. Luis Ferreyra Len.
http://www.esisvirtual.com
ndice
Problema 01
Enunciado: Un alumno desea saber cul ser su calificacin final en el curso de introduccin a la computacin. Dicha calificacin se compone de los siguientes porcentajes: 40% del promedio de sus tres trabajos prcticos 25% de la calificacin del examen terico 35% de la calificacin del examen prctico
Datos de entrada:
http://www.esisvirtual.com
ndice
Procedimiento: 40% del promedio de sus tres trabajos prcticos (40*P3) 25% de la calificacin del examen terico (25*ET) 35% de la calificacin del examen prctico (35*EP) Calificacin final (CF) CF = (40*P3 + 25*ET + 35*EP)/100
Diagrama de flujo:
INICIO
Leer P3,ET,EP
Escribir CF
http://www.esisvirtual.com
ndice
FIN
Cdigo: # include"iostream.h" # include"conio.h" void main () { int P3,ET,EP,CF; clrscr (); cout<< " Promedio de sus tres Trabajos Practicos "; cin>> P3; cout<< " Calificacion del Examen Teorico "; cin>> ET; cout<< " Calificacion del Examen Practico "; cin>> EP; CF=(40*P3+25*ET+35*EP)/100; cout<< " La Calificacion final es: "<< CF; getch (); }
Problema 02
Enunciado:
http://www.esisvirtual.com
ndice
http://www.esisvirtual.com
ndice
Diagrama de flujo:
INICIO
Leer H,M
S=H+M;
PH=H*100/S;
PM=M*100/S;
Escribir PH,PM
FIN
http://www.esisvirtual.com
ndice
Cdigo: #include"iostream.h" #include"conio.h" void main () { int H,M,S,PH,PM; clrscr (); cout<< " Numero de hombres "; cin>> H; cout<< " Numero de mujeres "; cin>> M; S=H+M; PH=H*100/S; PM=M*100/S; cout<< " El porcentaje de hombres es: "<<PH<<endl; cout<< " El porcentaje de mujeres es: "<<PM<<endl;
getch ();
http://www.esisvirtual.com
ndice
Problema 03
Procedimiento: EA = AA AN
AN
AA
EA
http://www.esisvirtual.com
ndice
Leer AA,EA
AN=AA-EA
Escribir AN
FIN
Cdigo: #include"iostream.h" #include"conio.h" void main () { int AA,EA,AN; clrscr (); cout<< " AO ACTUAL "; cin>> AA; cout<< " EDAD ACTUAL ";
10
http://www.esisvirtual.com
ndice
Problema 04
Enunciado: Calcular el salario de un obrero si obtuvo un incremento del 25% sobre su salario anterior.
Procedimiento: El obrero quiere un aumento del 25% de su sueldo, ms, es decir: SA= Salario anterior
SO= SA + *SA
SO= SA + 0.25*SA
11
http://www.esisvirtual.com
ndice
Diagrama de flujo:
INICIO
Leer SA
SO=SA+0.25*SA;
Escribir SO
FIN
Cdigo: #include"iostream.h" #include"conio.h" void main () { int SA,SO; clrscr (); cout<< " SALARIO ANTERIOR "; cin>> SA; SO=SA+0.25*SA; cout<< " EL SALARIO ACTUAL DEL OBRERO ES: "<< SO;
12
http://www.esisvirtual.com
ndice
Problema 05
Enunciado: En la Facultad se desea calcular el presupuesto anual que recibir cada escuela si la reparticin es: 30% para la escuela de Qumica 10% para la escuela de Fsica 35% para la escuela de Computacin 25% para la escuela de Biologa
Datos de salida: PAQ= el presupuesto anual para la escuela de qumica PAF= el presupuesto anual para la escuela de fsica PAC= el presupuesto anual para la escuela de computacin PAB= el presupuesto anual para la escuela de biologa es:
13
http://www.esisvirtual.com
ndice
Para la escuela de Computacin 35% del presupuesto PAC=PT*35/100 Para la escuela de Biologa 25% del presupuesto PAB=PT*25/100;
Diagrama de flujo:
INICIO
Leer PT
FIN
14
http://www.esisvirtual.com
ndice
Codigo: #include"iostream.h" #include"conio.h" void main () { int PT,PAQ,PAF,PAC,PAB; clrscr (); cout<< " PRESUPUESTO TOTAL "; cin>> PT; PAQ=PT*30/100; PAF=PT*10/100; PAC=PT*35/100; PAB=PT*25/100; cout<< " EL PRESUPUESTO ANUAL PARA LA ESCUELA DE QUIMICA ES: "<< PAQ<<endl; cout<< " EL PRESUPUESTO ANUAL PARA LA ESCUELA DE FISICA ES: "<< PAF<<endl; cout<< " EL PRESUPUESTO ANUAL PARA LA ESCUELA DE COMPUTACION ES: "<< PAC<<endl; cout<< " EL PRESUPUESTO ANUAL PARA LA ESCUELA DE BIOLOGIA ES: "<< PAB<<endl; getch (); }
15
http://www.esisvirtual.com
ndice
Problema 06
Enunciado: Disee un programa que lea dos nmeros (el segundo de dos cifras) y visualice primero la multiplicacin del primer nmero con el segundo. La visualizacin debe realizarse como si se efectuara la multiplicacin en forma manual.
16
http://www.esisvirtual.com
ndice
Datos de salida: M1= el resultado de N1*B M2= el resultado de N1*A M = el resultado de N1*N2
Procedimiento: Primero determinaremos los dos nmeros de la multiplicacin, sin embargo nos aseguraremos de que el segundo nmero sea de dos cifras (AB) N2= el segundo numero de dos cifras AB Damos valores a las cifras del segundo nmero a la unidad B y a la decena A: B=N2%10 y A=N2/10.
Si nos fijamos bien en la operacin; especficamente en el segundo nmero que debera ser solo de dos cifras, es decir este no debera ser de una; ni ms de dos cifras, adems no se especifica que este nmero deba ser positivo o negativo, as que N2 podra ser mayor o igual a cero; esto a modo de descubrir si este es positivo o negativo acondicionaremos If (N2>=0)
De ser verdadero: Comprobaremos si N2 es mayor o igual a 10 (N2>=10) para descubrir si est comprendido por una sola cifra positiva, de serlo saldremos de la codificacin y escribiremos:" EL SEGUNDO NUMERO NO TIENE DOS CIFRAS", de lo contrario seguiremos hallando la decena de N2 (A=N2/10) y la unidad de N2 (B=N2%10). Luego para comprobar si es un nmero mayor de 2 cifras nos fijaremos en A, si A es menor que 10 (A<10) significa que N2 ser menor que 100 (99, 98, 97, 96), por ejemplo: Si A=100/10=10, A SERA SIEMPRE MAYOR O IGUAL QUE 10 Y N2 TENDRA MAS DE 2 CIFRAS En cambio Si A=99/10=9.9, A SERA SIEMPRE MENOR QUE 10 Y N2 TENDRA DOS CIFRAS De ser A menor que 10, continuaremos la codificacin hallando M1 (M1=N1*B), M2 (M2=N1*A) y M (M=N1*N2), de lo contrario saldremos de ella escribiendo:" EL SEGUNDO NUMERO NO TIENE DOS CIFRAS ", 17 http://www.esisvirtual.com
ndice
De ser falso: Colocaremos la condicin If (N2<= -10) para descubrir si N2 est comprendido por una sola cifra negativa, de serlo saldremos de la codificacin y escribiremos:" EL SEGUNDO NUMERO NO TIENE DOS CIFRAS ",de lo contrario seguiremos hallando A (A=N2/10) y B (B=N2%10). Luego para comprobar si es un nmero mayor de 2 cifras nos fijaremos en A, si A es mayor que -10, (A>-10), significa que este tomara los de -9,-8,-7,-6,; ya que si lo fuera N2 ser mayor que -100 (-99,-98,-97,), por ejemplo: Si A= -100/10= -10, A SERA SIEMPRE MENOR O IGUAL QUE -10 Y N2 TENDRA MAS DE 2 CIFRAS En cambio Si A= -99/10= -9.9, A SERA SIEMPRE MAYOR QUE -10 Y N2 TENDRA DOS CIFRAS Continuaremos la codificacin hallando M1 (M1=N1*B), M2 (M2=N1*A) y M (M=N1*N2), de lo contrario saldremos de ella escribiendo:" EL SEGUNDO NUMERO NO TIENE DOS CIFRAS". Ahora para mostrar el segundo paso de una multiplicacin manual multiplicaremos el primer nmero por la unidad del segundo nmero (B) y debajo de este; debe estar sumado a la multiplicacin del primer nmero por la decena del segundo nmero(A), esta ultima multiplicacin debe correr un espacio a la izquierda para recin ser sumada, como se hace en una multiplicacin normal y para el resultado final (M) multiplicaremos el primero por el segundo nmero.
N1* N2 M1 + M2
18
http://www.esisvirtual.com
ndice
M = El resultado de N1*N2
Diagrama de flujo:
INICIO
Leer N1,N2
If (N2>=0) V
F
If (N2<= -10) Escribir " EL SEGUNDO NUMERO NO TIENE DOS CIFRAS ";
If (N2>=10)
F A=N2/10;
Escribir " EL SEGUNDO NUMERO NO TIENE DOS CIFRAS ";
A=N2/10; B=N2%10;
B=N2%10; V F
If (A<10)
If (A>-10)
M1=N1*B ; M2=N1*A;
M1=N1*B;
M2=N1*A;
M=N1*N2;
M=N1*N2;
Escribir M1,M2,M
19
http://www.esisvirtual.com
ndice
Cdigo: #include"iostream.h" #include"conio.h" void main () { int A,B,N1,N2,M1,M2,M; clrscr (); cout<< "MULTIPLICACION"; cout<< "\n==============\n"; cout<< " EL PRIMER NUMERO ES: cin>> N1; cout<< " EL SEGUNDO NUMERO ES: AB "; cin>> N2; if (N2>=0) { if (N2>=10) { A=N2/10; B=N2%10; if (A<10) { M1=N1*B; ";
20
http://www.esisvirtual.com
ndice
cout<< " EL RESULTADO DE N1*B ES: "<< M1;cout<<"+"<<endl; cout<< " EL RESULTADO DE N1*A ES: "<< M2<<endl; cout<< " EL RESULTADO DE N1*N2 ES: "<< M<<endl; } else { cout<< " EL SEGUNDO NUMERO NO TIENE DOS CIFRAS "; } } else { cout<< " EL SEGUNDO NUMERO NO TIENE DOS CIFRAS "; } } else { if (N2<=-10) { A=N2/10; B=N2%10; if (A>-10) {
21
http://www.esisvirtual.com
ndice
M=N1*N2; cout<< " EL RESULTADO DE N1*B ES: "<< M1;cout<<"+"<<endl; cout<< " EL RESULTADO DE N1*A ES: "<< M2<<endl; cout<< " EL RESULTADO DE N1*N2 ES: "<< M<<endl; } else { cout<< " EL SEGUNDO NUMERO NO TIENE DOS CIFRAS "; } } else { cout<< " EL SEGUNDO NUMERO NO TIENE DOS CIFRAS "; } } getch (); }
Problema 07
Enunciado:
22
http://www.esisvirtual.com
ndice
Datos de entrada: I1= Inversin de la primera persona I2= Inversin de la segunda persona I3= Inversin de la tercera persona
Datos de salida: PI1= El porcentaje de inversin de la primera persona PI2= El porcentaje de inversin de la segunda persona PI3= El porcentaje de inversin de la tercera persona
Procedimiento: Antes de determinar los porcentajes de cada dinero invertido, nos aseguraremos de que estos sean distintos uno del otro: Si la primera inversin es igual a la segunda o si la primera fuera igual a la tercera o la segunda fuera igual a la tercera: Si (I1==I2||I1==I3||I2==I3). Al hacer esto solo determinaramos que estas tres inversiones son iguales, sin embargo al pasarlas como falsas estas se convierten en distintas, a continuacin solo determinamos los porcentajes de cada dinero invertido:
23
http://www.esisvirtual.com
ndice
Diagrama de flujo:
INICIO
If (I1==I2||I1==I3||I2==I3)
FIN
24
http://www.esisvirtual.com
ndice
Codigo:
# include "conio.h" # include "iostream.h" void main () { int I1,I2,I3,S,PI1,PI2,PI3; clrscr (); cout<<" INVERSION DE LA PRIMERA PERSONA "; cin>>I1; cout<<" INVERSION DE LA SEGUNDA PERSONA "; cin>>I2; cout<<" INVERSION DE LA TERCERA PERSONA "; cin>>I3; if (I1==I2||I1==I3||I2==I3) { cout<< " ERROR : LAS INVERSIONES DEBEN SER DISTINTAS " ; } else { S= I1+I2+I3;
25
http://www.esisvirtual.com
ndice
cout<< " El porcentaje de inversion de la primera persona es: "<< PI1<<endl; cout<< " El porcentaje de inversion de la segunda persona es: "<< PI2<<endl; cout<< " El porcentaje de inversion de la tercera persona es: "<< PI3<<endl;
getch ();
Problema 08
Enunciado: El dueo de una computadora desea venderla. Obtener el precio en que lo debe vender para obtener una ganancia del 25%.
Datos de salida:
26
http://www.esisvirtual.com
ndice
Procedimiento: El dueo de una computadora quiere una ganancia del 25% de ella para venta, es decir ms del precio que la compr: PC= Precio de compra
PV= PC + *PC
PV= PC + 0.25*PC
Diagrama de flujo:
INICIO
Leer PC
PV=PC+0.25*PC
Escribir PV
FIN
27
http://www.esisvirtual.com
ndice
Cdigo: #include"iostream.h" #include"conio.h" void main () { int PC,PV; clrscr (); cout<< " PRECIO DE COMPRA "; cin>> PC;
PV=PC+0.25*PC;
28
http://www.esisvirtual.com
ndice
Problema 09
Enunciado: En las elecciones presidenciales 2001, cada uno de los tres primeros candidatos Alejandro Toledo, Lourdes Flores y Alan Garca prometen crear una cantidad de fuentes de trabajo distribuidos en las siguientes reas:
ALAN GARCIA Agricultura (40%) Comercio (35%) Industria (25%) Calcular el nmero de fuentes de trabajo en cada rea segn el candidato
29
http://www.esisvirtual.com
ndice
Datos de entrada: AT= Cantidad de fuentes de trabajo en el gobierno de Alejandro Toledo LF = Cantidad de fuentes de trabajo en el gobierno de Lourdes flores AG= Cantidad de fuentes de trabajo en el gobierno de Alan Garca
Datos de salida: ATA =trabajos en gobierno de Alejandro Toledo en el rea de Agricultura ATC =trabajos en gobierno de Alejandro Toledo en el rea de Comercio ATI =trabajos en gobierno de Alejandro Toledo en el rea de Industria LFA =trabajos en gobierno de Lourdes Flores en el rea de Agricultura LFC =trabajos en gobierno de Lourdes Flores en el rea de Comercio LFI =trabajos en gobierno de Lourdes Flores en el rea de Industria AGA =trabajos en gobierno de Alan Garca en el rea de Agricultura AGC =trabajos en gobierno de Alan Garca en el rea de Comercio AGI =trabajos en gobierno de Alan Garca en el rea de Industria
Procedimiento: Primero ingresaremos el nmero de fuentes de trabajo que promete cada candidato y segundo calcularemos los datos de salida que son las fuentes de trabajo en las respectivas tres reas de cada candidato: 1 Ingresar:
30
http://www.esisvirtual.com
ndice
2 Trabajos en gobierno de Alejandro Toledo en el rea de Agricultura es el 20% de la cantidad de fuentes de trabajo en el gobierno de Alejandro Toledo: ATA= 2*AT/10
Trabajos en gobierno de Alejandro Toledo en el rea de Comercio es el 40% de la cantidad de fuentes de trabajo en el gobierno de Alejandro Toledo: ATC= AT*4/10
Trabajos en gobierno de Alejandro Toledo en el rea de Industria es el 40% de la cantidad de fuentes de trabajo en el gobierno de Alejandro Toledo: ATI= 4*AT/10
Trabajos en gobierno de Lourdes Flores en el rea de Agricultura es el 10% de la cantidad de fuentes de trabajo en el gobierno de Lourdes flores: LFA= LF/10
Trabajos en gobierno de Lourdes Flores en el rea de Comercio es el 20% de la cantidad de fuentes de trabajo en el gobierno de Lourdes flores: LFC= 2*LF/10
Trabajos en gobierno de Lourdes Flores en el rea de Industria es el 70% de la cantidad de fuentes de trabajo en el gobierno de Lourdes flores: LFI= 7*LF/10
Trabajos en gobierno de Alan Garca en el rea de Agricultura es el 40% de la cantidad de fuentes de trabajo en el gobierno de Alan Garca: AGA= 4*AG/10
Trabajos en gobierno de Alan Garca en el rea de Comercio es el 35% de la cantidad de fuentes de trabajo en el gobierno de Alan Garca: AGC= 35*AG/100
31
http://www.esisvirtual.com
ndice
Trabajos en gobierno de Alan Garca en el rea de Industria es el 25% de la cantidad de fuentes de trabajo en el gobierno de Alan Garca: AGI= 25*AG/100;
Diagrama de flujo:
INICIO
Leer AT,LF,AG
ATA= 2*AT/10; ATC= AT*4/10; ATI= 4*AT/10; LFA= LF/10; LFC= 2*LF/10; LFI= 7*LF/10; AGA= 4*AG/10; Escribir ATA, ATC, ATI, LFA, LFC, LFI, AGA, AGC, AGI AGC= 35*AG/100; AGI= 25*AG/100;
FIN
32
http://www.esisvirtual.com
ndice
cin>>AT; cout<< " CANTIDAD DE FUENTES DE TRABAJO EN EL GOBIERNO DE LOURDES FLORES "; cin>>LF; cout<< " CANTIDAD DE FUENTES DE TRABAJO EN EL GOBIERNO DE ALAN GARCIA "; cin>>AG; ATA= 2*AT/10; ATC= AT*4/10; ATI= 4*AT/10; LFA= LF/10; LFC= 2*LF/10; LFI= 7*LF/10; AGA= 4*AG/10; AGC= 35*AG/100; AGI= 25*AG/100; cout<< " trabajos en gobierno de Alejandro Toledo en el rea de Agricultura" cout <<ATA<<endl; cout<< " trabajos en gobierno de Alejandro Toledo en el rea de Comercio" cout <<ATC<<endl; cout<< " trabajos en gobierno de Alejandro Toledo en el rea de Industria " cout<<ATI<<endl<<endl; cout<< " trabajos en gobierno de Lourdes Flores en el rea de Agricultura"
33
http://www.esisvirtual.com
ndice
cout<< " trabajos en gobierno de Lourdes Flores en el rea de Industria" cout <<LFI<<endl<<endl; cout<< " trabajos en gobierno de Alan Garca en el rea de Agricultura " cout <<AGA<<endl; cout<< " trabajos en gobierno de Alan Garca en el rea de Comercio " cout<<AGC<<endl; cout<< " trabajos en gobierno de Alan Garca en el rea de Industria " cout<<AGI<<endl; getch (); }
Problema 10
Enunciado: Un alumno de computacin Matemtica del Primer Ao desea saber cual ser su promedio general al final del ao en las tres materias ms difciles. Estas tres materias se evalan como se muestra: La calificacin de Matemtica: Examen terico (70%) Promedio de 2 practicas calificadas (30%) La calificacin de Algebra: Examen terico (80%)
34
http://www.esisvirtual.com
ndice
Examen terico (40%) Examen prctico (40%) Promedio de 2 trabajos prcticos (20%)
Despus de ingresar los datos, el formato de visualizacin de los resultados deber ser
RESUMEN DE NOTAS ============================================================== MATEMATICAS: EXAMEN TEORICO PROMEDIO DE PRACTICAS CALIFICADAS (nota) (nota)
35
http://www.esisvirtual.com
ndice
(nota)
==============================================================
IET= Examen terico IEP= Examen practico I2P= Promedio de 2 practicas calificadas
36
http://www.esisvirtual.com
ndice
Procedimiento: Para la visualizacin de las lneas de este formato utilizaremos una codificacin especial para este programa: cout<< " \n\n= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =\n\n"; \n: Permite saltar el cursor a la lnea siguiente para seguir escribiendo los datos \n\n: Al ser dos, permite saltar dos lneas mas abajo para seguir escribiendo los datos Posteriormente ingresamos los datos de cada curso: exmenes y promedios de prcticas, en estos multiplicaremos sus notas con sus respectivos porcentajes que son considerados a la hora de calcular los promedios de cada curso.
Diagrama de flujo:
INICIO
MPC= (MET+M2P)/2 APC= (AET+A3P)/2 IPC= (IET+IEP+I2P)/3 P3C= (MPC+APC+IPC)/3 Escribir MPC, APC, IPC, P3C
37
http://www.esisvirtual.com
ndice
FIN
clrscr (); cout<< " RESUMEN DE NOTAS:\n\n "; cout<< "============================================= \n\n "; cout<< " MATEMATICAS:\n\n "; cout<< " cin>> MET; cout<< " cin>> M2P; cout<< " --------------------------------------- \n\n "; PROMEDIO DE 2 PRACTICAS CALIFICADAS "; EXAMEN TEORICO ";
MPC= (70*MET) /100+(30*M2P)/100; cout<< " PROMEDIO DEL CURSO "<< MPC;
38
http://www.esisvirtual.com
ndice
APC= (80*AET)/100+ (20*A3P)/100; cout<< " PROMEDIO DEL CURSO "<< APC;
cout<< " \n\n =============================================\n\n"; cout<< " INTRODUCION A LA COMPUTACION :\n\n "; cout<< " cin>> IET; cout<< " cin>> IEP; cout<< " cin>> I2P; cout<< " --------------------------------------- \n\n "; PROMEDIO DE 2 PRACTICAS CALIFICADAS " ; EXAMEN PRACTICO "; EXAMEN TEORICO ";
IPC= (40*IET)/100+ (40*IEP)/100+ (20*I2P)/100; cout<< " PROMEDIO DEL CURSO "<< IPC;
P3C= (MPC+APC+IPC)/3;
cout<< "\n\n ============================================= \n\n "; cout<< " PROMEDIO DE LOS TRES CURSOS MAS DIFICILES "<<P3C; cout<< "\n\n ============================================= \n\n ";
39
http://www.esisvirtual.com
ndice
Problema 11
Diagrama de flujo:
INICIO
Leer a,b,c
F
if a>b
if
if
b>c
Escribir c Escribir b escribir c
a>c
Escribir a
40
http://www.esisvirtual.com
FIN
ndice
Codigo:
#include <iostream.h> #include <conio.h> void main(void) {int a,b,c; clrscr (); cout<<" El primer numero es: "; cin>> a; cout<<" El segundo numero es: "; cin >> b; cout<<" EL tercer numero es: "; cin >> c; if (a>b) { if (a>c) cout<<" el numero mayor es: "<<a; else cout<<" el numero mayor es: <<c; } else {
41
http://www.esisvirtual.com
ndice
Problema 12
Enunciado: En una tienda de accesortios para PCs , se hace un descuento por la compra de CDs de acuerdo a la sgte tabla: Marca - 3M - NCR - Sentinel - Golstar Calcular el total a pagar por la compra. Datos de entrada: c = costo de cada cd k = cantidad de cds m = marca Datos de salida: t = total a pagar por la compra Descuento 10% 15% 20% 30%
42
http://www.esisvirtual.com
ndice
Diagrama de flujo:
INICIO
Leer c,k,m
p = c*k
F F
if m==n
if V m==3
V
t=p-(0.1*p)
F
if m==s
t=p-(0.15*p)
if m==g
V
t=p-(0.3*p)
t=p-(0.2*p)
Escribir t
FIN
Cdigo:
43
http://www.esisvirtual.com
ndice
void main(void) { int c,k,p,t; char m; clrscr (); cout<<" ingrese el costo de cada cd: "; cin>> c; cout<<" ingrese la cantidad de cd's: "; cin>> k; cout<<" INGRESE LA MARCA DE CD`s "<<endl; cout<<" 3M(3) NCR(n) Sentinel(s) Golstar(g) : "; cin >> m; p=c*k; if (m==3) t=p-(0.1*p); else { if (m=='n') t=p-(0.15*p); else { if (m=='s')
44
http://www.esisvirtual.com
ndice
if(m=='g') t=c-c*30/100; else cout<<"no es la marca en promocion"; } } } cout<< "el total a pagar por la compra sera: " << t; getch (); }
Problema 13
Enunciado: En un juego de preguntas a la que se responde si o no gana quien responda correctamente las 3 preguntas. Si responde mal cualquiera de ellas ya no se pregunta la siguiente y termina el juego. Las preguntas son: a. Colon descubri Amrica? b. El aniversario de Tacna es el 28 de agosto? c. Tacna es la Ciudad blanca?
Datos de entrada:
45
http://www.esisvirtual.com
ndice
INICIO
Escribir:Colon descubrio
America Leer r1
F
if r1==s
V
if r2==s
46
http://www.esisvirtual.com
FIN
ndice
Cdigo: #include <iostream.h> #include <conio.h> void main(void) { char r1,r2,r3; clrscr( ); cout<<"JUEGO DE PREGUNTAS (S/N)"<<endl; cout<<endl; cout<<"Colon descubrio America?"<<endl; cin>>r1; if(r1=='s'||r1=='S') { cout<<"El aniversario de Tacna es el 28 de agosto?"<<endl; cin>>r2; if(r2=='s'||r2=='S') { cout<<"Tacna es la ciudad blanca?"<<endl; cin>>r3; if(r3=='n'||r3=='N') cout<<"Usted Gano el Juego";
47
http://www.esisvirtual.com
ndice
Problema 14
Enunciado: A un programa se ingresan los nombres y goles de 3 equipos, determinar el equipo campen de acuerdo al mayor nmero de goles.
Datos de entrada: e1, e2, e3: nombres de los tres equipos (1,2,3 respectivamente) g1, g2, g3: goles de cada equipo (1,2,3 respectivamente)
48
http://www.esisvirtual.com
ndice
Diagrama de flujo:
INICIO
Leer e1,g1
Leer e2,g2
Leer e3,g3
F if g1>g2 F if g2>g3 V F
if g1>g3
Escribir e3,g3
Escribir e2,g2
Escribir e3,g3
Escribir e1,g1
49
http://www.esisvirtual.com FIN
ndice
void main( ) { int g1,g2,g3; char e1[30],e2[30],e3[30]; clrscr( ); cout<<"nombre del primer equipo:"<<endl; cin>>e1; cout<<"ingrese la cantidad de goles anotados: "; cin>>g1; cout<<endl; cout<<"nombre del segundo equipo:"<<endl; cin>>e2; cout<<"ingrese la cantidad de goles anotados: "; cin>>g2; cout<<endl; cout<<"nombre del tercer equipo:"<<endl; cin>>e3;
50
http://www.esisvirtual.com
ndice
if(g1>g2) { if(g1>g3) cout<<"GANO el equipo "<<e1<<" con "<<g1<<" goles"; else cout<<"GANO el equipo "<<e3<<" con "<<g3<<" goles"; } else { if(g2>g3) cout<<"GANO el equipo "<<e2<<" con "<<g2<<" goles"; else cout<<"GANO el equipo "<<e3<<" con "<<g3<<" goles"; } getch( ); }
Problema 15
Enunciado:
51
http://www.esisvirtual.com
ndice
Diagrama de flujo:
Inicio
Leer n,p
F d=p-0.5*p
If
N>=60
V d=p-0.3*p
Escribir
Escribir d
Pf=p-d
Escribir pf Fin
52
http://www.esisvirtual.com
ndice
Codigo: # include <conio.h> # include <iostream.h> void main (void) {int n,p,pf,d; clrscr(); cout<<"DESCUENTO POR SUERTE"<<endl<<endl; cout<<"====================\n\n"; cout<<"INGRESE EL NUMERO SUERTE : "; cin>>n; cout<<"PRECIO A GASTAR ES : "; cin>>p; {if(n>=60) {d=p*5/10;} else {d=p*3/10;} } pf=p-d; cout<<"EL PRECIO A FINAL A PAGAR ES : "<<pf<<endl ; getch();
53
http://www.esisvirtual.com
ndice
Problema 16
Enunciado: Determinar el salario bruto y neto mensual de un trabajador considerando que si se trabaja ms de 40 horas, el exceso ser considerado como horas extras cuya tarifa normal. Adems, el trabajador se somete a un impuesto del 10% si su salario bruto sobrepasa los S/. 250.00.
54
http://www.esisvirtual.com
ndice
Diagrama de flujo:
Inicio
Leer nh,s
If
nh<40
V he=nh-40
sb=s+3/2*he*(s/40)
s=sb
F s=sn
If
sb>250
V sn=sb-0.1*sb
Escribir sn,sb
Fin
Codigo:
55
http://www.esisvirtual.com
ndice
clrscr(); cout<<"SALARIO MENSUAL"<<endl<<endl; cout<<"=========================\n\n"; cout<<"INGRESE EL SALARIO NORMAL : "; cin>>s; cout<<"INGRESE CANTIDAD DE HORAS TRABAJADAS : "; cin>>h; { if(h>40) {sb=s+s*5/10;} else {sb=s;} { if(sb>250) {sn=sb-sb*1/10;} else {sn=sb;} } cout<<"el salario bruto es : "<<sb<<endl ; cout<<"el nuevo salario es : "<<sn<<endl ; } getch();
56
http://www.esisvirtual.com
ndice
Problema 17
Enunciado: El gobierno peruano desea reforestar un bosque que mide un determinado nmero de hectreas. Si la superficie excede a milln de metros cuadrados, entonces decidir sembrar de la siguiente manera: Porcentaje de superficie del bosque 60% 20% 20% Tipo de rbol Pino Oyamel Cedro
Si la superficie es menor o igual a 1 milln de metros cuadrados, entonces decidir sembrar de la siguiente manera: Porcentaje de superficie del bosque 50% 20% 30% Tipo de rbol Pino Oyamel Cedro
El gobierno desea saber el nmero de pinos, oyameles y cedros que tendr que sembrar en el bosque, si sabe que en 10 metros cuadrados se puede reforestar 8 pinos, en 15 metros cuadrados se puede reforestar 15 oyameles y en 18 metros cuadrados se puede reforestar 10 cedros. Tambin se sabe que una hectrea equivale a 10 mil metros cuadrados.
57
http://www.esisvirtual.com
ndice
Datos de salida: np :cantidad de arboles de pino no : cantidad de arboles de oyameles nc : cantidad de arboles de cedro
Diagrama de flujo:
Inicio
Leer nh
V
p=nh*6/10 o=nh*2/10 c=nh*2/10
If
nh>100000 0
F
p=nh*5/10 o=nh*2/10 c=nh*3/10
Escribir np,no,nc
Fin
58
http://www.esisvirtual.com
ndice
Cdigo: # include <conio.h> # include <iostream.h> void main (void) {float a,ap,nh,nc,no,np,p,o,c; clrscr(); cout<<"REFORESTACION DE ARBOLES"<<endl<<endl; cout<<"========================\n\n"; cout<<"INGRESE NUMERO DE AREAS A REFORESTAR : "; cin>>nh; {if(nh>1000000) {p=a*6/10; o=a*2/10 ; c=a*2/10;} else {p=a*5/10; o=a*2/10 ; c=a*3/10;} } np=8*p/10;
59
http://www.esisvirtual.com
ndice
Problema 18
Datos de entrada: a:primer numero b:segundo numero c:tercer numero d:cuarto numero
60
http://www.esisvirtual.com
ndice
Diagrama de flujo:
If a<b
If a<c
If b<c
If a<d
If c<d
If b<d
If c<d
Escribir a
Escribir d
Escribir c
Escribir d
Escribir b
Escribir d
Escribir c
Escribir d
Fin
61
http://www.esisvirtual.com
ndice
cout<<"EL MENOR DE CUATRO NUMEROS "<<endl<<endl; cout<<"========================\n\n"; cout<<" Ingrese primer numero : "; cin>>a; cout<<" Ingrese segundo numero : "; cin>>b; cout<<" Ingrese tercer numero : "; cin>>c; cout<<" Ingrese cuarto numero : "; cin>>d; if (a<b) {if (a<c) {if (a<d) {cout<<"el menor numero es : "<<a;} else {cout<<"el menor numero es : "<<d;} } else {if(c<d) {cout<<"el menor numero es : "<<c;}
62
http://www.esisvirtual.com
ndice
{ if (b<c) { if (b<d) {cout<<"el menor numero es : "<<b;} else {cout<<"el menor numero es : "<<d;} } else {if(c<d) {cout<<"el menor numero es : "<<c;} else {cout<<"el menor numero es : "<<d;} } } getch(); }
63
http://www.esisvirtual.com
ndice
Problema 19
Enunciado: En una tienda de accesorios para computadoras se hace un descuento por la compra realizada: (a)Pentium I 50% de descuento (b)Pentium II 25% de descuento (c)Pentium III 10% de descuento (d)Pentium IV 10% de descuento Disear el diagrama de flujo y programa que calcule el precio neto a pagar por la compra.
64
http://www.esisvirtual.com
ndice
Diagrama de flujo:
INICIO
Leer c,p
case 1
case 2
case 3,4
deffault
pn=c-(0.5*c)
pn=c-(0.25*c)
pn=c-(0.1*c)
pn=c
Escribir: pn
FIN
65
http://www.esisvirtual.com
ndice
clrscr( ); cout<<"ingrese el monto real de los accesorios: "; cin>>c; cout<<"ingrese el pentium de la pc: "; cin>>p; switch(p) { case 1: pn=c-(0.5*c); break; case 2: pn=c-(0.25*c); break; case 3: pn=c-(0.1*c); break; case 4: pn=c-(0.1*c); break; default: cout<<"la pentium ingresada no esta en promocion por lo tanto"<<endl; pn=c ; break; } cout<<"el precio neto a pagar por los accesorios es: ";
66
http://www.esisvirtual.com
ndice
Problema 19
Enunciado: El PRONAA implementado un programa social para repartir un subsidio bajo las siguientes Especificaciones: -Si la familia tiene hasta 3 hijos, recibirn S/.30.00 por cada hijo. -Si la familia tiene mas de tres hijos recibirn s/.100.00 -Si la madre de familia es divorciada, recibirn S/.25.00 adicionales. Calcular el monto que recibir una familia.
67
http://www.esisvirtual.com
ndice
Diagrama de flujo:
case si
case no
F
if h>3
F
if h>3
m=(h*30)+25
m=125
m=h*30
m=100
Escribir m FIN
Codigo:
68
http://www.esisvirtual.com
ndice
char d; clrscr( ); cout<<"ingrese el numero de hijos: "; cin>>h; cout<<"es divorsiada o no?(escribir "si" o "no"): "; cin>>d; switch(d) { case'si':if(h>3) m=125; else m=(h*30)+25; break; case'no':if(h>3) m=100; else m=h*30; break; } cout<<"el monto que recibira la madre es de: "; cout<<m;
69
http://www.esisvirtual.com
ndice
Problema 20
Enunciado: Calcular la utilidad que recibir un trabajador respecto a las bonificaciones anuales que se asignan al final del Ao. Esta utilidad esta en base a su servicio: Tiempo Menos de 1 ao 1 ao o ms o menos 3 aos 3 aos o ms o menos de 7 aos 7 aos o ms o menos de 10 aos 10 aos a ms aos Utilidad 15% del salario 20% del salario 25% del salario 30% del salario 45% del salario
70
http://www.esisvirtual.com
ndice
Diagrama de flujo:
case a
case b
case c
case d
case e
default
u=0.15*s
u=0.2*s
u=0.25*s
u=0.3*s
u=0.45*s
Escribir:
Escribir u
FIN
Cdigo: #include <conio.h> #include <iostream.h> void main(void) { int s,u; char t;
71
http://www.esisvirtual.com
ndice
cout<<"ingrese los aos de servicio: "<<endl; cout<<"a:menor de 1 anio b:de 1 a menos de 3 anios c:de 3 a menos de 7 anios"<<endl; cout<<"d:de 7 a menos de 10 anios e:de 10 anios a mas"<<endl; cin>>t; switch(t) { case'a': u=0.15*s; break; case'b': u=0.2*s; break; case'c': u=0.25*s; break; case'd': u=0.3*s; break; case'e': u=0.45*s; break; default: cout<<" "; break; } cout<<"la utilida es:"; cout<<u;
72
http://www.esisvirtual.com
ndice
Problema 21
Enunciado: En una tienda comercial se efecta una promocin sobre el valor de la compra tota, segn el color de bolita que saque el cliente; si la bolita es de color rojo se har un descuento del 35%, si la bolita es de color verde se har un descuento del 15%, si la bolita es de color amarillo se ha r un descuento del 25%, si la bolita es de color negro se har un descuento del 80%, la bolita es de color blanco se har un descuento del 100%. Se sabe que solo existe bolitas de los colores indicados.
73
http://www.esisvirtual.com
ndice
Diagrama de flujo:
Inicio
Leer cb,pc
C
cb
rojo pf=pc-0.35*pc
verde
pf=pc-0.2*pc
amarillo pf=pc-0.15*pc
negro pf=pc-0.25*pc
blanco
pf=0
Escribir pf
Fin
74
http://www.esisvirtual.com
ndice
cout<<"ingrese el precio a pagar "; cin>>p; cout<<"ingrese el color de la bola" ; cout<<"amarillo,rojo,verde,violeta,negro,blanco : \n\n "; cin>>color; switch (color) { case 'amarillo': d=p*35/100; break; case 'rojo': d=p*2/10; break; case 'verde': pg=p-p*15/100; break;
75
http://www.esisvirtual.com
ndice
d=p*1;
Problema 22
Enunciado: Disear un programa que lea un nmero y visualice dicho nmero en romanos. Datos de entrada: n = Numero a visualizar en romanos.
76
http://www.esisvirtual.com
ndice
Diagrama de flujo:
INICIO Leer n
F
if n<=9
d=n/10 u=n%10
case n
F
c=n/100 d=(n%100)/10 u=(n%100)%10 case m case b case a
if n<=100
V
case d case u
FIN
77
http://www.esisvirtual.com
ndice
case n
C n
1
Esc: I Esc: II
2
Esc: III
3
Esc:IV
5
Esc:V
6
Esc:VI
7
Esc:VII
8
Esc:VIII
9
Esc:IX
case d C d
1
Esc: X
Esc: XX
Esc: XXX
Esc:XL
Esc:L
Esc:LX
Esc:LXX
Esc:LXXX
Esc:XC
case m C m
1
10
Esc: C
Esc: CC
Esc: CCC
Esc:CD
Esc:D
Esc:DC
Esc:DC C
Esc:DCC C
Esc:CM
Esc:M
78
http://www.esisvirtual.com
ndice
case u
C u
Esc: I
Esc: II
Esc: III
Esc:IV
Esc:V
Esc:VI
Esc:VII
Esc:VIII
Esc:IX
case b
C b
Esc: X
Esc: XX
Esc: XXX
Esc:XL
Esc:L
Esc:LX
Esc:LXX
Esc:LXXX
Esc:XC
case a
C a
2
Esc: II 79
Esc: I
Esc:V
Esc:VI
Esc:VII
Esc:VIII
Esc:IX
ndice
Cdigo: #include <stdio.h> #include <conio.h> #include <iostream.h> void main(void) { int n; char u; char d; char c; char m; char b; char a; clrscr(); printf("escribir un numero en para que te de en romanos."); cout<<"Ingrese un nmero : "; cin>>n; if (n<=9) {switch(n) {case 1: cout<<endl<<"I";break;
80
http://www.esisvirtual.com
ndice
} } else { d=n/10; u=n%10; if (n<100) {switch(d) {case 1: cout<<endl<<"X"; break; case 2: cout<<endl<<"XX"; break; case 3: cout<<endl<<"XXX";break; case 4: cout<<endl<<"XL";break; case 5: cout<<endl<<"L";break; case 6: cout<<endl<<"LX ";break; case 7: cout<<endl<<"LXX";break;
81
http://www.esisvirtual.com
ndice
} switch (u) {case 1: cout<<"I";break; case 2: cout<<"II";break; case 3: cout<<"III";break; case 4: cout<<"IV";break; case 5: cout<<"V";break; case 6: cout<<"VI";break; case 7: cout<<"VII";break; case 8: cout<<"VIII";break; case 9: cout<<"IX";break; default: cout<<" ";break; } } else {m=n/100; b=(n%100)/10; a=(n%100)%10; switch(m) {case 1: cout<<endl<<"C"; break;
82
http://www.esisvirtual.com
ndice
case 6: cout<<endl<<"DC ";break; case 7: cout<<endl<<"DCC";break; case 8: cout<<endl<<"DCCC";break; case 9: cout<<endl<<"CM";break; case 10: cout<<endl<<"M";break; } switch(b) {case 1: cout<<"X"; break; case 2: cout<<"XX"; break; case 3: cout<<"XXX";break; case 4: cout<<"XL";break; case 5: cout<<"L";break; case 6: cout<<"LX ";break; case 7: cout<<"LXX";break; case 8: cout<<"LXXX";break; case 9: cout<<"XC";break; default: cout<<"";break; } switch (a) {case 1: cout<<"I";break;
83
http://www.esisvirtual.com
ndice
case 6: cout<<"VI";break; case 7: cout<<"VII";break; case 8: cout<<"VIII";break; case 9: cout<<"IX";break; default: cout<<" ";break; }
} } getch(); }
84
http://www.esisvirtual.com
ndice
Problema 23
Enunciado: En el museo de arte un estudiante desea determinar para cierto da, el promedio de edad as como el nmero de visitantes por sexo para lo cual anota, desde que sea abre las puertas hasta el cierre de las mismas, el sexo (H, M) y la edad de cada visitante. Al final del da dicho estudiante ingresa la letra (s) como sexo para dar por terminado su proceso y mostrar los resultados requeridos. Datos de entrada Sexo (sex) Edad (ed)
85
http://www.esisvirtual.com
ndice
Diagrama de flujo:
Inicio
V Si Sex=H
F nm=nm+ 1
nh=nh + 1
Leer ed
sum=sum + ed
w sex!=s
Codificacin
#include "iostream.h" #include "conio.h"
86
http://www.esisvirtual.com
ndice
char sex; nh=0; nm=0; sum=0; do { cout<<"Ingrese sexo"; cin>>sex; if (sex!='s') { if (sex=='H') { nh =nh + 1;} else {nm=nm+1;} cout<<"Ingrese edad"; cin>>ed; sum= sum + ed; } } while(sex!='s'); prmed = sum/(nh+nm); cout<<"Numero de hombres " << nh<<endl; cout<<"Numero de mujeres "<< nm<<endl; cout<<"Promedio edad"<<prmed; getch();
87
http://www.esisvirtual.com
ndice
Problema 24
Enunciado: Mostrar los resultados de las cuatro operaciones aritmticas: suma, resta, multiplicacin, divisin; para 2 nmeros cualquiera y en un proceso repetitivo que termina cuando ambos nmeros sean CERO. Recuerde que o se debe dividir por cero y si se fuera el caso dar el mensaje correspondiente.
Datos de salida Suma (s) Resta (r) Multiplicacin (m) Divisin (d)
Diagrama de flujo:
88
http://www.esisvirtual.com
ndice
Leer x,y
Si x=0
V Si y=0
Si y=0
V Escribir Sum, res, mult,div Escribir Sum, res, mult Escribir Sum, res, mult,div
Fin
Cdigo:
include "iostream.h" #include "conio.h" void main (void) { int x,y,sum,res,div,mult; clrscr();
89
http://www.esisvirtual.com
ndice
do { cin>>x; cin>>y; if (x==0) { if (y==0) { else { sum=x+y; cout<<sum; cout<<endl; res=x-y; cout<<res; cout<<endl; div=x/y; cout<<div; cout<<endl; mult=x*y;cout<<mult; } } else { if (y==0) { sum=x+y; cout<<sum; cout<<endl; res=x-y; cout<<res; cout<<endl; cout<<endl<<"Division indeterminada"; cout<<endl; mult=x*y; cout<<mult; } }
else { sum=x+y; cout<<sum; cout<<endl; res=x-y; cout<<res; cout<<endl; div= x/y; cout<<div; cout<<endl;
90
http://www.esisvirtual.com
ndice
Problema 25
Enunciado: Mostrar los N primeros trminos de la siguiente serie, donde N debe estar entre 5 y 30: 5, 7, 10, 14, 19, Datos de entrada Nmero de trminos (N)
Diagrama de flujo:
91
http://www.esisvirtual.com
ndice
Leer n
W n<5 || n>30
W k<=n
Fin
Codigo: #include "iostream.h" #include "conio.h" void main(void) { int i,n,ini,k; clrscr();
92
http://www.esisvirtual.com
ndice
do {
Problema 26
Enunciado: Ingresar 10 nmeros enteros, entre 0 y 20, que representen notas de un curso para un alumno y mostrar el promedio que obtiene.
93
http://www.esisvirtual.com
ndice
Diagrama de flujo:
Inicio
sum=0 k=0
Leer n
W n<0 || n>20
sum=sum+n k=k+1
W K<=10
prom=sum/10
Escribir prom
Fin
94
http://www.esisvirtual.com
ndice
Cdigo: #include "iostream.h" #include "conio.h" void main(void) { int n,prom,sum,k; clrscr(); sum=0; k=1; do { do { cin>>n; } while (n<0 || n>20 ); sum=sum+ n; k=k+1; }while (k<=10); prom= sum/10; cout<<prom; getch(); }
Problema 27
95
http://www.esisvirtual.com
ndice
Datos de entrada:
N: Numero de trminos
Datos de salida:
Diagrama de flujo:
Inicio
Leer n
s=0
i=1
s = s+1
i=i+1
Escribir s
Fin
96
http://www.esisvirtual.com
ndice
Cdigo:
#include <conio.h> #include <iostream.h> void main () { Int N, S, I; clrscr(); cout<<Ingresar el numero de trminos: ; cin>>N; S = 0; I = 1; while (I <= N) { if (I mod 2 =0) { S = S + I; } I = I + 1; } cout<<La suma es: <<S; getch(); }
Problema 28
Enunciado: Determinar la suma de los N primeros trminos de la siguiente serie. 1/2 + 1/4 + 1/6
Datos de entrada:
N: Numero de trminos
97
http://www.esisvirtual.com
ndice
Datos de salida:
Diagrama de flujo:
Inicio
Leer n
s=0
par=2
i=1
par=par+2 F
i=i+1
Escribir s
Fin
98
http://www.esisvirtual.com
ndice
Cdigo:
#include <conio.h> #include <iostream.h> void main () { Float S; Int N, par, I; clrscr(); cout<<Ingresar un numero entero: ; cin>>N; S = 0; Par = 2; I = 1; while (I <= N,I++) { S= S + 1/par; Par = par + 2; } cout<<La suma es: <<S; getch(); }
99
http://www.esisvirtual.com
ndice
Problema 29
Enunciado: Mostrar todos los divisores de un nmero entero. Si el nmero solo tiene por divisores al 1 y a si mismo, mostrar mensaje Nmero primo.
Diagrama de flujo:
100
http://www.esisvirtual.com
ndice
Inicio
Leer n
k=0
i=1 n
If n%i=0
v k=k+1
Escribir i
If k=2
V Escribir primo
Fin
Cdigo:
#include "iostream.h" #include "conio.h" void main(void) { int k,i,n; clrscr(); cin>>n;
101
http://www.esisvirtual.com
ndice
k=0; for (i=1;i<=n;i++) { if (n%i==0) {cout<<endl; cout<<i; k=k+1; } if (k==2) { cout<<"Numero primo"; } getch(); } }
Problema 30
Enunciado: Ingresar 15 notas y determinar el promedio, la mxima y mnima nota. Datos de entrada Notas (not) Datos de salida Promedio (prom) Mxima nota (notmax) Mnima nota (notmin)
102
http://www.esisvirtual.com
ndice
Diagrama de flujo:
Inicio
i=1 15
Leer not
If not>max
max = not
If not<min
min= not F
prom = sum/15
Fin
103
http://www.esisvirtual.com
ndice
Cdigo:
#include "iostream.h" #include "conio.h" void main(void) { float sum, max, min, prom, i, not; clrscr(); sum=0; max=0; min=20; for(i=1;i<=15;i++) { cin>>not; if (not>max) { max=not;} if (not<min) { min=not;} sum=sum+not; } prom=sum/15; cout<<prom; cout<<endl; cout<<max; cout<<endl; cout<<min; getch(); }
104
http://www.esisvirtual.com
ndice
Problema 31
Enunciado: Mostrar los 20 primeros trminos de la siguiente serie, determinando adems la suma de ellos: 7, 10, 13, 16, 19,
Diagrama de flujo:
Inicio
sum=0 ini=7 i=1 20 Escribir ini sum= sum + ini Ini= ini +3
Escribir sum
Fin
105
http://www.esisvirtual.com
ndice
Cdigo: #include "iostream.h" #include "conio.h" void main(void) { int ini,suma,i; clrscr(); suma=0; ini=7; for(i=1;i<=20;i++) { cout<<ini; suma= suma + ini; ini = ini +3; } cout<<suma; getch(); }
Problema 32
106
http://www.esisvirtual.com
ndice
Diagrama de flujo:
Inicio
Leer n
i=1 18
Rpta= i*n
Escribir rpta
Fin
Cdigo: #include "iostream.h" #include "conio.h" void main(void) { int n,i,rpta; clrscr();
107
http://www.esisvirtual.com
ndice
Problema 33
Enunciado: Hallar el resultado de una potencia con una base y exponente dada.
Datos de salida
r: resultado
Diagrama de flujo:
108
http://www.esisvirtual.com
ndice
Inicio
Leer b,e
t=1 i=1e
t=t*b
Esciribr t
Fin
cdigo:
#include iostream.h #include conio.h void main (void) { int b,e,I; clrscr(); cout<<Ingrese base ; cin>>b; cout<<Ingrese exponente; cin>>e; t=1; for (i=1;i<=e;i++) { t=t*b;} cout<<El resultado es <<t; getch(); }
109
http://www.esisvirtual.com
ndice
Problema 34
Enunciado: Halla si un nmero es perfecto o no, se dice que un numero es perfecto si la suma de sus divisores es igual al nmero. Datos de entrada n: numero
Diagrama de flujo:
Inicio
Leer n
t=0 i=1n
Si n mod i =0
t=t+i F
Si n=t
Fin
110
http://www.esisvirtual.com
ndice
Cdigo: #include iostream.h #include conio.h void main(void) { int t,n,i clrscr(); cout<<Ingrese numero ; cin>>n; t=0; for ( i=1;i<=n;i++) { If (nmodi==0) {t=t +i;} else {} } If (t==n) { cout<<El numero es perfectoelse ,cout<<El numero no es perfectogetch(); }
111
http://www.esisvirtual.com
ndice
Problema 35
Enunciado: Hacer un algoritmo que llene una matriz de 10*10 y determine la posicin [rengln columna] del nmero mayor almacenado en la matriz. Los nmeros son diferentes.
Datos de entrada: A[i,j]= Matriz de 10 filas y 10 columnas. Datos de salida: mayor = Nmero mayor de la matriz. fila = posicin (fila) del nmero mayor. columna = posicin (columna) del nmero mayor.
Diagrama de flujo:
112
http://www.esisvirtual.com
ndice
i=1
10
j=1
10
Leer A[i,j]
Si i=1 ^ j=1
mayor=A[i,j]
Si
A[i,j]>mayor
Fin
113
http://www.esisvirtual.com
ndice
{ int i, j, A[50,50], mayor, fila, columna; clrscr(); cout<<"PROGRAMA SOBRE MATRICES\n"; cout<<"=======================\n\n"; for(i=1;i<=10;i++) { for(j=1;j<=10;j++) { cin>>A[i,j]; { if(i==1 ^ j==1) { mayor=A[i,j]; fila=i; columna=j; } else { if(A[i,j]>mayor) {
114
http://www.esisvirtual.com
ndice
mayor=A[i,j]; fila=i; columna=j; } } } } } cout<<"el mayor es:"<<mayor; cout<<"la fila es:"<<fila<<"la columna es:"<<columna; getch(); }
Problema 36
Enunciado: Hacer un algoritmo que llene una matriz de 20*20. Sumar las columnas e imprimir que columna tuvo la mxima suma y la suma de esa columna.
Datos de entrada: A[i,j]= Matriz de 20 filas y 20 columnas. Datos de salida: mayor= Suma de la columna con la mxima suma. col= Columna con la mxima suma.
Diagrama de flujo:
115
http://www.esisvirtual.com
ndice
C[i]=0
j=1
20
Leer A[i,j]
C[i]=C[i]+A[i,j]
mayor=A[1]
col=1
i=1
20
Si C[i]>mayor mayor=C[i]
col=i
Fin
116
http://www.esisvirtual.com
ndice
{ int i, j, A[40,40],c[40], mayor, col; clrscr(); cout<<"PROGRAMA SOBRE MATRICES\n"; cout<<"=======================\n\n"; for(i=1;i<=20;i++) { c[i]=0; for(j=1;j<=20;j++) { cin>>A[i,j]; c[i]=c[i]+A[i,j]; } } mayor=A[i]; col=1; for(i=1;i<=20;i++) { if(c[i]>mayor) {
117
http://www.esisvirtual.com
ndice
mayor=c[i]; col=i; } } cout<<"la columna de la maxima suma es:"<<col<<endl; cout<<"la suma de la columna es:"<<mayor; getch(); }
Problema 37
Enunciado: Hacer un algoritmo que llene una matriz de 10*10 y que almacene en la diagonal principal unos y en las dems posiciones ceros.
Datos de entrada: Nmero de elementos por fila = 10 Nmero de elementos por columna= 10
Datos de salida: Diagonal principal con unos y dems posiciones con ceros.
Diagrama de flujo:
118
http://www.esisvirtual.com
ndice
i=1
10
j=1
10
Fin
119
http://www.esisvirtual.com
ndice
Problema 38
Enunciado: Hacer un algoritmo que llene una matriz de 8*8, que almacene la suma de los renglones y la suma de las columnas en un vector. Imprimir el vector resultante.
Datos de entrada: A[i,j]= Matriz de 8 filas y 8 columnas. Datos de salida: sr= suma de los renglones sc= suma de las columnas
Diagrama de flujo:
120
http://www.esisvirtual.com
ndice
i=1
sr[i]=0 j=1 8
Leer A[i,j]
sr[i]=sr[i]+A[i,j]
i=1
sc[i]=0 j=1 8
sc[i]=sc[i]+A[j,i]
k=1
Fin
121
http://www.esisvirtual.com
ndice
{ int i, j, A[50,50], sr[50], sc[50], k; clrscr(); cout<<"PROGRAMA SOBRE MATRICES\n"; cout<<"=======================\n\n"; for(i=1;i<=8;i++) { sr[i]=0; for(j=1;j<=8;j++) { cin>>A[i,j]; sr[i]=sr[i]+A[i,j]; } } for(i=1;i<=8;i++) { sc[i]=0; for(j=1;j<=8;j++) {sc[i]=sc[i]+A[j,i];} }
122
http://www.esisvirtual.com
ndice
for(k=1;k<=8;k++) { cout<<"la suma de los renglones es:"<<sr<<endl; cout<<"la suma de las columnas es:"<<sc; } getch(); }
Problema 39
Enunciado: Calcule la mediana de un conjunto de datos. La mediana en un arreglo ordenado es el elemento central. Si el nmero de elementos del arreglo es impar existe un nico elemento ubicado en el centro del arreglo. Si el nmero de elementos del arreglo es par, existen dos elementos centrales y la mediana estar dado por el promedio de ambos trminos centrales (si el arreglo tiene 8 trminos, los trminos centrales son los ubicados en la posicin 4 y 5).
Diagrama de flujo:
123
http://www.esisvirtual.com
ndice
Leer n
i=1
Leer A[i]
i=2
j=n
Mediana=(A[T1]+A[T2])/2
Escribir Mediana
Fin
124
http://www.esisvirtual.com
ndice
Cdigo:
{ int n, i, j, A[20], aux, T, T1, T2, Mediana; clrscr(); cout<<"PROGRAMA SOBRE ARREGLOS UNIDIMENSIONALES\n"; cout<<"========================================\n\n"; cout<<"Numero de elementos: "; cin>>n; for(i=1;i<=n;i++) { cout<<"A[i]="; cin>>A[i]; } for(i=2;i<=n;i++) { for(j=n;j<=i;j++) { if(A[j-1]>A[j]) { aux=A[i-1];
125
http://www.esisvirtual.com
ndice
A[j-1]=A[j]; A[j]=aux; } } }
if(n%2==0) { T1=n/2; T2=T1+1; Mediana=(A[T1]+A[T2])/2; } else { T=(n+1)/2; Mediana=A[T]; } cout<<"La Mediana es: "<<Mediana; getch(); }
126
http://www.esisvirtual.com
ndice
Problema 40
Datos de salida: C[i]= Cantidad de veces que aparece cada elemento de un arreglo.
Diagrama de flujo:
127
http://www.esisvirtual.com
ndice
Leer n
i=n
Leer A[i]
i=n
C[i]=0
j=n
Si A[j-1]=A[j] C[i]=C[i]+1
i=1
Escribir C[i]
Fin
128
http://www.esisvirtual.com
ndice
Cdigo:
{ int n, i, j, C[30], A[30] ; clrscr(); cout<<"PROGRAMA SOBRE ARREGLOS UNIDIMENSIONALES\n"; cout<<"========================================\n\n"; cout<<"Numero de elementos: "; cin>>n; for(i=1;i<=n;i++) { cout<<"A[i]="; cin>>A[i]; } for(i=n;i<=n;i++) { C[i]=0; } for(j=n;j<=n;j++) { if(A[j-1]==A[j])
129
http://www.esisvirtual.com
ndice
getch(); }
Problema 41
Enunciado: Se tiene dos arreglos ordenados. Se desea unirlos y formar un tercer arreglo donde los datos permanezcan ordenados (la ordenacin puede ser en orden descendente o ascendente).
Datos de entrada: nA= Nmero de elementos del primer arreglo. nB= Nmero de elementos del segundo arreglo.
Diagrama de flujo:
130
http://www.esisvirtual.com
ndice
i=1
nA,1
Leer A[i]
j=1
nB,1
Leer B[j]
k=1 C[k]=A[k]
nA,1
j=1
nB,1
j=k
i,1
i=1
k,1
Escribir C[i]
Fin
131
http://www.esisvirtual.com
ndice
Cdigo: #include"conio.h" #include"iostream.h" void main(void) { float nA, nB, i, j, k, A[20], B[20], C[20], aux; clrscr(); cout<<"PROGRAMA SOBRE ARREGLOS UNIDIMENSIONALES\n"; cout<<"========================================\n\n"; cout<<"Numero de elementos de A:"; cin>>nA; cout<<"Numero de elementos de B:"; cin>>nB; for(i=1;i<=nA;i++) { cout<<"A[i]="; cin>>A[i]; } for(j=1;j<=nB;j++) { cout<<"B[j]="; cin>>B[j]; }
132
http://www.esisvirtual.com
ndice
for(k=1;k<=nA;k++) {C[k]=A[j];} for(j=1;j<=nB;j++) { k=k+1; C[k]=A[j]; } for(i=2;i<=k;i++) { for(j=k;j<=i;j++) { if(C[j-1]>C[j]) { aux=A[j-1]; A[j-1]=A[j]; A[j]=aux; } } } for(i=1;i<=k;i++) {cout<<C[i];} getch(); }
133
http://www.esisvirtual.com
ndice
Problema 42 Enunciado: Dado 5 nmeros obtener el mayor. Datos de entrada: 5 nmeros Datos de salida: m=mayor Diagrama de flujo:
Inicio
i=0 ; i<=4 ;
i++
n[i]>m
m=n[i]
Escribir m
Fin
134
http://www.esisvirtual.com
ndice
Cdigo:
#include iostream.h #include conio.h Void main() {int i,m=0,n[5]; cout<<NUMERO 1; cin>>n[0]; cout<<NUMERO 2; cin>>n[1]; cout<<NUMERO 3; cin>>n[2]; cout<<NUMERO 4; cin>>n[]3; cout<<NUMERO5; cin>>n[4]; for(i=0;i<=4;i++) { If (n[i]>m) M=n[i]; } cout<<MAYOR:; cout<<m; getch(); }
Problema 43 Enunciado: Lea 4 nmeros y almacnelo en un vector A y los otros 4 nmeros en un vector llamado B, y determine cuantos nmeros de se encuentran en B. Datos de entrada 4 nmeros = a[4] 4 nmeros = b[4] Datos de salida c= cantidad Diagrama de flujo:
135
http://www.esisvirtual.com
ndice
i++ j++
a[i]=b[j]
c=c+1
Escribir c
Fin
Cdigo: #include iostream.h #include conio.h Void main() {int c=0,I,j,a[4],b[4]; cout<<ARREGLO A; cout<<endl; 136 http://www.esisvirtual.com
ndice
cout<<cantidad : ; cout<<c; getch(); } Problema 44 Enunciado: Almacene en una matriz de 3*2,6 nmeros y obtenga la cantidad de pares e impares. Datos de entrada: 6 nmeros = n[3][2];
137
http://www.esisvirtual.com
ndice
Inicio
i++ j++
n[i][j]%2=0
ci=ci+1
cp=cp+1
Escribir cp,ci
Fin
138
http://www.esisvirtual.com
ndice
Problema 45
Enunciado: Dado la matriz A de 2*2, La matriz B de 2*2, obtenga la suma de dicha matriz.
139
http://www.esisvirtual.com
ndice
Datos de entrada: 4 nmeros matriz A = a[2][2] 4 nmeros matriz B = b[2][2] Datos de salida: 4 nmeros matriz c = c[2][2] Diagrama de flujo:
Inicio
i++ j++
c[i][j]=a[i][j]+b[i][j]
Escribir
c[0][0],c[0][1] c[1][0],c[1][1]
Fin
140
http://www.esisvirtual.com
ndice
{int I,j,a[2][2],b[2][2],c[2][2]; cout<<ARREGLOS DE A ; cout<<endl; cout<<=============; cout<<endl<<endl; cout<<NUMERO (0,0): ; cin>>n[0][0]; cout<<NUMERO (0,1): ; cin>>n[0][1]; cout<<NUMERO (1,0): ; cin>>n[1][0]; cout<<NUMERO (1,1): ; cin>>n[1][1]; cout<<endl<<endl; cout<<ARREGLOS DE B ; cout<<endl; cout<<=============; cout<<endl<<endl; cout<<NUMERO (0,0): ; cin>>b[0][0]; cout<<NUMERO (0,1): ; cin>>b[0][1]; cout<<NUMERO (1,0): ; cin>>b[1][0]; cout<<NUMERO (1,1): ; cin>>b[1][1]; for (i=0;j<=1;j++) { for(j=0;j<=1;j++) c[i][j]=a[i][j]+b[i][j]; } cout<<AREEGLOS DE C ; cout<<endl; cout<<=============; cout<<endl<<endl; cout<<NUMERO (0,0): ;
141
http://www.esisvirtual.com
ndice
Problema 46
Enunciado: Ingrese 6 nmeros en una matriz de 3*2 y ordene los nmeros de cada columna
Datos de entrada:
Diagrama de flujo:
142
http://www.esisvirtual.com
ndice
Inicio
i++ j++
n[j][0]>n[j+1][0]
n[j][1]>n[j+1][0]
Escribir
n[0][0],n[0][1] n[1][0],n[1][1] n[2][0],n[2][1]
Fin
143
http://www.esisvirtual.com
ndice
Cdigo: #include iostream.h #include conio.h void main() {int tmp,I,j,n[3][2]; clrscr(); cout<<NUMERO (0,0): ; cin>>n[0][0]; cout<<NUMERO (0,1): ; cin>>n[0][1]; cout<<NUMERO (1,0): ; cin>>n[1][0]; cout<<NUMERO (1,1): ; cin>>n[1][1]; cout<<NUMERO (2,0): ; cin>>n[2][0]; cout<<NUMERO (2,1): ; cout<<n[2][1]; for (i=0;i<=1;i++) { for (j=0;j<=1;j++) { if(n[j][0]>n[j+1][0]) { tmp=n[j][0]; n[j][0]=n[j+1][0]; n[j+1][0]=tmp; } if(n[j][1]>n[j+1][1]) { tmp=n[j][1]; n[j][1]=n[j+1][1]; n[j+1][1]=tmp; } } } cout<<ORDENADO POR COLUMNA; cout<<endl; cout<<=======================; cout<<endl<<endl; cout<<NUMERO (0,0): ; cout<<n[0][0]; cout<<NUMERO (0,1): ; cout<<n[0][1];
144
http://www.esisvirtual.com
ndice
Problema 47
Enunciado:
diagrama de flujo:
145
http://www.esisvirtual.com
ndice
i, s: entero
n[5] : entero
I<=4, i
1, i
i+1
s + n [i]
Escribir s
Fin Codigo: #includeiostream.h #includeconio.h Void main(void) { int s=a,I; Int n[5]; Cout<<numero 1: ; cin>>n*1+; Cout<<numero 2: ; cin>>n*2+; Cout<<numero 3: ; cin>>n*3+; Cout<<numero 4: ; cin>>n*4+; Cout<<numero 5: ; cin>>n*5+; For(i=0; i<=4; i++) S+=n[i]; Cout<<\n; Cout<<suma: <<s<<\n; }
146
http://www.esisvirtual.com
ndice
c+1
Escribir c
Fin
147
http://www.esisvirtual.com
ndice
Problema 49 Enunciado: busque un nmero en 7 nmeros ingresados Y determine la posicin y su existe o no el numero buscado, Use el mtodo de bsqueda secuencial. Datos de entrada: 7 nmeros (n [7]). Numero a buscar (nb)
148
http://www.esisvirtual.com
ndice
NO EXISTE P -1
I<=6, i
0, i
i+1
N[i] = bn
EXISTE p i salir
Escribir r, p
Fin
149
http://www.esisvirtual.com
ndice
Problema 50 Enunciado: ordene 4 nmeros usando el mtodo de Ordenacin por intercambio (burbuja). Datos de entrada: 4 nmeros (n [4]). Datos de salida: 4 nmeros ordenados (n [4])
150
http://www.esisvirtual.com
ndice
I<= ls-1, i
li, i
i+1
J<=ls-1, j
li, j
j+1
n[j]>n[j+i]
Fin
151
http://www.esisvirtual.com
ndice
Li= 0; Ls= (sizeof (n)/ sizeof (int)) -1; For(i= li; I <=ls -1; i++){ For(j =li; j <= ls 1; j++) { If(n[j] > n[j + 1]) { Tmp = n[j]; n[j] = n [j + 1]; n[j + 1] = tmp; } } } Cout<<\n; Cout<<ordenado \n; Cout<<numero 1: <<n*1+ <<\n; Cout<<numero 2: <<n*2+ <<\n; Cout<<numero 3: <<n*3+ <<\n; Cout<<numero 4: <<n*4+ <<\n; }
Problema 51 Enunciado: ingrese 12 numeros en un arreglo bidimencional (matriz) de 4*3, obtenga la suma de cada columna.
152
http://www.esisvirtual.com
ndice
N [4][3] : entero
Leer n[0] [0], n[0][1], n[o] [2], n[1][0], n[1] [1], n[1][2], n[2] [0], n[2][1], n[2] [2], n[3][0], n[3] [1], n[3][2]
I<=4, i
0, i
i+1
S0 S1 S2
Fin
153
http://www.esisvirtual.com
ndice
154
http://www.esisvirtual.com
ndice
Diagrama de flujo :
Inicio Nb, i, j, p1, p2:entero R : cadena N [4] : entero Leer n[0][0], n[0][1], n[0][2], N[1][0], n[1][1], n[1][2], N[2][0], n[2][1], n[2][2], N[3][0], n[3][1], n[3][2] r NO EXISTE p1 - i p2 - j 0, i 0, j I+I j+1
I<=3, i J<=2, j
r= SI EXISTE Salir A
155
http://www.esisvirtual.com
ndice
156
http://www.esisvirtual.com