Beruflich Dokumente
Kultur Dokumente
DISEO LOGICO DE
PROGRAMAS
100 ALGORITMOS
JAVA
Pgina 0 de 237
GUIA PRCTICA
ALGORITMOS
ESTRUCTURADOS
JAVA
Pgina 1 de 237
INDICE
PAG
Instalacion de Software a utilizar...................................
SESION 01 :
Procesos
Secuenciales..............................................
SESION 02 :
Estructuras Condicionales............................................
41
SESION 03 :
Estructuras Selectivas
66
SESION 04 :
SESION 05 :
113
SESION 06 :
134
SESION 07 :
158
SESION 08 :
Arreglos de datos
...................................................
185
SESION 09 :
210
.............................................
Pgina 2 de 237
Fig. 2
Pgina 3 de 237
Fig. 4
Pgina 4 de 237
Fig. 6
Pgina 5 de 237
S SESION 01
Los procesos secuenciales
Permiten realizar un proceso
tras otro no dependiendo de
alguna
condicin
variar la secuencia.
Pgina 6 de 237
que
haga
Pgina 7 de 237
Pgina 8 de 237
Pgina 9 de 237
Pgina 10 de 237
Pgina 11 de 237
Pgina 12 de 237
Pgina 13 de 237
Pgina 14 de 237
Pgina 15 de 237
Pgina 16 de 237
6. Disear un algoritmo que solicite al usuario su sueldo mensual, sus gastos de: renta, luz,
agua y comida y le muestre cunto dinero le queda.
Solucin:
*Anlisis de datos
E:sm,r,l,a,c
S:dr(dinero restante)
*Algoritmo
1.-inicio
2.-sm=0,r=0,l=0,a=0,c=0,dr=0,s=0
3.-leer sm,r,l,a,c
4.-s=r+l+a+c
dr=sm-s
5.-escribir dr
6.-fin
*Prueba de Escritorio
sm=2000
r=700
l=100
a=120
comida=300
dr=780
Pgina 17 de 237
Pgina 18 de 237
Digite un nmero entero positivo de tres cifras, luego visualice el nuevo formado por sus
cifras extremas y la inversa de dicho nmero.
Solucin:
*Anlisis de datos
E:n(numero)
S: nnum(digitos de extremos), inv_nnum(nmeros invertidos)
*Algoritmo
1.-inicio
2.-n=0.0, c1=0,c2=0,c3=0, nnum=0,inv_nnum=0,r=0
3.-leer n
4.-c1=entero(n/100)
r=residuo(n/100)
c2=entero(r/10)
r=residuo(r/10)
c3=entero(r)
nnum=(c1*10+c3)
inv_nnum=(c1+c3*10)
5.-escribir nnum,inv_nnum
6.-fin
*Prueba de Escritorio
n=483
nnum=43
inv_nnum=34
*Implementacin del algoritmo en JAVA.
package procesos.secuenciales;
/*
Digite un nmero entero positivo de tres cifras, luego visualice el nuevo
formado por sus cifras extremas y la inversa de dicho nmero.
*/
//paquete de cuadro de dialogo
import JAVAx.swing.JOptionPane;
//Clase principal
public class Ejercicio7_PS {
//Metodo principal
public static void main(String args[]){
//declaracion de variables
int c1,c2,c3,nnum,inv_nnum,r,n;
//entrada de datos
n=Integer.parseInt(JOptionPane.showInputDialog("Ingrese Numero:"));
//proceso de datos
c1=n/100;
r=n%100;
c2=r/10;
r=r%10;
c3=r;
nnum=(c1*10+c3);
inv_nnum=(c1+c3*10);
//salida de datos
JOptionPane.showMessageDialog(null,"Digitos
Extremos:"+nnum+"\n"+"Numeros
Invertidos:"+inv_nnum);
}//fin del metodo principal
}//fin de la clase principal
Pgina 19 de 237
8.
Cual es el monto a devolver si nos prestan un capital c a una tasa de interes t%, durante
n periodos?
Solucin:
*Analisis de datos
E:c(capital),t(tasa de interes),n(periodos)
S:m(monto)
*Algoritmo
1.-Inicio
2.-c=0.0,t=0.0,n=0,m=0.0
3.-m=c*pow(1 + t ,n)
4.-escribir m
5.-fin
*Prueba de escritorio
c=500
t=0.2
n=5
m=1244.16
Pgina 20 de 237
Pgina 21 de 237
9.
Solucin:
*Analisis de datos
E:hr(horas),m(minutos),s(segundos)
S:ts(tiempo total en segundos)
*Algoritmo
1.-Inicio
2.-hr=0.0,m=0.0,s=0.0,ts=0.0
3.-leer hr,m,s
4.-ts=hr*3600 + m*60 + s
5.-escribir ts
6.-fin
*Prueba de escritorio
hr=5
m=30
s=40
ts=19840
Pgina 22 de 237
10.
Disear un algoritmo que permita convertir una cantidad de dolares a una cantidad
soles, teniendo en cuenta el tipo de cambio del dolar.
Solucin:
*Analisis de datos
E:cd(cantidad dolares),tc(tipo de cambio)
S:cs(cantidad soles)
*Algoritmo
1.-inicio
2.-cd=0.0,tc=0.0,cs=0.0
3.-leer cd,tc
4.-cs=cd*tc
5.-escribir cs
6.-fin
*Prueba de Escritorio
cd=375
tc=2.75
cs=1031.25
*Implementacin del algoritmo en JAVA.
package procesos.secuenciales;
/*
Disear un algoritmo que permita convertir una cantidad de dolares a una
cantidad soles,teniendo en cuenta el tipo de cambio del dolar.
*/
//paquete de cuadro de dialogo
import JAVAx.swing.JOptionPane;
//clase principal
public class Ejercicio10_PS {
//metodo principal
public static void main (String args[]){
//declaracion de variables
double cd,tc,cs;
//entrada de datos
cd=Double.parseDouble(JOptionPane.showInputDialog("Cantidad en dolares:"));
tc=Double.parseDouble(JOptionPane.showInputDialog("Tipo de cambio:"));
//proceso de datos
cs=cd*tc;
//salida de datos
JOptionPane.showMessageDialog(null,"La cantidad en Soles es:"+cs);
}//fin del metodo
}//fin de la clase
Pgina 23 de 237
11.
Solucin:
*Analisis de datos
e:r(radio)
s:d(diametro), l(longitud de la circunferencia), a(area)
*Algoritmo
1.-inicio
2.-r=0, d=0, l=0,a=0
3.-leer r
4.-d=2*r
l=3.1416*radio*2;
a=3.1416*radio*radio;
5.-escribir d,l,a
6.-fin
*Prueba de escritorio
r=5
d=10
l=31.416
a=78.54
Pgina 24 de 237
Pgina 25 de 237
Pgina 26 de 237
13.
Disear un algortimo que permita a un alumno desea saber cual ser su calificacin final
en la materia de Algoritmos. Dicha calificacin se compone de los siguientes porcentajes:
55% del promedio de sus tres calificaciones parciales.
30% de la calificacin del examen final.
15% de la calificacin de un trabajo final.
Solucin:
*Analisis de datos
e:p1(nota del primer parcial),p2(nota del segundo parcial),
p3(nota del tercer parcial),ef(nota del examen final),
tf(nota del trabajo final)
s:cf(calificacion final)
*Algoritmos
1.-inicio
2.-p1=0.0,p2=0.0,p3=0.0,pp=0.0,ef=0.0,tf=0.0,cf=0.0
3.-leer p1,p2,p3,ef,tf
4.-pp=(p1+p2+p3)/3
cf=0.55*pp+0.3*ef+0.15*tf
5.-escribir cf
6.-fin
*Prueba de Escritorio
p1=18
p2=12
p3=10
ef=14
tf=15
cf=13.78
Pgina 27 de 237
Pgina 28 de 237
Pgina 29 de 237
Pgina 30 de 237
Pgina 31 de 237
Pgina 32 de 237
Pgina 33 de 237
Pgina 34 de 237
Pgina 35 de 237
18. Disear un algoritmo que digite el radio y la altura de un cilindro y muestre su volmen,
rea lateral y rea total.
Solucin:
*Analisis de datos
e:r(radio),h(altura)
s:v(volumen),at(area total),al(area lateral)
*Algoritmo
1.- inicio
2.- r=0.0,h=0.0,v=0.0,at=0.0,al=0.0,ab=0.0(area de la base)
3.- leer r,h
4.- ab=3.14*r*r
al=2*3.14*r*h
at=al+2*ab
v=ab*h
5.- escribir al,at,v
6.- fin
*Prueba de Escritorio
r=3
h=5
al=94.2
at=150.72
v=141.3
Pgina 36 de 237
Pgina 37 de 237
Disear un algoritmo que digite un nmero natural de dos cifras y muestre el promedio
de sus cifras.
Solucin:
*Analisis de datos
e:n(numero)
s:prom(promedio de cifras)
*Algoritmo
1.- inicio
2.- n=0,Prom=0.0,d=0.0,u=0.0
3.- leer n;
4.- d=n/10
u=n%10
prom=(d+u)/10
5.- escribir prom
6.- fin
*Prueba de Escritorio
n=99
prom=9
Pgina 38 de 237
20. Disear un algoritmo que dados tres numeros positivos ,calcule la media armonica(permite
medir velocidades).
Solucin:
Anlisis de datos
e:n1,n2,n3
s:mh(media armoonica)
Algoritmo
1.-inicio
2.-n1=0.0,n2=0.0,n3=0.0,mh=0.0
3.-leer n1,n2,n3
4.-mh=3/(1/n1+1/n2+1/n3)
5.-escribir mh
6.-fin
prueba de escritorio
n1=12
n2=16
n3=11
mh=12.672
Pgina 39 de 237
Pgina 40 de 237
S SESION 02
Las condiciones nos permiten
consistenciar, validar mediante
la de dos valores.
Pgina 41 de 237
SESION 02
ESTRUCTURAS CONDICIONALES
1. Disear un algoritmo que permita determinar el promedio, condicin ('aprobado',
'desaprobado'), estado, nota mayor y menor de un alumno mediante sus tres notas
ingresadas.
Condicin
Promedio >=10.5 aprobado,desaprobado
Estado
<=5 pesimo
<=10 malo
<=15 "regular"
<=18 bueno
<=20 excelente
Solucin:
*Anlisis de datos
E:nt1,nt2,nt3
S:prom(promedio),c(condicion),e(estado),nmy,nmn
*Algoritmo
1.-inicio
2.-nt1=0.0,nt2=0.0,nt3=0.0,
prom=0.0,c='',e='',nmy=0.0,nmn=0.0
3.-leer nt1,nt2,nt3
4.-nmy=nt1
//nota mayor
si nt2>nmy entonces
nmy=nt2
fin de si
si nt3>nmy entonces
nmy=nt3
fin de si
//nota menor
nmn=nt1
si nt2<nmn entonces
nmn=nt2
fin de si
si nt3<nmn entonces
nmn=nt3
fin de si
//condicin del alumno
prom=(nt1+nt2+nt3)/3
Pgina 42 de 237
Pgina 43 de 237
Pgina 44 de 237
Pgina 45 de 237
Pgina 46 de 237
Pgina 47 de 237
Pgina 48 de 237
Pgina 49 de 237
Pgina 50 de 237
Pgina 51 de 237
Pgina 52 de 237
6. Construir un programa que calcule el ndice de masa corporal de una persona (IMC = peso [kg]
/altura[m]) e indique el estado en el que se encuentra esa persona en funcin del valor de
IMC:
Valor de IMC
<16 "ingrese al hospital"
16 a 17 "infrapeso"
17 a 18 "bajo peso"
18 a 25 "peso normal(saludable)"
25 a 30 "sobrepeso(obesidad de gradoI)"
30 a 35 "sobrepeso crnico(obesidad de grado II)"
35 a 40 "obesidad premorbida(obesidad de grado III)"
>40 "obesidad morbica(obesidad de grado IV)"
*ESTADO
<16 "ingrese al hospital"
<17 "infrapeso"
<18 "bajo peso"
<26 "peso normal(saludable)"
<30 "sobrepeso(obesidad de gradoI)"
<35
"sobrepeso crnico(obesidad de grado II)"
<40 "obesidad premorbida(obesidad de grado III))"
>40 "obesidad morbica(obesidad de grado IV)"
Pgina 54 de 237
Pgina 55 de 237
Pgina 56 de 237
Pgina 57 de 237
Pgina 58 de 237
Pgina 59 de 237
Pgina 60 de 237
Pgina 61 de 237
Pgina 62 de 237
Pgina 63 de 237
Pgina 64 de 237
Pgina 65 de 237
S SESION 03
Selectivas
permiten
evaluar
Pgina 66 de 237
ESTRUCTURAS SELECTIVAS
1. Disear un algoritmo que permita ensear a utilizar las cuatro operaciones Aritmticas
bsicas, mediante dos nmeros ingresado. El algoritmo pregunta la operacin aritmtica y
respuesta a los alumnos de primer grado, Si la respuesta es correcta se le emite un mensaje
de "felicitaciones" caso contrario "Respuesta incorrecta".
Solucin:
*Anlisis de datos
E:n1,n2,opa,rpta
S:m(mensaje)
*Algoritmo
1.-inicio
2.-n1=0.0,n2=0.0,opa=' ',rpta=0.0,r=0.0,m=' '
3.-leer n1,n2,opa,rpta
4.-segun sea opa
caso '+'
r=n1+n2
caso '-'
r=n1-n2
caso '*'
r=n1*n2
caso '/'
r=n1/n2
fin de segun
si r=rpta entonces
m='Felicitaciones'
sino
m='Respuesta Incorrecta'
fin de si
5.-escribir m
6.-fin
*Prueba de Escritorio
n1=4
n2=2
opa='*'
rpta=8
m='Felicitaciones'
Pgina 67 de 237
Pgina 68 de 237
Pgina 69 de 237
2. Disear un algoritmo que permita determinar el nombre del mes del ao y la estacin del
ao, mediante un nmero ingresado.
Solucin:
*Anlisis de datos
E:n(nmero)
S:m(mes),e(estacin)
*Algoritmo
1.-inicio
2.-n=0,m='',e=''
3.-leer n
4.-si n>0 y n<=12 entonces
segn sea n
caso 1:m='enero'
caso 2:m='febrero'
caso 3:m='marzo'
caso 4:m='abril'
caso 5:m='mayo'
caso 6:m='junio'
caso 7:m='julio'
caso 8:m='agosto'
caso 9:m='setiembre'
caso 10:m='octubre'
caso 11:m='noviembre'
caso 12:m='diciembre'
fin de segn
segn sea n
caso 1,2,3
e='verano'
caso 4,5,6
e='otoo'
caso 7,8,9
e='invierno'
caso 10,11,12
e='primavera'
fin de segn
sino
m='Nmero Incorrecto'
fin de si
5.-escribir m,e
6.-fin
*Prueba de escritorio
n=5
m='mayo'
e='otoo'
Pgina 70 de 237
Pgina 71 de 237
Pgina 72 de 237
A
300
400
B
200
300
C
100
200
Solucin:
*Anlisis de datos
E:c(colegio)
E:n(nivel)
S:mp(monto a pagar)
*Algoritmo
1.-inicio
2.- c='', n='', mp=0
3.-leer c, n
4.- //proceso
segun sea c
caso'N'
caso 'A'
mp=300
caso 'B'
mp=200
caso 'C'
mp=100
Fin caso
caso'P'
caso 'A'
mp=400
caso 'B'
mp=300
caso 'C'
mp=200
fin de caso
fin caso
//salida de datos
5.-escribir mp
6.-Fin
*Prueba de escritorio
Colegio=P
Nivel= B
mp= 300
Pgina 73 de 237
Pgina 74 de 237
4. Una empresa de carga brinda servicio a todo el continente americano,la tarifa que cobra por
cada tonelada se muestra en el siguiente cuadro: destinos ($/toneladas).
Medios de transporte
norte sur centro.
aereo
30 25 20
maritimo
25 20 15
terrestre
20 15 10
Asimismo si la carga que se transporte es perecible se le incrementa el 7% de pago total de
acuerdo a las toneladas.
Solucin:
*Anlisis de datos
E: mt,dest,peso,tipcarga.
S:pagotot
*Algoritmo
1.-inicio
2.-mt=0,dest=0,tipcarga,peso=0.0,pago=0.0,incre=0.0,pagotot=0.0
3.-leer mt,dest,peso,tipcarga.
4.-segun sea (mt)
caso 1: segun sea(dest)
caso 1:pago=30*peso;
caso 2:pago=25*peso;
caso 3:pago=20*peso:
fin segun sea
caso2:
segun sea (dest)
caso 1:pago=17*peso;
caso 2:pago=19*peso;
caso 3:pago=15*peso;
fin segun sea
caso3:
segun sea (dest)
caso 1:pago=14*peso;
caso 2:pago=10*peso;
caso 3:pago=12*peso;
fin segun sea
fin segun sea
si tipcarga=1 entonces
incre=0.07*pago
sino si tipcarga=2 entonces
incre=0
fin de si
pagotot=pago+incre
5.-escribir pagotot
6.-fin
Pgina 75 de 237
Pgina 76 de 237
5. Un banco realiza el pago de intereses a sus clientes por un deposito a plazo fijo de acuerdo
al siguiente informacion tipo de moneda tiempo de deposito y monto depositado los
intereses seran segun el siguiente cuadro:
Meses soles% dolares%
0-5
0
0
6-12
6
4
13-mas
9
7
Mostrar el interes y el monto total a recibir.
Solucin:
*Anlisis de datos
E:d(dinero),mes,mon
S:inte,total
*Algoritmo
1.-inicio
2.-mes=0,mon=0,d=0.0,inte=0.0,total=0.0
3.leer d(dinero),mes,mon
4.-segun sea (mon)
caso 1:
si mes>0 y mes<=5 entonces
inte=0
sino si mes>6 y mes<=12 entonces
inte=d*0.06
sino
inte=d*0.09
fin de si
caso 2:
si mes>0 y mes<=5 entonces
inte=0
sino si mes>=6 y mes<=12 entonces
inte=d*0.04
sino
inte=d*0.07
fin de si
fin segun sea
5.-total=d+inte
6.-escribir inte,total
7.-fin
*prueba de escritorio
d=8500
mes=12
mon=2(dolares)
inte=340
total=8840
Pgina 77 de 237
Pgina 79 de 237
Plazos(p)Recargo
5%
15%
*Analisis de datos
E:n,tc,tp,mp;
S:mpt
*Algoritmos
1.-Inicio
2.-so=0,mpt=0.0,md=0.0,mr=0.0,n[20]='',tc,tp
3.-leer n,tc,tp,mp
4.-segun sea(tc)
caso 'E':
segun sea (tp)
caso 'C':
md=0.1*mp
caso 'P':
md=0.05*mp
fin de segun
caso 'G':
segun sea (tp)
caso 'E':
md =0.05*mp
caso 'P':
md =0.15*mp
fin de segun
mpt=(mp-md)+mp
5.-escribir mpt
6.-Fin
*Prueba de escritorio
nombre=juan
tip cliente=E
forma de pago=C
monto del pago=200
descuento=20
monto total apagar =180
Pgina 80 de 237
Pgina 82 de 237
Solucin:
*Analisis de datos
E:dd(dia),mm(mes),aa(ao)
S:m(mensaje)
*Algoritmo
1. inicio
2. dd=0,mm=0,aa=0, ndias=0,m='' //variable ndias almacena el nmero de das que tiene el mes.
3. leer dd,mm,aa
4. En caso de mm
caso1:ndias=31
caso2:
si(aa mod 4=0 y aa mod 400=0) o (aa mod 400=0) entonces
ndias=29
sino
ndias=28
fin de si
caso3: ndias=31
caso4: ndias=30
caso5: ndias=31
caso6: ndias=30
caso7: ndias=31
caso8: ndias=31
caso9: ndias=30
caso10: ndias=31
caso11: ndias=30
caso12: ndias=31
fin de caso
si aa>1800 y (mm>0 y mm<=12) y (dd>0 y dd<=ndias)
m='fecha valida'
sino
m='fecha no valida'
fin de si
5.fin
*prueba de escritorio
dia=11
mes=7
ao=1856
m='fecha valida'
Pgina 83 de 237
Pgina 84 de 237
Pgina 85 de 237
Pgina 87 de 237
Pgina 88 de 237
Pgina 89 de 237
10. Dado Elabore un algoritmo que solicite un nmero entero de 1 a 10 y muestre su equivalente
en romano.
Solucin:
*Anlisis de datos
E:ne
S:nr
*Algoritmo
1.-inicio
2.-ne=0,nr="
3.-leer ne
4.-segun sea ne
caso '1'
nr=I
caso '2'
nr=II
caso '3'
nr=III
caso '4'
nr=IV
caso '5'
nr=V
caso '6'
nr=VI
caso '7'
nr=VII
caso '8'
nr=VIII
caso '9'
nr=IX
caso '10'
nr=X
fin de segn
5.-escribir nr
6.-fin
*prueba de escritorio
ne=5
nr=v
Pgina 90 de 237
Pgina 91 de 237
Pgina 92 de 237
S SESION
04
Pgina 93 de 237
Pgina 94 de 237
Pgina 95 de 237
Pgina 96 de 237
Pgina 97 de 237
3.
Disear un algoritmo que permita determinar el promedio, suma de los nmeros pares y
la cantidad de nmeros impares que se encuentran en los diez primeros nmeros.
Solucin:
*Anlisis de datos
E:
S:p(promedio),sp(suma de pares),ci(cantidad de impares),sn=0
*Algoritmo
1.-inicio
2.-p=0.0,sp=0,ci=0,i=0,r=0
3.-para i=1 hasta 10
sn=sn + i
r=residuo(i/2)
si r=0 entonces
sp=sp + i //acumulador
sino
ci=ci + 1 //contador
fin de si
fin de para
p=sn/10
4.-escribir p,sp,ci
5.-fin
*Prueba de Escritorio
1-2-3-4-5-6-7-8-9-10
p=5.5
sp=30
ci=5
Pgina 98 de 237
Pgina 99 de 237
Disee un algoritmo que permita hallar los divisores de un nmero ingresado. Adems,
que se muestre la suma de los divisores y se informe si es un nmero primo y si es un
nmero perfecto (un nmero perfecto es aquel que es igual a la mitad de la suma de
todos sus divisores).
Solucin:
*Anlisis de datos
E: n(nmero)
S: lista de nmeros primos, suma, primo, perfecto
*Algoritmo
1.- Inicio
2.- n=0, i=0, suma=0
3.- leer n
4.- Para i=1 hasta n
Si residuo(n,i)=0 entonces
escribir i
suma = suma + i
Fin de Si
Fin de Para
escribir suma
Si suma=n+1 entonces
escribir n,' es un nmero primo'
Sino
escribir n,' no es un nmero primo'
Fin de Si
Si division(suma,2)=n entonces
escribir n,' es un nmero perfecto'
Sino
escribir n,' no es un nmero perfecto'
Fin de Si
5.- Fin
*Prueba de escritorio
n=28
divisores: 1 2 4 7 14 28
suma = 56
No es un nmero primo
'Es un nmero perfecto
5.
Solucin:
*Analisis de datos
E: n(valor de la base del triangulo)
S: *
*Algoritmo
1. inicio
2. n=0,i=0,j=0
3. Leer n
4. Para i desde 0 hasta n inc de 1 en 1
para j desde 0 hasta i+1 inc de 1 en 1
escribir '*'
fin para
escribir ' '
Fin para
5. fin
*Prueba de escritorio
n=3
*
**
***
Solucin:
*Analisis de datos
E:n(nmero empleados),s(sueldo)
S:sp(sueldo promedio),smy(sueldo mayor),smn(sueldo menor)
Algoritmo
1.-inicio
2.-p=0.0,sp=0.0,smy=0.0,smn=0.0,n=0,s=0.0,i=0
3.-smn=99999
4.-leer n
5.-para i=1,n
leer s //lectura de sueldo
p=p+s //acumulador de sueldo
//sueldo mayor
si s>smy entonces
smy=s
fin de si
//sueldo menor
si s<smn entonces
smn=s
fin de si
fin de para
sp=p/n //promedio
6.-escribir sp,smy,smn
7.-fin
Prueba de Escritorio
n=5
1000,2000,3000,4000,5000
sp=3000
smy=5000
smn=1000
9.
Solucin:
*Anlisis de datos
e:num(numero)
s:f(factorial)
*Algoritmo
1.-inicio
2.-num=0,f=0,i=0
3.-leer num
f=1
4.-para i=1 hasta num
f=f*i
fin de para
5.-escribir f
6.-fin
*Prueba de escritorio
n=5
f=120
S SESION
05
2.
Disear un algoritmo que permita determinar el total a pagar de una compra, el precio
promedio, el precio mayor y la cantidad de compras. Ingresando nombre del producto,
precio y cantidad. El algoritmo preguntara al usuario si desea seguir comprando si/no.
Solucin:
*Anlisis de datos
E:p(producto),pc(precio),c(cantidad),rpta
S:cp(cantidad de compra),pp(precio promedio),pmy(precio mayor),tp(total pg)
*Algoritmo
1.-inicio
2.-p='',pc=0.0,c=0,rpta='',cp=0,pp=0.0,pmy=0.0,tp=0.0,sp=0.0
3.-hacer
cp=cp + 1 //cantidad de productos
leer p,pc,c
sp=sp + pc //acumulador de precios
//precio mayor
si pc>pmy entonces
pmy=pc
fin de si
tp=tp+(pc*c) //acumulador de total a pagar
escribir 'Desea continuar si/no'
leer rpta
mientras rpta='si'
//promedio de precio de producto
pp=sp/cp
4.-escribir cp,pp,pmy,tp
5.-fin
*Prueba de Escritorio
NRO PRODUCTO PRECIO
1
a
10
2
b
20
3
c
30
CANTIDAD
2
4
6
importe a pagar
20
80
180
respuesta
si
si
no
Solucin:
*Anlisis de datos:
E: op,n,ex
S: r
*Algoritmo
1.- Inicio
2.- Mientras op<1 op>3 hacer
n=0,op=0,ex=0,r=0
escribir 'FACTORIAL - POTENCIA'
escribir '1.- Factorial'
escribir '2.- Potencia'
escribir '3.- Salir'
escribir 'Seleccione opcion : '
leer op
Segn sea(op)
caso 1: r=1
leer n
Para i=1 hasta n
r=r*i
Fin de Para
escribir
caso 2: leer n,ex
r = potencia(n,ex)
escrirbir n
caso 3: escribir 'Saliendo del programa'
Fin de Segun Sea
op=0
Fin de Mientras
3.- Fin
*Prueba de escritorio
op=1
n=6
r=720
op=2
n=5
ex=2
r=25
op=3
Solucin:
*Analisis de datos
E:actual,edad
S:nacimiento
*Algoritmo
1.-inicio
2.-leer nacimiento
3.-edad=0,nacimiento=0
4.- mientras actual< nacimiento entonces
edad= actual-nacimiento
fin de mientras
5.-escribir edad
6.-fin
*Prueba de escritorio
nacimiento=1988
edad=24
*Implementacin del algoritmo en JAVA.
package estructuras.repetitivas.while2;
//Paquete de datos e/s de datos por consola
/*
6.- Disear un algoritmo que pide el ao de nacimiento al usuario y calcula la edad del
mismo.
Si el ao de nacimiento introducido es posterior al ao actual por error el programa
volver a pedir el ao de nacimiento correcto.
*/
import JAVA.util.Scanner;
//clase principal
public class Ejercicio6_ER2 {
//metodo principal
public static void main(String args[]){
//declarar variables
int actual, nacimiento, edad;
actual=2012;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Inserte su ao de nacimiento:");
nacimiento=lectura.nextInt();
//proceso de datos
while(actual< nacimiento){
System.out.print("vuelva a insertar su ao de nacimiento:");
nacimiento=lectura.nextInt();
}//fin while
edad= actual-nacimiento;
//salida de datos
System.out.println("Su edad es: "+edad+" aos");
}//Fin del metodo
}//Fin de la clase
Pgina 125 de 237
7.
Solucin:
*Analisis de datos
E:num(numero ingresado)
S:inv(inverso del numero),m(mensaje)
*Algoritmo
1.-inicio
2.-r=0,u=0,inv=0,num=0
3.-leer num
4.-u=num;
hacer mientras(u!=0)
r=u%10
u=u/10
inv=inv*10+r
fin de hacer mientras
si num=inv entonces
m= es capicua
sino
m =no es capicua
fin de si
5.-fin
*Prueba de Escritorio
inv=131
m= es capicua
8.
Solucin:
*Analisis de datos
E:nt(numero de terminos)
S:sumainv(numero de pares invertidos)
*Algoritmo
1.-inicio
2.-nt=0,sumainv=0.0,par=0.0,cont=0.0
3.-leer nt
4.-sumainv=0
par=2
cont=1
mientras cont<=nt
sumainv=sumainv+1/par
par=par+2
cont=cont+1
fin mientras
5.-escribir sumainv
6.-fin
*Prueba de Escritorio
n=3
sumainv=0.9166
Disear un algoritmo que permita determinar las cantidad y la suma de los dgitos que ah
en una cantidad ingresada.
.
Solucin:
*Anlisis de datos
E:c(cantidad)
S:sd(suma de digitos),cd(cantidad de digitos)
*Algoritmo
1.-inicio
2.-c=0,sd=0,dg=0,cd=0
3.-leer c
mientras c>0
dg=residuo(c/10) //digito
sd=sd+dg //suma sde digitos
cd=cd+1
c=entero(c/10) //cantidad actualizada
fin de mientras
4.-escribir sd,cd
5.-fin
*Prueba de Escritorio
Cantidad: 1234
sd=10
cd=4
Disear un algoritmo que permita determinar el digito mayor y menor de una cantidad
ingresada.
Solucin:
*Anlisis de datos
E:c(cantidad)
S:dmy(digito mayor),dmn(digito menor)
*Algoritmo
1.-inicio
2.-c=0,dmy=0,dmn=0,dg=0
3.-leer c
mientras c>0
dg=residuo(c/10) //digito
//digito mayor
si dg>dmy entonces
dmy=dg
fin de si
//digito menor
si dg<dmn entonces
dmn=dg
fin de si
c=entero(c/10) //cantidad actualizada
fin de mientras
4.-escribir dmy,dmn
5.-fin
*Prueba de Escritorio
Cantidad: 4321
dmy=4
dmn=1
S SESION 06
Procedimiento
subalgoritmo
es
que
un
permite
Disear un procedimiento que permita generar una fecha siguiente a la fecha ingresadas
en formato da, mes y ao.
Solucin:
*Anlisis de datos
E:d1,m1,a1
S:fechaActual
procedimiento genfecha(d: entero,m: entero,a: entero)
diamax=0
//proceso de datos
Segn sea m
caso 1:
caso 3:
caso 5:
caso 7:
caso 8:
caso 10:
caso 12:
diamax=31
caso 4:
caso 6:
caso 9:
caso 11:
diamax=30
caso 2:
si((residuo(a/4)==0 y residuo(a/100)!=0) o residuo(a/400)=0) entonces
diamax=29
sino
diamax=28
fin de si
fin de segn
si((d>0 y d<=diamax) y (m>0 y m<13) y (a>0)) entonces
//contempla ao
si d=diamax y m=12 entonces
d=1
m=1
a=a+1
sino
si d=diamax y m<12 entonces
d=1
m=m+1
sino
d=d+1
fin de si
fin de si
fin de si
escribir d,/,m,/,a
}//fin de procedimiento
4.
Disear un procedimiento que permita visualizar las cantidad y la suma de los dgitos
que ah en una cantidad ingresada.
Solucin:
*Anlisis de datos
E:c(cantidad)
S:sd(suma de digitos),cd(cantidad de digitos)
procedimiento digitos(c)
sd=0,cd=0
mientras c>0
dg=residuo(c/10) //digito
sd=sd+dg //suma sde digitos
cd=cd+1
c=entero(c/10) //cantidad actualizada
fin de mientras
escribir sd,cd
fin procedimiento
*Algoritmo
1.-inicio
2.-c=0
3.-leer c
4.-digitos(c)
5.-fin
*Prueba de Escritorio
Cantidad: 123
sd=6
cd=3
Digite un numero entero positivo de tres cifras luego visualice el nuevo formado por sus
cifras extremas y la inversa de dicho numero, mediante procedimentos.
Solucin:
*Analisis de datos
E:num
S:m,n
procedimiento Cambio(entero num)
a=0,b=0,r=0,m=0,n=0
a=entero(num/100)
r=residuo(num/100)
b=residuo(r/10)
m=10*a +b;
n=10*b +a;
escribir 'Numero formado por las cifras extremas',m
escribir 'Numero inverso ',n
fin procedimiento
*Algoritmo
1.-inicio
2.-num=0
3.-leer num
4.-Cambio(num)
5.-fin
*Prueba de escritorio
num=246
m=26
n=62
*Implementacin del algoritmo en JAVA.
package metodos.procedimiento;
/*5.- Digite un numero entero positivo de tres cifras luego visualice el nuevo
formado por sus cifras extremas y la inversa de dicho numero, mediante
procedimentos.
*/
import java.util.Scanner;
//clase principal
public class Ejercicio5_Metodo_Procedimiento {
static Scanner lectura=new Scanner(System.in);
//procedimiento Cambio
static void Cambio(int num){
int a,b,r,m,n;
a=num/100;
r=num%100;
b=r%10;
m=10*a +b;
n=10*b +a;
//salida
System.out.println("Numero formado por las cifras extremas :"+m);
System.out.println("Numero invertidos :"+n);
n=lectura.nextInt();
}//fin del metodo
6.
Solucin:
*Analisis de Datos
E:m,n
S:multiplos
procedimiento Multiplos(n:entero)
i=0
escribir 'Los Multiplos del ',n,'son'
para i desde 0 hasta m
escribir i,'X',n,'=',i*n
fin de para
fin procedimiento
*Algoritmo
1.-inicio
2.-n=0
3.-leer n
4.-multiplos(n)
5.-fin
*Prueba de escritorio
n=3
0*3=0
1*3=3
2*3=6
3*3=9
8.
Disear un procedimiento que permita escribir los numeros pares entre dos numeros de
manera descendente.
Solucin:
*Analisis de datos
E:a(numero inicial),an(numero final)
S:np(numeros pares)
procedimiento pares(xa:entero,xan:entero)
si residuo(an/2)=0 entonces
mientras xan>xa
xan=xan-2
si xan>xa entonces
escribir xan
sino
escribir''
fin de si
fin de mientras
sino
mientras xan>xa
xan=xan-1
si xan>xa entonces
escribir xan
sino
escribir''
fin de si
fin de mientras
fin de procedimiento
*Algoritmo
1.-inicio
2.-a=0,an=0 np=0
3.-leer a,an
4.-pares(a,an)
5.-fin
*Prueba de Escritorio
a=20
an=35
34,32,30,28,26,24,22,
Pgina 148 de 237
9.
Disear un algoritmo que imprima los divisores de un numero ingresado por el usuario.
Solucin:
*Anlisis de datos:
E:n, i
S:d
Procedimiento pdivisores(nx:entero):real
i=0, d=0.0
mientras (i<=nx)
si (nx%i==0) entonces
d=i
fin de si
i=i+1
escribir d
fin de mientras
fin de procedimiento
*Algoritmo:
1.-inicio
2.-n=0
3.-leer n
4.-pdivisores(n)
5.-fin
*Prueba de escritorio:
n=10
d=1
d=2
d=5
d=10
10.
Solucin:
Disear un algoritmo que transforme un nmero introducido por teclado
en notacin decimal a notacin romana. El nmero ser entero positivo
y no exceder de 3000.
*Anlisis de datos
E: n(nmero)
S: el nmero expresado en notacin romana
procedimiento calccifrarom(d1:entero,d2:entero,d3:entero,d4:entero)
i='', j='', k='', h=''
segn sea d1
caso 0
i=''
caso 1
i='M'
caso 2
i='MM'
caso 3
i='MMM'
fin de segn
segn sea d2
caso 0
j=''
caso 1
j='C'
caso 2
j='CC'
caso 3
j='CCC'
caso 4
j='CD'
caso 5
j='D'
caso 6
j='DC'
caso 7
j='DCC'
caso 8
j='DCCC'
caso 9
j='CM'
fin de segn
S SESION07
Las funcin son rutinas que
procesan datos y retornar un
resultado.
Disear las funciones que permita determinar la nota mayor y menor de cuadro nota
ingresadas.
Solucin:
*Anlisis de datos
e:nt1,nt2,nt3
s:nmayor,nmenor
funcion fmayor(xnt1:real,xnt2:real,xnt3:real):real
nmy=0
nmy=xn1
si xn2>nmy entonces
nmy=xnt2
fin de si
si xn3>nmy entonces
nmy=xnt3
fin de si
retornar(nmy)
fin funcion
funcion fmenor(xnt1:real,xnt2:real,xnt3:real):real
nmn=0
nmn=xn1
si xn2<nmn entonces
nmn=xnt2
fin de si
si xn3<nmn entonces
nmn=xnt3
fin de si
retornar(nmn)
fin funcion
*Algoritmo
1.-inicio
2.-nt1=0.0,nt2=0.0,nt3=0.0,p=0.0,nmayor=0.0,nmenor=0.0
3.-leer nt1,nt2,nt3
4.-nmayor=fmayor(nt1,nt2,nt3)
nmenor=fmenor(nt1,nt2,nt3)
5.-escribir nmayor,nmenor
6.-fin
*Prueba de Escritorio
nt1=12
nt2=14
nt3=16
nmayor=16
nmenor=12
3.
Solucin:
*Anlisis de datos
e: n(nmero)
s:m(mensajes)
funcion fcapicua(xu:entero):cadena
r=0,inv=0
xm=''
xnum=xu //almaceno el nmero ingresado para compararlo
mientras(xu!=0)
r=residuo(xu/10)
xu=xu/10
inv=inv*10+r
fin de mientras
si xnum=inv entonces
xm='es capicua'
sino
xm ='no es capicua'
fin de si
retornar(xm)
fin de funcion
*Algoritmo
1.-inicio
2.-n=0,m=''
3.-leer n
4.-m=fcapicua(n)
5.-escribir m
6.-fin
*Prueba de Escritorio
n=131
m='es capicua'
5.
Disear una funcion que permite determinar si una palabra ingresada el palindroma.
Solucin:
*Anlisis de datos
e:palabra
s:m(mensaje)
//funcion fpalindromo
cadena fpalindromo(xpalabra:cadena){
m='',num=0, x=0
x=1
//csantidad de carcteres
num = longitud(xpalabra)
para i=0 hasta num-1
si xpalabra[i]=xpalabra[num-1-i]
x=1
sino
x=2
fin de si
fin de para
si x=2 entonces
m='No es un palindromo'
sino
m='Es un plindromo'
fin de si
returnar(m)
fin de funcion
*Algoritmo
1.-inicio
2.-palabra='',plb=''
3.-leer palabra
4.-plb=fpalindromo(palabra)
5.-escribir plb;
*Prueba de Escritorio
palabra=radar
plb=si es palindromo
6.
Disear una funcion que permita determinar el nombre del da, mediante un nmero
ingresado.
Solucin:
*Analisis de datos
E: n(numero)
S: d(da);
funcion fdia(nx:entero):cadena
nx=0, xd=''
si nx>0 y nx<=7
Segun sea nx
caso 1
xd='Lunes'
caso 2
xd='Martes'
caso 3
xd='Miercoles'
caso 4
xd='Jueves'
caso 5
xd='Viernes'
caso 6
xd='Sabado'
Caso 7
xd='Domingo'
Fin de segun
sino si
escribir "Error el numero ingresado no es valido"
fin si
retornar(xd)
fin de funcin
*Algoritmo
1.-inicio
2.-n=0,dia=''
3.-Leer n
4.-dia=fdia(n)
5.-escribir dia
6.-fin
*Prueba de escritorio
n=5
dia='viernes'
Pgina 169 de 237
8.
Disear una funcin que permita devolver el mayor digito de una cantidad ingresada.
Solucin:
*Anlisis de datos
e:c(cantidad)
s:dmy(digito mayor)
funcion fdmayor(xc:entero):entero
d=0,xdmy=0
mientras xc>0
d=residuo(xc/10)
si d>xdmy entonces
xdmy=d
fin de si
xc=entero(xc/10)
fin de mientras
retornar(xdmy)
fin funcin
*Algoritmo
1.-inicio
2.-c=0,dmy=0
3.-leer c
4.-dmy=fdmayor(c)
5.-escribir dmy
6.-fin
*Prueba de EScritorio
c=124
dmy=4
Solucin:
*Analisis de datos
e:tf(tipo de figura)
s:area
constante real pi=3.1416
funcion fCalArea(tf:entero):real
segun sea tf
caso 1: escribir 'ing. datos del cuadrado'
leer lado
area=lado*lado
caso 2: escribir 'ing. datos del circulo'
leer radio
area=pi*pow(radio,2)
caso 3: escribir 'ing. datos del rectangulo'
leer base,altura
area=base*altura
caso 4: escribir 'ing. datos del triangulo'
leer base,altura
area=base*altura/2
caso 5: escribir 'ing. datos del trapecio'
leer base1,base2,altura
area=((base1+base2)/2)*altura
otro caso: escribir 'Numero incorrecto'
area=0
fin de segun
retornar(area)
fin de funcin
funcion menu ():entero
TipoFigura=0
escribir'calculo de area'
escribir'---------------'
escribir'<1>CUADRADO'
escribir'<2>CIRCULO'
escribir'<3>RECTANGULO'
escribir'<4>TRIANGULO'
escribir'<5>TRAPECIO'
escribir'Ingrese una opcion:'
retornar TipoFigura
fin de funcion
*Algoritmo
1.-inicio
2.-sigue='', tipof=0
3.-hacer
tipof=menu()
escribir area
escribir'desea continuar S/N'
mientras (sigue=='S')
fin de hacer
4.-fin
*Prueba de escritorio
opcion=5
base1=12
base2=14
altura=10
area=130
case 3:
System.out.println("Ing. datos del rectangulo:");
System.out.print("Base=");
base=lectura.nextDouble();
System.out.print("Altura=");
altura=lectura.nextDouble();
area=base*altura;
break;
case 4:
System.out.println("Ing. datos del triangulo:");
System.out.print("Base=");
base=lectura.nextDouble();
System.out.print("Altura=");
altura=lectura.nextDouble();
area=base*altura/2;
break;
case 5:
System.out.println("Ing. datos del trapecio:");
System.out.print("Base1=");
base1=lectura.nextDouble();
System.out.print("Base2=");
base2=lectura.nextDouble();
System.out.print("Altura=");
altura=lectura.nextDouble();
area=((base1+base2)/2)*altura;
break;
default:
System.out.println("Numero incorrecto=");
area=0.0;
break;
}//fin de switch
return area;
}//fin de mtodo
static int menu(){
int TipoFigura=0;
System.out.println("Calculo de area:");
System.out.println("---------------");
System.out.println("<1>CUADRADO");
System.out.println("<2>CIRCULO");
System.out.println("<3>RECTANGULO");
System.out.println("<4>TRIANGULO");
System.out.println("<5>TRAPECIO");
System.out.print("Ingrese una opcion:");
TipoFigura=lectura.nextInt();
return(TipoFigura);
}//fin de mtodo
Solucin:
*Analisis de datos
e:c1(cateto 1),c2(cateto 2)
s:h(hipotenusa),p(perimetro)
funcion fhipotenusa(c1:real,c2:real):real
hip=0.0
hip=sqrt(pow(c1,2)+pow(c2,2))
retornar hip
fin de funcion
funcion fperimetro(c1:real,c2:real,hip:real):real
per=0.0
per=c1+c2+hip
retornar per
fin de funcion
*Algoritmo
1.-inicio
2.-c1=0.0,c2=0.0,hipote=0.0,peri=0.0
3.-leer c1,c2
4.-hipote=fhipotenusa(c1,c2)
peri=fperimetro(c1,c2,hip)
5.-escribir hipote,peri
6.-fin
*Prueba de Escritorio
C1=4
C2=3
Hipote=5
Peri=12
S SESION08
Los
arreglo
nos
permiten
2. Disear un algoritmo que permita almacenar cinco nmeros en el arreglo a y b. Visualizar los
valores del arreglo a y b en forma intercalada al arreglo c.
Solucin:
*Anlisis de datos
E: n(nmero)
S: nmeros intercalados del arreglo a y b en c
*Algoritmo
1.-inicio
2.-n=0,a[5]:0,b[5]:0,c[10]:0,i=0,j=0,r=0,k=0
3.-para i=0 hasta 4
leer n
a[i]=n
fin de para
para j=0 hasta 4
leer n
b[j]=n
fin de para
4.- para k=0 hasta 4
c[k+r]=a[k]
r=r+1
c[k+r]=b[k]
fin de para
5.-escribir
para k=0 hasta 9
escribir c[k]
fin de para
6.-fin
*Prueba de Escritorio
a[10-20-30-40-50]
b[60-70-80-90-100]
c[10-60-20-70-30-80-40-90-50-100]
3. Disear un algoritmo que permita registrar los sueldos de los n empleados en un arreglo de
datos. Visualizar sueldo mayor.
Solucin:
*Anlisis de datos
e:ne(nmero de empleados),sueldo
s:smayor
*Algoritmo
1.-inicio
2.-ne=0,sueldo=0.0,smayor=0.0,i=0
3.-leer ne
asueldo[ne]:0.0
para i=0 hasta ne
leer sueldo
asueldo[i]=sueldo
fin de para
5.-para i=0 hasta ne
si asueldo[i]>smayor entonces
smayor=asueldo[i]
fin de si
fin de para
6.-escribir smayor
7.-fin
*Prueba de Escritorio
ne=3
sueldo1=1000
sueldo2=2000
sueldo2=3000
smayor=3000
Pgina 190 de 237
4.
5.
6.
7.
8.
9.
4.- Disear un arreglo de datos que permita almacenar cinco notas de un alumno visualizando
su promedio.
Solucin:
*Anlisis de datos
E:nota
S:p(promedio)
*Algoritmo
1.-inicio
2.-sn=0.0,p=0.0,n=0,i=0,nota=0.0
3.-leer n
4.-anotas[n]=0.0
para i=1 hasta n
leer nota
anotas[i]=nota
sn=sn+anotas[i]
fin de para
p=sn/n
4.-escribir p
5.-fin
*Prueba de Escritorio
anotas[1]=12
anotas[2]=14
anotas[3]=13
anotas[4]=16
anotas[5]=17
p=14,4
if (c[3]>my){
my=c[3];
pos=3;
}
if (c[4]>my){
my=c[4];
pos=4;
}
//salida de datos
System.out.print("");
System.out.println("PORCENTAJE DE BAISTAS");
for(y=0;y<=4;y++){
System.out.println("En la playa "+(y+1)+" : "+formato.format(c[y])+"%");
} //fin de for
System.out.print("");
System.out.print("Playa con mayor cantidad de baistas:");
System.out.print(v1[pos]);
}//Fin del metodo
}//Fin de la clase
7.- Disear un algoritmo que permita almacenar en un arreglo de datos el nmero de alumnas
por aula y en otro arreglo de datos el nmero de alumnos en orden correlativo. Visualizar el
porcentaje de chicas y chicos, e indicar por medio de un mensaje que sexo predomina.
Solucin:
*Anlisis de datos
E: n(nmero)
S: pa(porcentaje de chicas), pe(porcentaje de chicos), l(sexo predominante)
*Algoritmo
1.-inicio
2.-i=0, j=0, n=0, na=0, ne=0, nt=0.0, pa=0.0, pe=0.0, l='', a[5]:0, b[5]:0
3.-escribir 'NMERO DE ALUMNAS'
para i=0 hasta 4
leer n
a[i]=n
fin de para
escribir 'NMERO DE ALUMNOS'
para j=0 hasta 4
leer n
b[j]=n
fin de para
4.-para i=0 hasta 4
na=na+a[i]
fin de para
para j=0 hasta 4
ne=ne+b[j]
fin de para
si na>ne entonces
l='----*PREDOMINIO FEMENINO'
fin de si
si na<ne entonces
l='----*PREDOMINIO MASCULINO'
fin de si
si na=ne entonces
l='----*'
fin de si
nt=na+ne
pa=100*na/nt
pe=100-pa
5.-escribir pa,pe,l
6.-fin
*Prueba de escritorio
a[5]:6,10,14,12,8
b[5]:30,14,10,13,27
pa=34.72%
pe=65.28%
l='----*PREDOMINIO MASCULINO'
9.- Disear un algoritmo que permita almacenar en dos arreglos de datos cuatro numeros
ingresados y genere un tercer arreglo que almacene la suma de los dos arreglos anteriores.
Solucin:
*Anlisis de datos:
E:n
S:sn
*Algoritmo:
1.-inicio
2.-n=0, a[4]:0, b[4]:0, c[4]:0, i, j, k
3.-para i = 0 hasta 3
leer n
a[i]=n
fin de para
para j = 0 hasta 3
leer n
b[j]=n
fin de para
4.-para k = 0 hasta 3
c[k]=a[k]+b[k]
fin para
5.-fin
*prueba de escritorio:
a[4]= 1-2-3-4
b[4]= 5-6-7-8
c[4]= 6-8-10-12
[ SESION 09
Las matrices de datos permiten
almacenar datos en memoria
mediante el uso de filas y
columnas.
2.
Disear un algoritmo que permita registrar nueve nmeros ingresados en un matriz 3x3.
Visualizar la suma de la diagonal principal, secundaria, suma de datos por filas y columnas.
*Anlisis de datos
E:n(numero)
S:sdp,sds,afila[],sc1,sc2,sc3
*Algoritmo
1.-inicio
2.-n=0,f=0,c=0,mnum[3][3]:0,afila[3]:0,sfila=0,sc1=0,sc2=0,sc3=0,sdp=0,sds=0
3.-para f=0 hasta 2 //fila
para c=0 hasta 2 //columna
leer n
mnum[f,c]=n
fin de para
fin de para
4.-para f=0 hasta 2 //fila
para c=0 hasta 2 //columna
//diagonal principal
si f=c entonces
sdp=sdp+mnum[f][c]
fin de si
//diagonal secundaria
si(f+c)=2 entonces
sds=sds+mnum[f][c]
fin de si
//acumulador de filas
sfila=sfila+mnum[f][c]
fin de para
afila[f]=sfila
sfila=0 //volver a inicializar la variable
//acumulador de columnas
sc1=mnum[f][0]
sc2=mnum[f][1]
sc3=mnum[f][2]
fin de para
5.-escribir sdp,sds,sc1,sc2,sc3,afila[0],afila[1],afila[2]
6.-fin
3. Disear un algoritmo que permita registrar cinco personas dentro de una matriz de datos y
realizar una bsqueda de la persona por el DNI. Visualizando el nombre de la persona si la
bsqueda es satisfactoria sino un mensaje persona no existe.
Solucin:
*Anlisis de datos
E:DNI,nombre,xdni(dni a buscar)
S:xnombre
*Algoritmo
1.-inicio
2.-DNI='',nombre='',xdni='',xnombre='',i=0,adni[5]:'',pos=0
anombre[5]:'',m=''
3.-para i=0 hasta 4
leer DNI,nombre
adni[i]=DNI
anombre[i]=nombre
fin de para
4.-leer xdni
para i=0 hasta 4
si adni[i]=xdni entonces
pos=i //posicin donde se encuentra el elemento buscado
i=5
sino
m='persona no existe'
fin de si
fin de para
5.-escribir
si pos>=0 entonces
escribir anombre [pos]
sino
escribir m
fin de si
6.-fin
// proceso de datos
cout<<endl;
for(f=0;f<2;f++){ // filas
for(c=0;c<2;c++){ // columnas
s[f][c]=a[f][c]+b[f][c];
cout<<"La Matriz generada por la suma es: fila "<<(f+1)<<": "<<s[f][c]<<endl;
s[f][c]=0;
}// fin de for
}//fin de for
getch();
}// fin de procedimiento