Sie sind auf Seite 1von 237

Italo Yaranga Vite

DISEO LOGICO DE
PROGRAMAS

100 ALGORITMOS

Italo Yaranga Vite


ipyv@hotmail.com

JAVA

Pgina 0 de 237

Italo Yaranga Vite

GUIA PRCTICA
ALGORITMOS
ESTRUCTURADOS
JAVA

Pgina 1 de 237

Italo Yaranga Vite

INDICE
PAG
Instalacion de Software a utilizar...................................

SESION 01 :

Procesos

Secuenciales..............................................

SESION 02 :

Estructuras Condicionales............................................

41

SESION 03 :

Estructuras Selectivas

66

SESION 04 :

Estructuras Repetitivas Para........................................ 93

SESION 05 :

Estructuras Repetitivas Mientras...............................

113

SESION 06 :

Mtodo no retorna valor(Procedimiento).............

134

SESION 07 :

Mtodo que retornar un valor(Funcin) ..................

158

SESION 08 :

Arreglos de datos

...................................................

185

SESION 09 :

Matrices de datos ....................................................

210

.............................................

Pgina 2 de 237

Italo Yaranga Vite

Instalacion de Software a utilizar


Para trabajar con JAVA existen varias alternativas , algunas de ellas libres y otras propietarias.
Descargar JDK de la pagina de: http://www.oracle.com
Fig. 1

Fig. 2

Pgina 3 de 237

Italo Yaranga Vite


Fig. 3

Fig. 4

Pgina 4 de 237

Italo Yaranga Vite


Descargar NetBeans en la pagina de: http://www.netbeans.com
Fig. 5

Fig. 6

Pgina 5 de 237

Italo Yaranga Vite

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

Italo Yaranga Vite


SESION 01
PROCESOS SECUENCIALES
1. Disear un algoritmo en donde un vendedor recibe un sueldo mensual ms un 10% de
comisin por ventas, el vendedor desea saber cunto dinero obtendr por las tres ventas
que realiza en el mes. Determinar el pago total que recibir a fin mes el vendedor.
Solucin:
*Anlisis de datos
E: vendedor, sm, vt1, vt2 ,vt3.
S: pt (pago total)
*Algoritmo
1.-Inicio
2.-vendedor='', sm=0.0, vt1=0, vt2=0, vt3=0,pt=0.0,c=0.0
3.-Leer vendedor, sm, vt1, vt2, vt3.
4.-c=(vt1+vt2+vt3)*0.10
pt=sb + c
5.-Escribir pt
6.-fin
*Prueba de escritorio
vendedor='juan'
sm=1800
vt1=200
vt2=400
vt3=600
pt=1920
*Implementacin del algoritmo en JAVA.
package procesos.secuenciales;
/*
Disear un algoritmo en donde un vendedor recibe un sueldo mensual ms un 10%
de comisin por ventas, el vendedor desea saber cunto dinero obtendr por
las tres ventas que realiza en el mes. Determinar el pago total que recibir
a fin mes el vendedor.
*/
//Paquete de datos e/s de datos por consola
import java.util.Scanner;
//clase principal
public class Ejercicio1_PS {
//metodo principal
public static void main(String args[]){
//declarar variables
int vt1,vt2,vt3;
double sm,pt,c;
String vendedor =new String();
Scanner lectura=new Scanner(System.in);

Pgina 7 de 237

Italo Yaranga Vite


//entrada de datos
System.out.print("Nombre de Vendedor:");
vendedor=lectura.next();
System.out.print("Sueldo Mensual:");
sm=lectura.nextDouble();
System.out.print("Venta 1:");
vt1=lectura.nextInt();
System.out.print("Venta 2:");
vt2=lectura.nextInt();
System.out.print("Venta 3:");
vt3=lectura.nextInt();
//proceso de datos
c=(vt1+vt2+vt3)*0.10;
pt=sm+c;
//salida de datos
System.out.println("El sueldo mensual del vendedor es :"+pt);
}//Fin del metodo
}//Fin de la clase
*Ejecucin del programa(Menu Proyecto Run File).

Pgina 8 de 237

Italo Yaranga Vite


2. Disear un algoritmo que permita determinar el sueldo neto de un empleado, al cual se le
realiza un descuento del 13% (por planilla) de su sueldo bruto que se calcula en base a las
horas trabajadas al mes y su tarifa por hora trabajada. Visualizar sueldo bruto, descuento y
sueldo neto a pagar.
Solucin:
*Anlisis de datos
E: e (empleado), ht (horas trabajadas), th (tarifa por hora)
s: sb (sueldo bruto), d(descuento), sn (sueldo neto).
*Algoritmo
1.-inicio
2.-e='', ht=0, th=0.0, sb=0.0, d=0.0, sn=0.0
3.-leer e, ht ,th.
4.-sb=ht * th
d=sb * 0.13
sn=sb - d
5.-escribir sb, d, sn
6.-fin
*Prueba de Escritorio
e=juan
ht=160
th=20
sb=3200
d=416
sn=2784

Pgina 9 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package procesos.secuenciales;
/*
Disear un algoritmo que permita determinar el sueldo neto de un empleado,
al cual se le realiza un descuento del 13% (por planilla) de su sueldo bruto
que se calcula en base a las horas trabajadas al mes y su tarifa por hora
trabajada. Visualizar sueldo bruto, descuento y sueldo neto a pagar.
*/
//Paquete de datos e/s datos por consola
import JAVA.util.Scanner;
//Clase principal
public class Ejercicio2_PS {
//Metodo principal
public static void main(String args[]){
//Declaracion de variales
String e=new String();
double ht,th,sb,d,sn;
Scanner lectura= new Scanner(System.in);
//Entada de datos
System.out.print("Nombre de empleado: ");
e=lectura.next();
System.out.print("Horas trabajadas: ");
ht=lectura.nextDouble();
System.out.print("Tarifa por hora: ");
th=lectura.nextDouble();
//Proceso de datos
sb=ht*th;
d=sb*0.13;
sn=sb-d;
//Salida de datos
System.out.println("Sueldo basico: "+sb);
System.out.println("Descuento: "+d);
System.out.println("Sueldo Neto: "+sn);
}//Fin del metodo
}//Fin de la clase principal

*Ejecucin del programa(Menu Proyecto Run File).

Pgina 10 de 237

Italo Yaranga Vite


3. Disear un algoritmo que permita distribuir una cantidad ingresada en soles y Visualice la
cantidad de billetes de cada denominacin de billetes de 200, 100, 50, 20, 10 y moneda 5,
2 y 1.
Solucin:
*Anlisis de datos
E: cs (cantidad soles)
S: b200, b100, b50, b20, b10, m5.
*Algoritmo
2.-cs=0,b200=0,b100=0,b50=0,b20=0,b10=0,m5=0,r=0, m2=0,m1=0
3.-leer cs
4.-b200=entero(cs/200)
r=residuo(cs/200)
b100=entero(r/100)
r=residuo(r/100)
b50=entero(r/50)
r=residuo(r/50)
b20=entero(r/20)
r=residuo(r/20)
b10=entero(r/10)
r=residuo(r/10)
m5=entero(r/5)
r=residuo(r/5)
m2=entero(r/2)
r=residuo(r/2)
m1=entero(r/1)
5.escribir b200,b100,b50,b20,b10,m5,m2,m1
6.fin
*Prueba de Escritorio
cs=388
b200=1, b100=1, b50=1, b20=1, b10=1, m5=1,m2=1,m1=1

Pgina 11 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package procesos.secuenciales;
/*
Ejercicio1:
Disear un programa que permita distribuir una
cantidad ingresada en soles y Visualice la cantidad
de billetes de cada denominacin de billetes de 200,
100, 50, 20, 10, m5, 2 y 1.
*/
//paquete de e/s de datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio3_PS {
//metodo principal
public static void main(String args[]){
//declarar variables
int cs, b200, b100, b50, b20, b10,m5,m2,m1,r;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Ingresar Cantidad S/.:");
cs=lectura.nextInt();
//proceso de datos
b200=cs/200;
r=cs%200;
b100=r/100;
r=r%100;
b50=r/50;
r=r%50;
b20=r/20;
r=r%20;
b10=r/10;
r=r%10;
m5=r/5;
r=r%5;
m2=r/2;
r=r%2;
m1=r/1;
//salida de datos
System.out.println("Billetes de S/.200:"+b200);
System.out.println("Billetes de S/.100:"+b100);
System.out.println("Billetes de S/.50:"+b50);
System.out.println("Billetes de S/.20:"+b20);
System.out.println("Billetes de S/.10:"+b10);
System.out.println("Monedas de S/. 5:"+m5);
System.out.println("Monedas de S/. 2:"+m2);
System.out.println("Monedas de S/. 1:"+m1);
}//fin de metodo
}//fin de la clase

Pgina 12 de 237

Italo Yaranga Vite


*Ejecucin del programa(Menu Proyecto Run File).

4. Disear un algoritmo que permita obtener la depreciacin acumulada y el valor real de un


automvil para su reventa.
Solucin:
*Anlisis de datos
E: co (coste original), vu (vida til), vrc (valor de recuperacin), ap (aos de propiedad)
S: da (depreciacin acumulada), vr (valor real)
*Algoritmo
1.-inicio
2.-co=0.0, vu=0, vrc=0.0, ap=0, da=0.0, vr=0.0
3.-leer co, vu, vrc, ap
4.-da=ap*(co-vrc)/vu
vr=co-da
5.-escribir da, vr
6.-fin
*Prueba de Escritorio
co =20000
vu =6
vrc =2000
ap =2
da =6000
vr =14000

Pgina 13 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package procesos.secuenciales;
/*
Disear un algoritmo que permita obtener la depreciacin acumulada y el valor
real de un automvil para su reventa.
*/
//paquete e/s datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio4_PS {
//metodo principal
public static void main(String args[]){
//declarar variales
double co,vrc,da,vr;
int vu,ap;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Coste original:");
co=lectura.nextDouble();
System.out.print("Vida util:");
vu=lectura.nextInt();
System.out.print("Valor de recuperacion:");
vrc=lectura.nextDouble();
System.out.print("Aos de propiedad:");
ap=lectura.nextInt();
//proceso de datos
da=ap*(co-vrc)/vu;
vr=co-da;
//salida de datos
System.out.println("Depreciacion acumulada:"+da);
System.out.println("Valor real:"+vr);
}//fin del metodo
}//fin de la clase
*Ejecucin del programa(Menu Proyecto Run File).

Pgina 14 de 237

Italo Yaranga Vite


5. Disear un algoritmo que permita realizar las operaciones aritmeticas basicas como: suma,
resta, mult, divisin, residuo, potencia, raiz cuadrada mediante dos nmeros ingresados.
Solucin:
*Anlisis de datos
E:n1,n2
S:s(suma),r(resta),m(mult),d(div),
rs(residuo),p(potencia),rc(raiz cuadrada)
*Algoritmo
1.-inicio
2.-n1=0.0,n2=0.0,s=0.0,r=0.0,m=0.0,d=0.0,rs=0,p=0,rc=0.0
3.-leer n1,n2
4.-s=n1+n2
r=n1-n2
m=n1*n2
d=n1/n2
rs=residuo(n1/n2)
p=potencia(n1,n2)
rc=raiz(n1)
5.-escribir s,r,m,d,rs,p,rc
6.-fin
*Prueba de Escritorio
n1=10
n2=5
s=15
r=5
m=50
d=2
rs=0
p=100000
rc=3.16228

Pgina 15 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package procesos.secuenciales;
/*
Disear un algoritmo que permita realizar las operaciones aritmeticas basicas
como: suma,resta, mult, divisin, residuo, potencia, raiz cuadrada mediante
dos nmeros ingresados.
*/
//paquete e/s datos por consola
import JAVA.util.Scanner;
import JAVA.math.BigDecimal;
//clase principal
public class Ejercicio5_PS {
//metodo principal
public static void main(String args[]){
//declaracion de variables
//int p;
double n1,n2,s,r,m,d,rc,rs,p;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Numero 1:");
n1=lectura.nextDouble();
System.out.print("Numero 2:");
n2=lectura.nextDouble();
//proceso de datos
s=n1+n2;
r=n1-n2;
m=n1*n2;
d=n1/n2;
rs=n1%n2;
p=Math.pow(n1,n2);
rc=Math.sqrt(n1);
//salida de datos
System.out.println("Suma :"+s);
System.out.println("Resta:"+r);
System.out.println("Multiplicacion:"+m);
System.out.println("Division:"+d);
System.out.println("Residuo:"+r);
System.out.println("Potencia:"+p);
System.out.println("Raiz cuadrada:"+rc);
}//fin del metodo
}//fin de la clase principal

Pgina 16 de 237

Italo Yaranga Vite


*Ejecucin del programa(Menu Proyecto Run File).

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

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package procesos.secuenciales;
/*
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.
*/
//Paquete de cuadros de dialogo
import JAVAx.swing.JOptionPane;
//clase principal
public class Ejercicio6_PS {
//metodo principal
public static void main(String args[]){
//declaracion de variables
int sm,r,l,a,c,dr,s;
//entrada de datos
sm=Integer.parseInt(JOptionPane.showInputDialog("Ingrese sueldo mensual:"));
r=Integer.parseInt(JOptionPane.showInputDialog("Renta:"));
l=Integer.parseInt(JOptionPane.showInputDialog("Luz:"));
a=Integer.parseInt(JOptionPane.showInputDialog("Agua:"));
c=Integer.parseInt(JOptionPane.showInputDialog("Comida:"));
//proceso de datos
s=r+l+a+c;
dr=sm-s;
//salida de datos
JOptionPane.showMessageDialog(null,"Dinero Restante: "+dr);
}//fin del metodo
}//fin de la clase principal

*Ejecucin del programa(Menu Proyecto Run File).

Pgina 18 de 237

Italo Yaranga Vite


7.

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

Italo Yaranga Vite


*Ejecucin del programa(Menu Proyecto Run File).

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

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package procesos.secuenciales;
/*
Cual es el monto a devolver si nos prestan un capital c a una tasa de
interes t%, durante n periodos?
*/
//paquete de cuadro de dialogo
import JAVAx.swing.JOptionPane;
import JAVA.math.BigDecimal;
//clase principal
public class Ejercicio8_PS {
//metodo principal
public static void main (String args[]){
//declaracion de variables
int n;
double c,t,m;
//t=0;
//entrada de datos
c=Double.parseDouble(JOptionPane.showInputDialog("Capital:"));
t=Double.parseDouble(JOptionPane.showInputDialog("Tasa de interes:"));
n=Integer.parseInt(JOptionPane.showInputDialog("Periodo:"));
//proceso de datos
m=c*Math.pow(1+t,n);
//salida de datos
JOptionPane.showMessageDialog(null,"El monto a devolver es:"+m);
}//fin del metodo
}//fin de la clase

*Ejecucin del programa(Menu Proyecto Run File).

Pgina 21 de 237

Italo Yaranga Vite

9.

Disear un algoritmo que permite obtener el tiempo en segundos , si se ingresa el tiempo


en horas, minutos y segundos.(Ejemplo 15hrs 20min 30seg).

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

*Implementacin del algoritmo en JAVA.


package procesos.secuenciales;
/*
Disear un algoritmo que permite obtener el tiempo en segundos , si se ingresa
el tiempo en horas, minutos y segundos.(Ejemplo 15hrs 20min 30seg).
*/
//paquete de cuadro de dialogo
import JAVAx.swing.JOptionPane;
//clase principal
public class Ejercicio9_PS {
//metodo principal
public static void main(String args[]){
//declaracion de variables
double hr,m,s,ts;
//entrada de datos
hr=Integer.parseInt(JOptionPane.showInputDialog("Hora:"));
m=Integer.parseInt(JOptionPane.showInputDialog("Minuto:"));
s=Integer.parseInt(JOptionPane.showInputDialog("Segundo:"));
//proceso de datos
ts=hr*3600+m*60+s;
//salida de datos
JOptionPane.showMessageDialog(null,"Tiempo Obtenido es: "+ ts +" segundos");
}//fin del metodo
}//fin de la clase

Pgina 22 de 237

Italo Yaranga Vite


*Ejecucin del programa(Menu Proyecto Run File).

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

Italo Yaranga Vite


*Ejecucin del programa(Menu Proyecto Run File).

11.

Disear un algoritmo que permita determinar el rea de un circulo, su diametro y la


longitud de la circunferencia al dar como dato su radio.

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

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package procesos.secuenciales;
/*
Ejercicio 11
Desarrolar un algoritmo que permita determinar el rea de un circulo, su diametro y la
longitud de la
circunferencia al dar como dato su radio.
*/
//paquete e/s datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio11_PS {
//metodo principal
public static void main(String args[]){
//declarar variales
int r,d;
double l,a;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Introducir el radio del circulo:");
r=lectura.nextInt();
//proceso de datos
d=2*r;
l=3.1416*r*2;
a=3.1416*r*r;
//salida de datos
System.out.println("El diametro es:"+d);
System.out.println("La longitud de la circunferencia es:"+l);
System.out.println("El area del circulo es:"+a);
}//fin del metodo
}//fin de la clase

*Ejecucin del programa(Menu Proyecto Run File).

Pgina 25 de 237

Italo Yaranga Vite


12. Disear un algortimo en el cual calcule el equivalente en grados Fahrenheit o kelvin de una
temperatura en grados celcius.
Solucin:
*Analisis de datos
e:t(temperaturaen celcius)
s:f(temperatura fahrenheit),k(temperatura en kelvin)
*Algoritmo
1.-inicio
2.-t=0.0,f=0.0,k=0.0
3.-leer t
4.-k=t+273
f=(1.8*t)+32
5.-escribir k,f
6.-fin
*Prueba de escritorio
t=5
f=41
k=278

*Implementacin del algoritmo en JAVA.


package procesos.secuenciales;
/*
12.-Disear un algortimo en el cual calcule el equivalente en grados Fahrenheit
o kelvin de una temperatura en grados celcius.
*/
//paquete e/s datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio12_PS {
//metodo principal
public static void main(String args[]){
//declarar variales
double t,f,k;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Temperatura en Celsius:");
t=lectura.nextInt();
//proceso de datos
k=t+273;
f=(1.8*t)+32;
//salida de datos
System.out.println("Temperatura en Fahrenheit:"+f);
System.out.println("Temperatura en Kelvin:"+k);
}//fin del metodo
}//fin de la clase

Pgina 26 de 237

Italo Yaranga Vite


*Ejecucin del programa(Menu Proyecto Run File).

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

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package procesos.secuenciales;
/*
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.
*/
//paquete e/s datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio13_PS {
//metodo principal
public static void main(String args[]){
//declarar variales
double p1,p2,p3,ef,tf,cf,pp;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Ingrese la nota del primer parcial:");
p1=lectura.nextDouble();
System.out.print("Ingrese la nota del segundo parcial:");
p2=lectura.nextDouble();
System.out.print("Ingrese la nota del tercer parcial:");
p3=lectura.nextDouble();
System.out.print("Ingrese la nota del examen final:");
ef=lectura.nextDouble();
System.out.print("Ingrese la nota del trabajo final:");
tf=lectura.nextDouble();
//proceso de datos
pp=(p1+p2+p3)/3;
cf=0.55*pp+0.3*ef+0.15*tf;
//salida de datos
System.out.println("Los resultados son:");
System.out.println("La calificacion final es:"+cf);
}//fin del metodo
}//fin de la clase

*Ejecucin del programa(Menu Proyecto Run File).

Pgina 28 de 237

Italo Yaranga Vite


14. Disear un algoritmo que permita determinar el tiempo de alcance y el tiempo de encuentro
en minutos de dos vehculos, que se calcula en base a la distancia que existe entre dos
vehculos y sus respectivas velocidades. Visualizar el tiempo de encuentro y el tiempo de
alcance de los dos vehculos.
Solucin:
*Anlisis de datos
e:d(distancia entre los dos vehculos),v1(velocidad del primer vehculo),
v2(velocidad del segundo vehculo),sv(suma de velocidades de los dos vehculos),
dv(diferencia de velocidades de los dos vehculos)
s:te(tiempo de encuentro),ta(tiempo de alcance)
*Algoritmo
1.-inicio
2.-d=0.0,sv=0.0,dv=0.0,v1=0.0,v2=0.0,te=0.0,ta=0.0
3.-leer d,v1,v2
4.-sv=v1+v2
dv=v1-v2
te= d/sv
ta= d/dv
5.-escribir te,ta
6.-fin
*Prueba de Escritorio
d=100
v1=40
v2=20
sv=60
dv=20
te=1.67
ta=5

Pgina 29 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package procesos.secuenciales;
/*
14.- Disear un algoritmo que permita determinar el tiempo de alcance y el tiempo de
encuentro en minutos de dos vehculos, que se calcula en base a la distancia que existe
entre dos vehculos y sus respectivas velocidades. Visualizar el tiempo de
encuentro y el tiempo de alcance de los dos vehculos.
*/
//paquete e/s datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio14_PS {
//metodo principal
public static void main(String args[]){
//declarar variales
double d,sv,dv,v1,v2,te,ta;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("La distancia entre los dos vehiculos es:");
d=lectura.nextDouble();
System.out.print("La velocidad del primer vehiculo es:");
v1=lectura.nextDouble();
System.out.print("La velocidad del segundo vehiculo es:");
v2=lectura.nextDouble();
//proceso de datos
sv=v1+v2;
dv=v1-v2;
te=d/sv;
ta=d/dv;
//salida de datos
System.out.println("El tiempo de encuentro es:"+te+" Minutos");
System.out.println("El tiempo de alcance es:"+ta+" Minutos");
}//fin del metodo
}//fin de la clase

*Ejecucin del programa(Menu Proyecto Run File).

Pgina 30 de 237

Italo Yaranga Vite


15. Disear un algoritmo que permita conocer los datos estadsticos de una asignatura, por lo
tanto, que lea el nmero de desaprobados, aprobados y sobresalientes de una asignatura
y devuelva el tanto por ciento de alumnos que pasaron la asignatura y el tanto por ciento
de desaprobados, aprobados y sobresalientes de la asignatura.
Solucin:
*Anlisis de datos
e:d(cantidad de alumnos desaprobados),a(cantidad de alumnos aprobados),
s(cantidad de alumnos sobresalientes)
s:ta(cantidad total de alumnos),pp(porcentaje de alumnos que pasaron la asignatura),
pd(porcentaje de alumnos desaprobados),pa(porcentaje de alumnos aprobados),
ps(porcentaje de alumnos sobresalientes)
*Algoritmo
1.-inicio
2.-d=0.0,a=0.0,s=0.0,ta=0.0,pp=0.0,pd=0.0,pa=0.0,ps=0.0
3.-leer d,a,s
4.-ta=d+a+s
pp=(a+s)*100/ta
pd=d*100/ta
pa=a*100/ta
ps=s*100/ta
5.-escribir pp,pd,pa,ps
6.-fin
*Prueba de Escritorio
d=5
a=25
s=10
ta=40
pp=87.5
pd=12.5
pa=62.5
ps=25

Pgina 31 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package procesos.secuenciales;
/*
15.- Disear un algoritmo que permita conocer los datos estadsticos de una asignatura,
por lo tanto, que lea el nmero de desaprobados, aprobados y sobresalientes de una
asignatura y devuelva el tanto por ciento de alumnos que pasaron la asignatura y el
tanto por ciento de desaprobados, aprobados y sobresalientes de la asignatura.
*/
//paquete e/s datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio15_PS {
//metodo principal
public static void main(String args[]){
//declarar variales
double d,a,s,ta,pp,pd,pa,ps;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Estadisticas de una asignatura:");
System.out.print("Ingrese cantidad de alumnos desaprobados:");
d=lectura.nextDouble();
System.out.print("Ingrese cantidad de alumnos aprobados:");
a=lectura.nextDouble();
System.out.print("Ingrese cantidad de alumnos sobresalientes:");
s=lectura.nextDouble();
//proceso de datos
ta=d+a+s;
pp=(a+s)*100/ta;
pd=d*100/ta;
pa=a*100/ta;
ps=s*100/ta;
//salida de datos
System.out.print("El:");
System.out.println(pp+" % de alumnos ha pasado la asignatura");
System.out.print("Hay un:");
System.out.println(pd+"% de alumnos desaprobados");
System.out.print("Hay un:");
System.out.println(pa+"% de alumnos aprobados");
System.out.print("Hay un:");
System.out.println(ps+"% de alumnos sobresalientes");
}//fin del metodo
}//fin de la clase

Pgina 32 de 237

Italo Yaranga Vite


*Ejecucin del programa(Menu Proyecto Run File).

16. Disear un algoritmo determinar el valor de la hipotenusa de un triangulo rectngulo


aplicando el teorema de pitagoras. el perimetro y el area que representa conociendo
solamente el valor de su catetos.
Solucin:
*Anlisis de datos
E:at(altura),bs(base)
S:hp(hipotenusa),pt(perimetro),ar(area)
*Algoritmo
1.-inicio
2.-hp=0.0,pt=0.0,ar=0.0,at=0,bs=0
3.-leer at,bs
4.- hp=(at^2+bs^2)^(1/2)
pt=hp+at+bs
ar=(bs*at)/2
5.-mostrar hp,pt,ar
6.-fin
*prueba de escritorio
at=3, bs=4
hp=5
pt=12
ar=6

Pgina 33 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package procesos.secuenciales;
/*
determinar el valor de la hipotenusa de un triangulo rectngulo aplicando el teorema
de pitagoras. el perimetro y el area que representa conociendo solamente el valor de
su catetos
*/
//paquete e/s datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio16_PS {
//metodo principal
public static void main(String args[]){
//declarar variales
double hp,pt,ar;
int at=0,bs=0;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("ingresar la altura del triangulo:");
at=lectura.nextInt();
System.out.print("ingresar la base del triangulo:");
bs=lectura.nextInt();
//proceso de los datos
hp=((at*at)+(bs*bs))/5;
pt=hp+at+bs;
ar=(bs*at)/2;
//salida de datos
System.out.println("la hipotenusa del triangulo es:"+hp);
System.out.println("el perimetro del triangulo es:"+pt);
System.out.println("el area del triangulo es:"+ar);
}//fin del metodo
}//fin de la clase

*Ejecucin del programa(Menu Proyecto Run File).

Pgina 34 de 237

Italo Yaranga Vite


17. Disear un algoritmo que permita calcular las funciones trigonomtricas bsicas como:
seno, coseno y tangente de un ngulo ingresado
Solucin:
*Analisis de datos
E:grad
S:seno(seno),coseno(coseno)
*Algoritmo
1.-inicio
2.-grad=0.0,seno=0.0,coseno=0.0
3.-leer grad
4.-sen=sin(grad*pi/180)
cose=cos(grad*pi/180)
tang=tan(grad*pi/180)
5.-escribir sen,cose,tang
6.-fin
*prueba de escritorio
grad=50
seno=0.76604444
coseno=0.64278760
tangente=1.19175359
*Implementacin del algoritmo en JAVA.
package procesos.secuenciales;
/*
Disear un algoritmo que permita calcular las funciones trigonomtricas bsicas
como: seno, coseno y tangente de un ngulo ingresado
*/
//paquete e/s datos por consola
import JAVA.util.Scanner;
import JAVA.math.BigDecimal;
//clase principal
public class Ejercicio17_PS {
//metodo principal
public static void main(String args[]){
//declarar variales
int grad;
double seno,coseno,tangente;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("ingresar angulo en grados sexagesimales:");
grad=lectura.nextInt();
//proceso de los datos
seno=Math.sin(grad*3.14159265/180);
coseno=Math.cos(grad*3.14159265/180);
tangente=Math.tan(grad*3.14159265/180);
//salida de datos
System.out.println("el seno de "+grad+" es="+seno);
System.out.println("el coseno de "+grad+" es="+coseno);
System.out.println("la tangente de "+grad+" es="+tangente);
}//fin del metodo
}//fin de la clase

Pgina 35 de 237

Italo Yaranga Vite


*Ejecucin del programa.

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

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package procesos.secuenciales;
/*
Digite el radio y la altura de un cilindro y muestre su volmen, rea
lateral y rea total
*/
//paquete e/s datos por consola
import JAVA.util.Scanner;
import JAVA.math.BigDecimal;
//clase principal
public class Ejercicio18_PS {
//metodo principal
public static void main(String args[]){
//declarar variales
double r,h,v,at,al,ab;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Ingrese el radio:");
r=lectura.nextDouble();
System.out.print("Ingrese la altura:");
h=lectura.nextDouble();
//proceso de los datos
ab=3.14*r*r;
al=2*3.14*r*h;
at=al+2*ab;
v=ab*h;
//salida de datos
System.out.println("Area Lateral:"+al);
System.out.println("Area Total:"+at);
System.out.println("Volumen:"+v);
}//fin del metodo
}//fin de la clase

*Ejecucin del programa.

Pgina 37 de 237

Italo Yaranga Vite


19.

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

*Implementacin del algoritmo en JAVA.


package procesos.secuenciales;
/*
19.- Disear un algoritmo que digite un nmero natural de dos cifras y muestre
el promedio de sus cifras.
*/
//paquete e/s datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio19_PS {
//metodo principal
public static void main(String args[]){
//declarar variales
int n=0;
double prom,d,u;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("ingrese el numero:");
n=lectura.nextInt();
//proceso de los datos
d=n/10;
u=n%10;
prom=(d+u)/2;
//salida de datos
System.out.println("promedio de cifras:"+prom);
}//fin del metodo
}//fin de la clase

Pgina 38 de 237

Italo Yaranga Vite


*Ejecucin del programa.

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

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
/*
Disear un algoritmo que dados tres numeros positivos ,calcule la media armonica.
*/
//libreria de e/s de datos por consola
#include <iostream.h> //permite brindar comandosde lectura y escritura
//programa principal
main(){
// declarar variables
double n1,n2,n3,mh; //real
//entrada de datos
cout<<"ingresar nota 1:";cin>>n1;
cout<<"ingresar nota 2:";cin>>n2;
cout<<"ingresar nota 3:";cin>>n3;
//proceso de datos
mh=3/(1/n1+1/n2+1/n3);
//salida de datos
cout<<endl;
cout<<"La media armonica es:"<<mh<<endl;
system("PAUSE");
}//fin de programa

*Ejecucin del programa.

Pgina 40 de 237

Italo Yaranga Vite

S SESION 02
Las condiciones nos permiten
consistenciar, validar mediante
la de dos valores.

Pgina 41 de 237

Italo Yaranga Vite

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

Italo Yaranga Vite


si prom>=10.5 entonces
c='Aprobado'
sino
c='Desprobado'
fin de si
//estado del alumno
si prom<=5 entonces
e='pesimo'
sino si prom<=10 entonces
e='malo'
sino si prom<=15 entonces
e='regular'
sino si prom<=18 entonces
e='bueno'
sino si prom<=20 entonces
e='excelente'
fin de si
5.-escribir prom,c,e,nmy,nmn
6.-fin
*Prueba de Escritorio
nt1=12.0
nt2=13.0
nt3=15.0
prom=13.333
c='Aprobado'
e='Regular'
nmy=15.0
nmn=12.0

Pgina 43 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.condicionales;
/*
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
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio1_EC {
//metodo principal
public static void main(String args[]){
//declarar variables
double nt1,nt2,nt3,prom,nmy,nmn;
String c=new String();
String e=new String();
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Ingresar Nota 1:");
nt1=lectura.nextDouble();
System.out.print("Ingresar Nota 2:");
nt2=lectura.nextDouble();
System.out.print("Ingresar Nota 3:");
nt3=lectura.nextDouble();
//proceso de datos
nmy=nt1;
//nota mayor
if(nt2>nmy){
nmy=nt2;
}
if(nt3>nmy){
nmy=nt3;
}
//nota menor
nmn=nt1;
if(nt2<nmn){
nmn=nt2;
}
if(nt3<nmn){
nmn=nt3;
}

Pgina 44 de 237

Italo Yaranga Vite


//condicin del alumno
prom=(nt1+nt2+nt3)/3;
if(prom>=10.5){
c="Aprobado";
}else{
c="Desaprobado";
}//fin if
//estado del alumno
if(prom<=5){
e="pesimo";
}else if(prom<=10){
e="malo";
}else if(prom<=15){
e="regular";
}else if(prom<=18){
e="bueno";
}else if(prom<=20){
e="excelente";
}//fin if
//salida de datos
System.out.println("El promedio es :"+prom);
System.out.println("La condicin es :"+c);
System.out.println("La estacin es :"+e);
System.out.println("La nota mayor es :"+nmy);
System.out.println("La nota menor es :"+nmn);
}//Fin del metodo
}//Fin de la clase

*Ejecucin del programa.

Pgina 45 de 237

Italo Yaranga Vite


2. El gobierno ha implementado como parte de su programa social, un subsidio familiar bajo la
siguiente reglamentacin.
a) Las familias que tienen hasta 2 hijos reciben S/.120, las que tienen entre 3 y 5 hijos
reciben S/.150.00 y las que tienen 6 hijos o ms reciben S/.180 mensual.
b) Por cada hijo en edad escolar reciben S/.20 adicionales.
c) Si la madre de familia fuese viuda, la familia recibe S/.90 adicionales, si fuese casada
recibe S/.50.
d) Si la familia no tiene seguro social recibe S/.100 adicionales.
Determinar el monto mensual que recibir una familia de acuerdo a su propia realidad familiar.
Solucin:
*Anlisis de datos
E:nh(nhijos),nhe(nhjios escolar),ec(estado civil),ss(seguro social)
S:ms(monto mensual)
*Algoritmo
1.-inicio
2.-nh=0,nhe=0,ec='',ss=.f.,ms=0
3.-leer nh,nhe,ec,ss
4.- si nh>0 y nh<=2 entonces
ms=120
sino si nh<=5 entonces
ms=150
sino si nh>=6 entonces
ms=180
fin de si
//verificar el nro hijos en edad escolar
si nhe<=nh entonces
ms=ms + (nhe * 20) //acumulador
fin de si
//verificar el estado civil
si ec='vuida' entonces
ms=ms + 90 //acumulador
sino si ec='casada' entonces
ms=ms + 50 //acumulador
fin de si
//verificar el seguro social
si ss=.f. entonces
ms=ms + 100 //acumulador
fin de si
//salida de datos
5.-escribir 'el monto mensual que recibe la familia es:',ms
6.-fin

Pgina 46 de 237

Italo Yaranga Vite


*Prueba de Escritorio
nh=4
nhe=2
ec='viuda'
ss=.f.
ms=380

*Implementacin del algoritmo en JAVA.


//librerias de entrada y salida de datos por consola
#include <iostream.h>
#include <conio.h>
//procedimiento principal
main(){
//declarar variables
int nh,nhe,ms;
char ec[20];
bool ss; //variable lgica
//entrada de datos
cout<<"Ingresar nmero Hijos:";cin>>nh;
cout<<"Ingresar nmero de h edad escolar:";cin>>nhe;
cout<<"Ingresar estado civil[viudo,casado]:";cin>>ec;
cout<<"Cuenta con seguro social:";cin>>ss;
//proceso de datos
if(nh>0 && nh<=2){
ms=120;
}else if(nh<=5){
ms=150;
}else{
ms=180;
}
//verificar el nro hijos en edad escolar
if(nhe<=nh){
ms=ms+(nhe * 20); //acumulador
}
//verificar el estado civil
if(strcmp(ec,"viuda")==0){
ms=ms + 90; //acumulador
}else if(strcmp(ec,"casada")==0){
ms=ms + 50; //acumulador
}
//verificar el seguro social
if(ss==false){
ms=ms + 100; //acumulador
}
//salida de datos
cout<<"el monto mensual que recibe la familia es:"<<ms<<endl;
getch();//permite leer un carcter del teclado
}//fin de procedimiento

Pgina 47 de 237

Italo Yaranga Vite


*Ejecucin del programa.

3. Dada la duracin en minutos de una llamada telfonica, mediante un algoritmo; calcular el


costo, considerando:
1.-Hasta tres minutos el costo es 0.50
2.-Por encima de tres minutos es 0.50 ms 0.1 por cada minuto adicional a los tres primeros.
Solucin:
*Anlisis de datos
E: min(minutos consumidos)
S: costo(costo de llamada)
*Algoritmo
1.-inicio
2.-min=0.0,costo=0.0
3.-leer min
4.-Si (min<=3) entonces
costo=0.50
sino
costo=0.1*(min-3)+0.50
fin de si
5.-escribir costo
6.-fin
*Prueba de escritorio
min=18
costo=2

Pgina 48 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.condicionales;
/*
Dada la duracin en minutos de una llamada telfonica, mediante un algoritmo;
calcular el costo, considerando:
1.-Hasta tres minutos el costo es 0.50
2.-Por encima de tres minutos es 0.50 ms 0.1 por cada minuto adicional a
los tres primeros.
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio3_EC {
//metodo principal
public static void main(String args[]){
//declarar variables
double min,costo=0.0; //real
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Ingrese los minutos consumidos:");
min=lectura.nextDouble();
//proceso de datos
if (min<=3) {
costo=0.50;
}else if (min>3) {
costo=0.1*(min-3)+0.50;
}
//salida de datos
System.out.println("El costo de mi llamada es: :"+costo);
}//Fin del metodo
}//Fin de la clase
*Ejecucin del programa.

Pgina 49 de 237

Italo Yaranga Vite


4.
Escribir un algoritmo que lea tres nmeros reales y me diga, si se trata de un triangulo
(La
suma de dos lados cualesquiera debe ser mayor que el tercer lado), y que tipo de
triangulo es
(Equiltero: todos los lados son iguales, Issceles: al menos dos lados son
iguales,Escaleno: no tiene dos lados iguales).
Solucin:
*Anlisis de datos
E: a,b,c (lados del triangulo)
S: m
*Algoritmo
1.- Inicio
2.- a=0.0, b=0.0, c=0.0,m= ' '
3.- leer a,b,c
4.- Si a+b<c o a+c<b o b+c<a entonces
m= 'El tringulo no existe '
Sino
Si a=b y a=c entonces
m= 'El tringulo es equiltero'
Sino
Si a=b o a=c b=c entonces
m=El tringulo es isosceles
Sino
m=El tringulo es escaleno
Fin de Si
Fin de Si
Fin de Si
5.-escribir m
6.- Fin
*Prueba de escritorio
a=2
b=2
c=3
m= El tringulo es isosceles

Pgina 50 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.condicionales;
/*
Escribir un algoritmo que lea tres nmeros reales y me diga, si se trata de un
triangulo (La suma de dos lados cualesquiera debe ser mayor
que el tercer lado), y que tipo de triangulo es (Equiltero: todos los lados
son iguales, Issceles: al menos dos lados son iguales,
Escaleno: no tiene dos lados iguales).
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio4_EC {
//metodo principal
public static void main(String args[]){
//declarar variables
double a,b,c;
String m=new String();
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Ingrese los 3 lados de un triangulo :");
System.out.print("Lado 1 :");
a=lectura.nextDouble();
System.out.print("Lado 2 :");
b=lectura.nextDouble();
System.out.print("Lado 3 :");
c=lectura.nextDouble();
//proceso de datos
if (a+b<c || a+c<b || b+c<a){//condicion necesaria para la existencia de un tringulo
m="No existe el tringulo con los lados ingresados.";
}else{
if(a==b && a==c){//todos los lados iguales resulta equiltero
m="El triangulo es equilatero.";
}else if(a==b || a==c || b==c){//si dos lados son iguales resulta issceles
m="El triangulo es isosceles";
}else{ //sino, es escaleno
m="El triangulo es escaleno";
}//fin del if
}//fin del if
//salida de datos
System.out.println(m);
}//Fin del metodo
}//Fin de la clase
*Ejecucin del programa.

Pgina 51 de 237

Italo Yaranga Vite


5. En una llantera se ha establecido una promocin de las llantas marca "Ponchadas", dicha
promocin consiste en lo siguiente: Si se compran menos de cinco llantas el precio es de
$300 cada una, de $250 si se compran de cinco a 10 y de $200 si se compran mas de 10.
Obtener la cantidad de dinero que una persona tiene que pagar por cada una de las llantas
que compra y la que tiene que pagar por el total de la compra,as como el monto que paga y
el vuelto si lo hubiera.
Solucin:
*Anlisis de datos
e:u(comprador),c(cantidad de llantas),mp(monto a pagar)
s:pu(Precio por llanta),pt(Costo total por llantas),v(Vuelto)
*Algoritmo
1.-inicio
2.-u='',c=0,mp=0.0,v=0.0,pu=0.0,pt=0.0
3.-leer u,c,mp
4.-//proceso de datos
si c<5 entonces//menos de 5 llantas
pu = 300
sino
si c>=5 y c<10 entonces//entre 5 y 10 llantas
pu = 250
sino//mas de 10 llantas
pu = 200
fin de si
fin de si
pt = pu*c
5.-//salida de datos: costo x llanta y el costo total
escribir 'Costo por cada llanta : ',pu
escribir 'Costo total de las llantas:',pt
//segunda lectura de datos : pago de las llantas
leer mp//monto a pagar por las llantas
si mp<pt entonces
cescribir 'El pago no es suficiente. No se realiza la venta'
sino
v = mp-pt
salida final de datos
escribir u,pu,c,pt,mp,v
fin sde si
6.-fin
*Prueba de escritorio
u='juan perez'
c=4
mp=1500
pt=1200
v=3000

Pgina 52 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.condicionales;
/*5.-En una llantera se ha establecido una promocin de las llantas marca "Ponchadas", dicha
promocin consiste en lo siguiente: Si se compran menos de cinco llantas el precio es de $300
cada una, de $250 si se compran de cinco a 10y de $200 si se compran mas de 10. Obtener la
cantidad de dinero que una personatiene que pagar por cada una de las llantas que compra y la
que tiene que pagar por el total de la compra,as como el monto que paga y el vuelto si lo
hubiera.
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio5_EC {
//metodo principal
public static void main(String args[]){
//declarar variables
String u=new String();
int c=0,pu,pt;
double mp=0.0,v;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.println("Llantas Ponchadas");
System.out.print("Ingrese el nombre del comprador :");
u=lectura.nextLine();
System.out.print("Ingrese la cantidad de llantas :");
c=lectura.nextInt();
//proceso de datos
if(c<5){//menos de 5 llantas
pu = 300;
}else{
if (c>=5 && c<10){//entre 5 y 10 llantas
pu = 250;
}else{//mas de 10 llantas
pu = 200;
}
}
pt = pu*c;
//salida de datos: costo x llanta y el costo total
System.out.println("Costo por cada llanta : "+pu);
System.out.println("Costo total de las llantas :"+pt);
//segunda lectura de datos : pago de las llantas
System.out.print("Ingrese el monto a pagar : "); //monto a pagar por las llantas
mp=lectura.nextDouble();
if(mp<pt){
System.out.println("El pago no es suficiente. No se realiza la venta.");
}else{
v = mp-pt;
//salida final de datos
System.out.println("El cliente de nombre "+u+" ha realizado la compra" + " que consiste en : ");
System.out.println("- Precio por llanta : S/"+pu);
System.out.println("- Cantidad de llantas : "+c);
System.out.println("- Pago total : S/"+pt);
System.out.println("- Monto pagado : S/"+mp);
System.out.println("- Vuelto : S/"+v);
}
}//Fin del metodo
}//Fin de la clase
Pgina 53 de 237

Italo Yaranga Vite


*Ejecucin del programa.

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

Italo Yaranga Vite


Solucin:
*Analisis de datos
E:p(peso),t(talla)
S:e(estado);
*Algoritmo
1.-inicio
2.-p=0.0,t=0.0,imc=0.0;
3.-leer p,t ;
4.-imc=p*1/t*1/t
//ingrese al hospital
si imc<16 entonces
e='ingrese hospital'
sino si imc<17 entonces
e= 'infrapeso'
sino si imc<18 entonces
e= 'bajopeso'
sino si imc<26 entonces
e= 'pesonormal'
sino si imc<30 entonces
e= 'sobrepeso(obesidad de gradoI)'
sino si imc<35 entonces
e= 'sobrepeso crnico(obesidad de grado II)'
sino si imc<40 entonces
e= "obesidad premorbida(obesidad de grado III))'
sino si imc=40 entonces
e='obesidad morbica(obesidad de grado IV)'
fin de si
5.-escribir e
6.-fin
*Prueba de Escritorio
p=60
t=1.60
imc=23,4375
PN=PESO NORMAL

Pgina 55 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
#include<iostream.h>
main(){
char e[30];
double p,t,imc;
//entrada de datos
cout<<"calcule su peso"<<endl;
cout<<"peso en kg:";cin>>p;
cout<<"talla en metros:";cin>>t;
//proceso de datos
imc=p*1/t*1/t;
//proceso de datos
if(imc<16){
strcpy(e,"Reuiere Atencion Medica:");
}else if (imc<17){
strcpy(e,"usted tiene infrapeso:");
}else if (imc<18){
strcpy(e,"usted tiene bajo peso");
}else if (imc<26){
strcpy(e,"usted tiene un peso normal(saludable)");
}else if (imc<30){
strcpy(e,"usted tiene sobrepeso(obesidad de gradoI)");
}else if (imc<35){
strcpy(e,"usted tiene sobrepeso crnico(obesidad de grado II)");
}else if (imc<40){
strcpy(e,"usted tiene obesidad premorbida(obesidad de grado III)");
}else if (imc>=40){
strcpy(e,"usted tiene obesidad morbica(obesidad de grado IV)");
}
cout<<endl;
//salaida de datos
cout<<"Los resultados son:"<<e<<endl;
system("PAUSE");
}//fin de programa

*Ejecucin del programa.

Pgina 56 de 237

Italo Yaranga Vite


7. 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:
*Analisis de datos:
E:ingresos del comprador(ing),costo de la casa(costoc)
S:enganche(eng),pago mensual(pagmen)
*Algoritmo
1.-inicio
2.-ing=0.0,costoc=0,eng=0.0,pagmen=0.0
3.-leer ing,costoc
4.-//enganche y pago mensual
si (ing<=8000) entonces
eng=costoc*0.15
pagmen=0.85*costoc/120
sino
eng=costoc*0.30
pagmen=0.70*costoc/84
fin de si
5.-escribir eng,pagmen
6.-fin
*Prueba de escritorio:
ing=8500
costoc=52500
eng=15750
pagmen=437.5

Pgina 57 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
//libreria de e/s de datos por consola
#include <iostream.h> //permite brindar comandosde lectura y escritura
//programa principal
main(){
// declarar variables
int costoc; //entero
double ing,eng,pagmen; //real
//entrada de datos
cout<<"ingresos del comprador:";cin>>ing;
cout<<"ingresar el costo de la casa:";cin>>costoc;
//proceso de datos
//enganche y pago mensual
if (ing<=8000) {
eng=costoc*0.15;
pagmen=0.85*costoc/120;
}else{
eng=costoc*0.30;
pagmen=0.70*costoc/84;
}
//salida de datos
cout<<"EL enganche es:"<<eng<<endl;
cout<<"EL pago mensual es:"<<pagmen<<endl;
system("PAUSE");
}//fin de programa
*Ejecucin del programa.

Pgina 58 de 237

Italo Yaranga Vite


8.
Disear un algoritmo permita ingresar 3 numeros enteros positivos y que determine cual
de ellos es el mayor cual es el menor y cual es el medio.
Solucin:
*Anlisis de datos
E:n1,n2,n3
S:my,mr,md
*Algoritmo
1.-inicio
2.-n1=0,n2=0,n3=0,my=0,mr=0,md=0
3.-escribir n1,n2,n3
4.- //mayor
my=n1
si n2>my entences
my=n2
fin de si
si n3>my entonces
my=n3
//menor
mr=n1
si n2<mr entences
mr=n2
fin de si
si n3<mr entonces
mr=n3
fin si
md=(n1+n2+n3)-(my+mr)
5.-escribir my,mr,md
6.-fin
*prueba de escritorio
n1=12
n2=9
n3=15
my=15
mr=9
md=12

Pgina 59 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
// libreria de entrada y salida de datos por consola
#include <iostream.h>
// programa principal
main (){
// declarar variables
int n1,n2,n3,my,mr,md;
//entrada de datos
cout<<"ingresar numero 1:";cin>>n1;
cout<<"ingresar numero 2:";cin>>n2;
cout<<"ingresar numero3:";cin>>n3;
//proceso de datos
//n mayor
my=n1;
if (n2>my) {
my=n2;
}
if(n3>my) {
my=n3;
}
//menor
mr=n1;
if(n2<mr) {
mr=n2;
}
if(n3<mr){
mr=n3;
}
//medio
md=(n1+n2+n3)-(my+mr);
//salida de datos
cout<<"el mayor es:"<<my<<endl;
cout<<"el menor es:"<<mr<<endl;
cout<<"el numero medio es:"<<md<<endl;
system ("PAUSE");
}

*Ejecucin del programa.

Pgina 60 de 237

Italo Yaranga Vite


9. Un supermercado ha puesto en oferta la venta al por mayor de cierto producto, ofreciendo
un descuento del 15% por la compra de ms de 3 docenas y 10% en caso contrario.
Adems por la compra de ms de 3 docenas se obsequia una unidad del producto por
cada docena en exceso sobre 3. Disee un algoritmo que determine el monto de la
compra, el monto del descuento, el monto a pagar y el nmero de unidades de obsequio
por la compra de cierta cantidad de docenas del producto.
Solucin:
*Anlisis de datos
E: cantdocenas, precio
S: montcompra, montdesc,montpagar, cantuniobs
*Algoritmos
1.- inicio
2.- cantdocenas=0, precio=0.0, montcompra=0.0, montpagar=0.0, cantuniobs=0
3.- leer cantdocenas, precio
4.- montcompra=precio * cantdocenas
si (cantdocenas>3) entonces
montdesc=0.15 * montcompra
cantuniobs=cantdocenas/3
fin de si
si no entonces
montdesc=0.10 * montcompra
cantuniobs=0
fin de si no
5.- montpagar=montcompra-montdesc
6.-imprimir montcompra,montodesc,montpagar,cantuniobs
7.-fin
*Prueba de Escritorio
Ingresar la cantidad de docenas:5
Ingresar el precio por docena:2
--------------------------------El monto de compra es:10
El monto de descuento es:1.5
El monto a pagar es:8.5
Las unidades de obsequio son:1

Pgina 61 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.condicionales;
/*
9.-Un supermercado ha puesto en oferta la venta al por mayor de cierto producto,
ofreciendo un descuento del 15% por la compra de ms de 3 docenas y 10% en caso
contrario. Adems por la compra de ms de 3 docenas se obsequia una unidad del
producto por cada docena en exceso sobre 3. Disee un algoritmo que determine
el monto de la compra, el monto del descuento, el monto a pagar y el nmero de
unidades de obsequio por la compra de cierta cantidad de docenas del producto.
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio9_EC {
//metodo principal
public static void main(String args[]){
//declarar variables
int cantdocenas,cantuniobs;
double precio,montcompra, montpagar,montdesc;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Ingresar la cantidad de docenas:");
cantdocenas=lectura.nextInt();
System.out.print("Ingresar el precio de cada docenas:");
precio=lectura.nextInt();
//proceso de datos
// Determina el monto de la compra
montcompra= precio*cantdocenas;
// Determina el monto del descuento y el obsequio
if (cantdocenas>3){
montdesc=0.15 * montcompra;
cantuniobs=cantdocenas/3;
}else{
montdesc=0.10 * montcompra;
cantuniobs=0;
}
// Determina el monto a pagar
montpagar=montcompra-montdesc;
//salida de datos
System.out.println("El monto de compra es:"+montcompra);
System.out.println("El monto de descuento es:"+montdesc);
System.out.println("El monto a pagar es:"+montpagar);
System.out.println("Las unidades de obsequio son:"+cantuniobs);
}//Fin del metodo
}//Fin de la clase

Pgina 62 de 237

Italo Yaranga Vite


*Ejecucin del programa.

Pgina 63 de 237

Italo Yaranga Vite


10. El promedio de prcticas de un curso se calcula en base a cuatro prcticas calificadas
de las cuales se elimina la nota menor y se promedian las tres notas ms altas. Disee un
algoritmo que determine la nota eliminada y el promedio de prcticas de un estudiante.
Solucin:
*Anlisis de datos
E: nota1,nota2,nota3,nota4
S: notaelim,promedio
*Algoritmos
1.-inicio
2.- nota1=0.0, nota2=0.0, nota3=0.0, nota4=0.0, notaelim=0.0, promedio=0.0,notamenor=0.0
3.- leer nota1,nota2,nota3,nota4
4.- notamenor=nota1
si nota2<notamenor entonces
notamenor=nota2
fin de si
si nota3<notamenor entonces
notamenor=nota3
fin de si
si nota4<notamenor entonces
notamenor=nota4
fin de si
promedio=(nota1 + nota2 + nota3 + nota4 - notamenor)/3
5.- imprimir notamenor, promedio
6.-fin
*Prueba de Escritorio
Ingresar nota1:12
Ingresar nota2:14
Ingresar nota3:16
Ingresar nota4:10
---------------La nota menor es:10
El promedio es:14

Pgina 64 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en Java.
//libreria de entrada y salida de datos por consola
#include<iostream.h>
#include<conio.h>
int main(){
//Declarar variables
double nota1, nota2, nota3, nota4, promedio,notamenor;
//Entrada de datos
cout<<"Ingresar nota1:"; cin>>nota1;
cout<<"Ingresar nota2:"; cin>>nota2;
cout<<"Ingresar nota3:"; cin>>nota3;
cout<<"Ingresar nota4:"; cin>>nota4;
//Proceso de datos
notamenor=nota1;
if (nota2<notamenor){
notamenor=nota2;
}//fin de si
if (nota3<notamenor){
notamenor=nota3;
}//fin de si
if (nota4<notamenor){
notamenor=nota4;
}//fin de si
promedio=(nota1 + nota2 + nota3 + nota4 - notamenor)/3 ;
//Salida de datos
cout<<"------------------------"<<endl;
cout<<"La nota eliminada es:"<<notamenor<<endl;
cout<<"El promedio es:"<<promedio<<endl;
cout<<"------------------------"<<endl;
getch();
}
*Ejecucin del programa.

Pgina 65 de 237

Italo Yaranga Vite

S SESION 03
Selectivas

permiten

evaluar

alternativas una por otra hasta


coincidir y ejecutar una accin.

Pgina 66 de 237

Italo Yaranga Vite


SESION 03

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

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package 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".
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio1_ES {
//metodo principal
public static void main(String args[]){
//declarar variables
double n1,n2,r=0.0,rpta;
char opa; //variable tipo char
String xopa=new String();
String m=new String(); //variable tipo cadena
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Ingresar nmero 1:");
n1=lectura.nextInt();
System.out.print("Ingresar nmero 2:");
n2=lectura.nextInt();
System.out.print("Ingresar operacin aritmetica[+,-,*,/]:");
xopa=lectura.next();
System.out.print("Ingresar respuesta:");
rpta=lectura.nextDouble();
//proceso de datos
opa=xopa.charAt(0); //permite recuperar un carcter
switch(opa){
case '+':
r=n1+n2;break; //sale de la estructura selectiva
case '-':
r=n1-n2;break;
case '*':
r=n1*n2;break;
case '/':
r=n1/n2;break;
}//fin de switch
if(r==rpta){
m="Felicitaciones";
}else{
m="Respuesta Incorrecta";
}
//salida de datos
System.out.println(m);
System.out.print("");
}//Fin del metodo
}//Fin de la clase

Pgina 68 de 237

Italo Yaranga Vite


*Ejecucin del programa.

Pgina 69 de 237

Italo Yaranga Vite

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

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.selectivas;
/*
2.- Disear un algoritmo que permita determinar el nombre del mes del ao
y la estacin del ao, mediante un nmero ingresado.
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio2_ES {
//metodo principal
public static void main(String args[]){
//declarar variables
int n;
String m=new String();
String e=new String();
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Ingresar nmero :");
n=lectura.nextInt();
//proceso de datos
switch(n){
case 1:m="enero";break;
case 2:m="febrero";break;
case 3:m="marzo";break;
case 4:m="abril";break;
case 5:m="mayo";break;
case 6:m="junio";break;
case 7:m="julio";break;
case 8:m="agosto";break;
case 9:m="setiembre";break;
case 10:m="octubre";break;
case 11:m="noviembre";break;
case 12:m="diciembre";break;
}//fin del switch
switch(n){
case 1:
case 2:
case 3:
e="verano";break;
case 4:
case 5:
case 6:
e="otoo";break;
case 7:
case 8:
case 9:
e="invierno";break;
case 10:
case 11:
case 12:
e="primavera";break;
}//fin de switch

Pgina 71 de 237

Italo Yaranga Vite


//salida de datos
System.out.println("El mes del ao es:"+m);
System.out.println("La estacin del ao:"+e);
}//Fin del metodo
}//Fin de la clase
*Ejecucin del programa.

Pgina 72 de 237

Italo Yaranga Vite


3. Disear un algoritmo que determine el importe a pagar el examen de admisin de una
universidad, cuyo valor depende del nivel socioeconmico y el colegio de procedencia.
NIVEL SOCIAL
COLEGIO
Nacional
Particular

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

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.selectivas;
/*
3.- Disear un algoritmo que determine el importe a pagar el examen de admisin
de una universidad, cuyo valor depende del nivel socioeconmico y el colegio
de procedencia.
NIVEL SOCIAL
COLEGIO
A
B
C
Nacional
300
200
100
Particular
400
300
200
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio3_ES {
//metodo principal
public static void main(String args[]){
//declarar variables
String c=new String();
String n=new String();
int mp=0;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Ingresar Tipo de Colegio:");
c=lectura.next();
System.out.print("Ingresar Nivel Social:");
n=lectura.next();
//proceso de datos
switch(c.charAt(0)){
case 'N':
switch(n.charAt(0)){
case 'A':
mp=300;break;
case'B':
mp=200;break;
case'C':
mp=100;break;
}//fin de switch
case 'P':
switch(n.charAt(0)){
case 'A':
mp=400;break;
case 'B':
mp=300;break;
case 'C':
mp=200;break;
}//fin de switch
}//fin de switch
//salida de datos
System.out.println("Monto a Pagar es:"+mp);
}//Fin del metodo
}//Fin de la clase

Pgina 74 de 237

Italo Yaranga Vite


*Ejecucin del programa.

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

Italo Yaranga Vite


*Prueba de escritorio
mt=1,
dest=1
tipcarga=1
peso=50
pagotot=1605
*Implementacin del algoritmo en JAVA.
# include <iostream.h>
//programa principal
main(){
//declaracion de variables
int mt,dest,tipcarga;
double peso,pago,incre,pagotot;
// entrada de datos
cout<<"ingrese medio de transporte aereo=1,maritimo=2,terrestre=3:";cin>>mt;
cout<<"ingresar el destino norte=1,sur=2,centro=3:";cin>>dest;
cout<<"ingresar carga perecible=1 y no perecible=2:";cin>>tipcarga;
cout<<"ingresar poso de la carga:";cin>>peso;
// proceso de datos
switch (mt){
case 1:
switch(dest){
case 1:pago=30*peso;break;
case 2:pago=25*peso;break;
case 3:pago=20*peso;break;
}
case 2:
switch (dest){
case 1:pago=17*peso;break;
case 2:pago=19*peso;break;
case 3:pago=15*peso;break;
}
case 3:
switch (dest){
case 1:pago=14*peso;break;
case 2:pago=10*peso;break;
case 3:pago=12*peso;break;
}
}
//verificacin de la carga
if(tipcarga==1){
incre=0.07*pago;
}else if(tipcarga==2){
incre=0;
}
pagotot=pago+incre;
// salida de datos
cout<<"el pago a realizar es:"<<pagotot<<endl;
system("PAUSE");
}

Pgina 76 de 237

Italo Yaranga Vite


*Ejecucin del programa.

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

Italo Yaranga Vite


*Implementacin del algoritmo in JAVA.
package estructuras.selectivas;
/*
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.
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio5_ES {
//metodo principal
public static void main(String args[]){
//declarar variables
int mes,mon;
double d,inte=0.0,total;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("ingresar dinero a ahorrar:");
d=lectura.nextDouble();
System.out.print("ingresar tiempo de ahorro:");
mes=lectura.nextInt();
System.out.print("ingresar monedas soles=1,dolares=2::");
mon=lectura.nextInt();
//proceso de datos
switch (mon){
case 1:
if(mes>0 && mes<=5){
inte=0;
}else if(mes>6 && mes<=12){
inte=d*0.06;
}else {
inte=d*0.09;
}
break;
case 2 :
if(mes>0 && mes<=5){
inte=0;
}else if(mes>=6 && mes<=12){
inte=d*0.04;
}else{
inte=d*0.07;
}
break;
}
total=d+inte;
//salida de datos
System.out.println("El interes ganado es :"+inte);
System.out.println("El total a recibir es:"+total);
}//Fin del metodo
}//Fin de la clase
Pgina 78 de 237

Italo Yaranga Vite


*Ejecucin del programa.

Pgina 79 de 237

Italo Yaranga Vite


6. Una libreria tiene dos tipos de clientes: estudiantes (E) y publico en general (P).Ademas
ofrece dos tipos de pago:contado(C) y plazos(P).Se pide escribir un programa que pida el
ingreso de:El nombre del cliente,el tipo de cliente,la forma de pago y el monto de pago.
Dependiendo del tipo de pago va a existir un descuento tal como se muestra en el siguiente
cuadro.
Tipo
contado(c)Descuento
Estudiante E
10%
Publico G
5%
Solucin:

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

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.selectivas;
/*
6.-Una libreria tiene dos tipos de clientes: estudiantes (E) y publico
en general (P).Ademas ofrece dos tipos de pago:contado(C) y plazos(P).Se pide
escribir un programa que pida el ingreso de:El nombre del cliente,el tipo de
cliente,la forma de pago y el monto de pago. Dependiendo del tipo de pago va a
existir un descuento o como se muestra en el siguiente cuadro.
tipo
contado(c)Descuento Plazos(p)Recargo
Estudiante
10%
5%
Publico G
5%
15%
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio6_ES {
//metodo principal
public static void main(String args[]){
//declarar variables
int mp;
double mpt=0.0,md=0.0,mr=0.0;
String n=new String();
char tc,tp;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Ingrese el nombre del cliente:");
n=lectura.next();
System.out.print("Ingrese el tipo de cliente[E,P]:");
tc=lectura.next().charAt(0);
System.out.print("Ingrese la forma de pago [C,l]:");
tp=lectura.next().charAt(0);
System.out.print("ingrese el monto del pago:");
mp=lectura.nextInt();
//proceso de datos
switch(tp){
case 'C':
switch(tc){
case 'E':
md=0.1*mp;
break;
case 'P':
md=0.05*mp;
break;
}
case 'l':
switch (tc){
case 'E':
md=0.05*mp;
break;
case 'P':
md=0.15*mp;
break;
}
}
mpt=mp-md;
Pgina 81 de 237

Italo Yaranga Vite


//salida de datos
System.out.println("presenta monto pagado:"+mp);
System.out.println("presenta un descuento de:"+md);
System.out.println("el monto total apagar es:"+mpt);
}//Fin del metodo

*Ejecucin del programa.

Pgina 82 de 237

Italo Yaranga Vite


7. Disee un algoritmo que permita analizar la validez de una fecha, considere que el ao
vlido sea mayo a 1800.

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

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.selectivas;
/*
7.-Disee un algoritmo que permita analizar la validez de una fecha, considere
que el ao vlido sea mayo a 1800.
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio7_ES {
//metodo principal
public static void main(String args[]){
//declarar variables
int DD=0,MM=0,AA=0, NDias=0;
String m=new String();
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Ingrese dia :");
DD=lectura.nextInt();
System.out.print("Ingrese mes :");
MM=lectura.nextInt();
System.out.print("Ingrese ao :");
AA=lectura.nextInt();
//proceso de datos
switch(MM){
case 1 : NDias = 31;break;
case 2 :
if ((AA%4==0 && AA%400==0) || (AA%400==0)){
NDias = 29;
}else{
NDias = 28;
}
break;
case 3 : NDias = 31;break;
case 4 : NDias = 30;break;
case 5 : NDias = 31;break;
case 6 : NDias = 30;break;
case 7 : NDias = 31;break;
case 8 : NDias = 31;break;
case 9 : NDias = 30;break;
case 10 : NDias = 31;break;
case 11 : NDias = 30;break;
case 12 : NDias = 31;break;
}//fin de switch
if (AA > 1800 && (MM>0 && MM<=12) && (DD>0 && DD<=NDias)){
m="Fecha valida";
}else{
m="Fecha no valida";
}
//salida de datos
System.out.println(m);
}//Fin del metodo
}//Fin de la clase

Pgina 84 de 237

Italo Yaranga Vite


*Ejecucin del programa.

Pgina 85 de 237

Italo Yaranga Vite


8. Construir un programa que permita simular el juego en un hipdromo. La idea es mostrar
una lista de 6 caballos:
1.Rocinante
2.Trueno
3.Comanche
4.Gitana
5.Sombra
6.Savage
Se debe elegir ingresando el nmero del caballo. Luego el sistema simula la carrera y muestra
al final el caballo que gano (con un numero al azar).
Si el nmero elegido coincide con el numero ganador se muestra el mensaje de ganaste. Sino
el mensaje de perdedor.
Solucin:
*Anlisis de datos
E:num(numero de caballo)
S:nc(nombre de caballo),mensaje
*Algoritmo
1.-inicio
2.-nc='',mensaje='',num=0,numg=0
3.-escribir 1.Rocinante
2.Trueno
3.Comanche
4.Gitana
5.Sombra
6.Savage
4.-leer num
5.-numg=aleatorio() //genera numero aleatorio
segun sea numg
caso 1:
nc='Rocinante'
caso 2:
nc='Trueno'
caso 3:
nc='Comanche'
caso 4:
nc='Gitana'
caso 5:
nc='Sombra'
caso 6:
nc='Savage'
fin segun sea
si num=numg entonces
mensaje='ganaste'
sino
mensaje='perdedor'
fin de si
6.-escribir nc,mensaje
7.-fin
*Prueba de escritorio
num=3
nc='Comache'
mensaje='ganaste'
Pgina 86 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.selectivas;
/*8.-Construir un programa que permita simular el juego en un hipdromo. La idea
es mostrar una lista de 6 caballos:
1.Rocinante 2.Trueno 3.Comanche 4.Gitana 5.Sombra 6.Savage
Se debe elegir ingresando el nmero del caballo. Luego el sistema simula la
carrera y muestra al final el caballo que gano (con un numero al azar).
Si el nmero elegido coincide con el numero ganador se muestra el mensaje de
ganaste. Sino el mensaje de perdedor.
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
import JAVA.util.Random;
//clase principal
public class Ejercicio8_ES {
//metodo principal
public static void main(String args[]){
//declarar variables
int num,numg;
String nc=new String();
String mensaje=new String();
Random r=new Random();
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.println("Carrera de Caballos");
System.out.println("1.Rocinante");
System.out.println("2.Trueno");
System.out.println("3.Comanche");
System.out.println("4.Gitana");
System.out.println("5.Sombra");
System.out.println("6.Savage");
System.out.print("Ingrese el numero del caballo:");
num=lectura.nextInt();
numg=r.nextInt(6);
//proceso de datos
switch(numg){
case 1:nc="Rocinante";break;
case 2:nc="Trueno";break;
case 3:nc="Comache";break;
case 4:nc="Gitana";break;
case 5:nc="Sombra";break;
case 6:nc="Savage";break;
}//fin de switch
if(num==numg){
mensaje="ganaste";
}else{
mensaje="perdedor";
}
//salida de datos
System.out.println("Caballo ganador:"+nc);
System.out.println("Resultado:"+mensaje);
}//Fin del metodo
}//Fin de la clase

Pgina 87 de 237

Italo Yaranga Vite


*Ejecucin del programa.

9. Dados como datos la categoria y sueldo de una trabajador, calcule el aumento


correspondiente teniendo en cuenta la siguiente tabla,imprimir la categoria del trabajador y el
nuevo sueldo.
Solucin:
*Analisis de datos
E:c(caterogia),s(sueldo)
S:ns(nuevo sueldo),m(mensaje)
*Algoritmo
1.-inicio
2.-c=0,s=0.0,ns=0.0,m=''
3.-leer c,s
4.- segun sea
caso 1:
m='primera categoria'
ns=s+0.15*s
caso 2:
m='segunda categoria'
ns=s+0.10*s
caso 3:
m='tercera categoria'
ns=s+0.08*s
caso 4:
m='cuarta categoria'
ns=s+0.07*s
otro caso
m='no existe esa categoria'
fin de segun
5.-escribir ns,m
6.-fin
*Prueba de Escritorio
c=1
s=5000
ns=5750
m='primera categoria'

Pgina 88 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.selectivas;
/*
9.-Dados como datos la categoria y sueldo de una trabajador, calcule el aumento
correspondiente teniendo en cuenta la siguiente tabla,imprimir la categoria del
trabajador y el nuevo sueldo.
Solucin:
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
import JAVA.util.Random;
//clase principal
public class Ejercicio9_ES {
//metodo principal
public static void main(String args[]){
//declarar variables
int c;
double s,ns=0.0;
String m=new String();
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("introduce la categoria en la que se encuentra [1-4]:");
c=lectura.nextInt();
System.out.print("ingresa tu sueldo mensual: ");
s=lectura.nextInt();
//proceso de datos
switch(c){
case 1:
m="primera categoria";
ns=s+s*0.15;
break;
case 2:
m="segunda categoria";
ns=s+s*0.10;
break;
case 3:
m="tercera categoria";
ns=s+s*0.08;
break;
case 4:
m="cuarta categoria";
ns=s+s*0.07;
break;
default:
m="Ingreso mal la categoria";
break;
}//fin de switch
//salida de datos
System.out.println("Tu nuevo sueldo es:"+ns);
System.out.println("pertenece a la "+m);
}//Fin del metodo
}//Fin de la clase

Pgina 89 de 237

Italo Yaranga Vite


*Ejecucin del programa.

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

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
#include<iostream.h>
#include<conio.h>
//procedimiento principal
int main() {
//declara variables
int ne;
char nr[20];
//entrada de datos
cout<<"ingresar numero entero :";cin>>ne;
//proceso de datos
switch(ne){
case 1:
strcpy(nr,"I");
break;
case 2:
strcpy(nr,"II");
break;
case 3:
strcpy(nr,"III");
break;
case 4:
strcpy(nr,"IV");
break;
case 5:
strcpy(nr,"V");
break;
case 6:
strcpy(nr,"VI");
break;
case 7:
strcpy(nr,"VII");
break;
case 8:
strcpy(nr,"VIII");
break;
case 9:
strcpy(nr,"IX");
break;
case 10:
strcpy(nr,"X");
break;
}//fin de switch
//salida de datos
cout<<"el numero romano es:"<<nr;
getch();//permite leer un caracter del teclado
}//fin de procedimiento

Pgina 91 de 237

Italo Yaranga Vite


*Ejecucin del programa.

Pgina 92 de 237

Italo Yaranga Vite

S SESION

04

Para o desde permite generear


un ciclo de repetiticiones
mediante valores definidos.

Pgina 93 de 237

Italo Yaranga Vite


SESION 04
ESTRUCTURAS REPETITIVAS CON VALORES DEFINIDOS
1. Disear un algoritmo que permita generar una tabla de multiplicar mediante un nmero
ingresado. Visualizar la suma de los resultados.
Solucin:
*Anlisis de datos
E: n (nmero)
S: resultados,sr(suma de resultados)
*Algoritmo
1.-inicio
2.-n=0,r=0,i=0
3.-leer n
4.-para i=1 hasta 12
r=n * i
sr=sr + r
escribir n,'*',i,'=',r
fin de para
5.-escribir sr
6.-fin
*Prueba de escritorio
n=5
5 * 1 =5
5 * 2 =10
5 * 11=55
.
.
5 * 12=60
La suma de los reusltados son:390

Pgina 94 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.repetitivas.for1;
/*
1.Disear un algoritmo que permita generar una tabla de multiplicar
mediante un nmero ingresado.
Visualizar la suma de sus resultados.
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio1_ER1 {
//metodo principal
public static void main(String args[]){
//declarar variables
int n,r,i,sr=0;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Ingresar Nmero:");
n=lectura.nextInt();
//proceso de datos
for(i=1;i<=12;i++){
r=n * i;
sr=sr+r; //suma de resultados
//salida de datos
System.out.println(n+"*"+i+"="+r);
}//fin de for
//salida de datos
System.out.println("La suma de resultados es:"+sr);
}//Fin del metodo
}//Fin de la clase
*Ejecucin del programa.

Pgina 95 de 237

Italo Yaranga Vite


2. Disear un algoritmo que permita al final de un curso saber cul ha sido el alumno de
primer grado con mejor promedio. Se sabe que este ao entraron 3 y que en primer
grado tiene tres asignaturas. Visualizar el nombre del alumno con su promedio mayor.
Solucin:
*Anlisis de datos
E: nombre, asignatura
S: xnom, xpmayor
*Algoritmo
1.-Inicio
2.-nombre='', asignatura=0.0, xnom='', promedio=0.0, i=0, j=0, sn=0.0, xpmayor=0.0
3.-Para i=1 hasta 3 //alumno
leer nombre
para j=1 hasta 3 //notas
leer asignatura
sn=sn + asignatura
fin de para
promedio=sn/3
si promedio>xpmayor entonces
xnom=nombre
xpmayor=promedio
fin de si
promedio=0.0
sn=0.0
fin de para
4.-Escribir xnom,xpmayor
5.-Fin
*Prueba de escritorio
Alumno1:'juan'
as1=12
as2=13
as1=14
promedio =13
Alumno2:'jose'
as1=10
as2=12
as1=14
promedio =12
Alumno3:'julio'
as1=14
as2=16
as1=13
promedio =14.3
--------------Alumno ='julio'
Promedio =14.3

Pgina 96 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.repetitivas.for1;
/*
2. Disear un algoritmo que permita al final de un curso saber cul ha sido el
alumno de primer grado con mejor promedio. Se sabe que este ao entraron 3 y que
en primer grado tiene tres asignaturas. Visualizar el nombre del alumno con su
promedio mayor.
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio2_ER1 {
//metodo principal
public static void main(String args[]){
//declarar variables
int n,i,j;
String nombre=new String();
String xnom=new String();
double asignatura,promedio,sn=0.0,xpmayor=0.0;
Scanner lectura=new Scanner(System.in);
//proceso de datos
for(i=1;i<=3;i++){ //alumno
//entrada de datos
System.out.print("Ingresar nombre del alumno:");
nombre=lectura.next();
for(j=1;j<=3;j++){ //notas
System.out.print("Ingresar Asignatura:");
asignatura=lectura.nextDouble();
sn=sn + asignatura;
}//fin for
promedio=sn/3;
if(promedio>xpmayor){
xnom=nombre;
xpmayor=promedio;
}
sn=0.0;//inicializa la varialble
System.out.println("Su promedio es:"+promedio);
}//fin for
//salida de datos
System.out.println("Alumno:"+xnom);
System.out.println("El promedio mayor es:"+xpmayor);
}//Fin del metodo
}//Fin de la clase

Pgina 97 de 237

Italo Yaranga Vite


*Ejecucin del programa.

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

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.repetitivas.for1;
/*
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.
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio3_ER1 {
//metodo principal
public static void main(String args[]){
//declarar variables
int sn=0,i,r,sp=0,ci=0;
double p;
Scanner lectura=new Scanner(System.in);
//proceso de datos
for(i=1;i<=10;i++){
sn=sn+i;
r=i%2;
if(r==0){
sp=sp+i; //acumulador
}else{
ci=ci+1; //contador
}//fin if
}//fin for
p=sn/10;
//salida de datos
System.out.println("El promedio es:"+p);
System.out.println("La suma de n pares es:"+sp);
System.out.println("La cantidad de n impares es:"+ci);
}//Fin del metodo
}//Fin de la clase

*Ejecucin del programa.

Pgina 99 de 237

Italo Yaranga Vite


4.

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

Pgina 100 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.repetitivas.for1;
/*
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.
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio4_ER1 {
//metodo principal
public static void main(String args[]){
//declarar variables
int i,n,suma=0;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Ingrese un numero : ");
n=lectura.nextInt();
System.out.println("Los divisores de "+n+" son :");
//proceso de datos
for (i=1;i<=n;i++){//inicio del for
if (n%i==0){//condicion para verificar si i es divisor de n (residuo igual a 0)
System.out.print(i+" ");
suma+=i;
}//suma de divisores con acumulador
}//fin del for
//salida de datos : suma de divisores
System.out.println("");
System.out.println("La suma de los divisores es "+suma);
//condiconal para saber si es un numero primo
if (suma == n+1){
System.out.println("Es un numero primo.");
}else{
System.out.println("No es un numero primo.");
}
//condicional para saber si un numero es perfecto
if(suma/2==n){
System.out.println("Es un numero perfecto.");
}else{
System.out.println("No es un numero perfecto.");
}
}//Fin del metodo
}//Fin de la clase

Pgina 101 de 237

Italo Yaranga Vite

*Ejecucin del programa.

5.

Elabore un algoritmo que lea un valor N y que imprima un triangulo de asteriscos.

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

Pgina 102 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.repetitivas.for1;
/*
1.Disear un algoritmo que permita generar una tabla de multiplicar
mediante un nmero ingresado.
Visualizar la suma de sus resultados.
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio5_ER1 {
//metodo principal
public static void main(String args[]){
//declarar variables
int n,i,j;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Ingrese el numero de asteriscos que va a tener la base del
triangulo:");
n=lectura.nextInt();
//proceso de datos
for(i=0;i<n;i++){
for(j=0;j<i+1;j++){
System.out.print("*");
}
System.out.println("");
}
}//Fin del metodo
}//Fin de la clase

*Ejecucin del programa.

Pgina 103 de 237

Italo Yaranga Vite


6.

Disear un algoritmo que pemrita ingresar cinco notas de un alumno. Visualizar el


promedio de notas, cantidad de notas aprobadas y cantidad de notas desaprobadas.

Nota:La nota aprobatoria es mayor que diez.


Solucin:
*Analisis de datos
E:nota
S:pn(promedio de notas),cna(cantidad notas aprobados),
cnd(cantidad de notas desaprobadas)
*Algoritmo
1.-inicio
2.-nota=0.0,pn=0.0,cna=0,cnd=0,i=0,sn=0.0
3.-para i =1 hasta 5
leer nota
sn=sn + nota //acumulador
si nota>10 entonces
cna=cna+1 //contador
sino
cnd=cnd+1 //contador
fin de si
fin de para
pn=sn/5
4.-escribir pn,cna,cnd
5.-fin
*Prueba de escritorio
nota1=12
nota2=9
nota3=13
nota4=10
nota5=11
pn=11
cna=3
cnd=2

Pgina 104 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.repetitivas.for1;
/*
Disear un algoritmo que pemrita ingresar cinco notas de un alumno. Visualizar
el promedio de notas, cantidad de notas aprobadas y cantidad de notas desaprobadas.
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio6_ER1 {
//metodo principal
public static void main(String args[]){
//declarar variables
double nota=0.0,pn=0.0,sn=0.0;
int cna=0,cnd=0,i=0;
Scanner lectura=new Scanner(System.in);
//proceso de datos
for(i=1;i<=5;i++){
//entrada de datos
System.out.print("Ingresar Nota "+i+":");
nota=lectura.nextDouble();
sn=sn+nota; //acumulador
if(nota>10){
cna=cna+1; //contador
}else{
cnd=cnd+1; //contador
}//fin if
}//fin for
pn=sn/5;
//salida de datos
System.out.println("Resultados Finales son:");
System.out.println("Promedio de notas:"+pn);
System.out.println("Cantidad de notas aprobadas:"+cna);
System.out.println("Cantidad de notas desaprobadas:"+cnd);
}//Fin del metodo
}//Fin de la clase

*Ejecucin del programa.

Pgina 105 de 237

Italo Yaranga Vite


7.

Disear un algoritmo que permita visualizar el sueldo Promedio,Mayor y Menor de los n


empleados.

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

Pgina 106 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.repetitivas.for1;
/*
Disear un algoritmo que permita visualizar el sueldo Promedio,Mayor
y Menor de los n empleados.
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio7_ER1 {
//metodo principal
public static void main(String args[]){
//declarar variables
double p=0.0,sp=0.0,smy=0.0,smn=0.0,s=0.0;
int n,i;
Scanner lectura=new Scanner(System.in);
smn=99999;
//entrada de datos
System.out.print("Ingresar Numero de empleados:");
n=lectura.nextInt();
//proceso de datos
for(i=1;i<=n;i++){
System.out.print("Ingresar Sueldo "+i+":");
s=lectura.nextDouble();
p=p+s; //acumulador de sueldo
//sueldo mayor
if(s>smy){
smy=s;
}
//sueldo menor
if(s<smn){
smn=s;
}
}//fin for
sp=p/n; //promedio
//salida de datos
System.out.println("Sueldo promedio :"+sp);
System.out.println("Sueldo mayor :"+smy);
System.out.println("Sueldo menor :"+smn);
}//Fin del metodo
}//Fin de la clase
*Ejecucin del programa.

Pgina 107 de 237

Italo Yaranga Vite


8.

Disear un algoritmo que permita permita calcular la suma,suma de cuadrados de los N


primeros nmeros naturales.
Solucin:
*Anlisis de datos
e:numnat(numeros naturales)
s:suma,sc(suma de cuadrados),scb(suma de cubos)
*Algoritmo
1.-inicio
2.-numnat=0,suma=0,sc=0.0,scb=0.0,i=0
3.-leer numnat
4.-para i=1 hasta numnat
suma=suma+i
sc=sc+cuadrado(i)
scb=scb+cubo(i)
fin de para
5.-escribir suma,sc,scb
6.-fin
*Prueba de escritorio
numnat=3
suma=3
sc=14
scb=36
*Implementacin del algoritmo en JAVA.
package estructuras.repetitivas.for1;
/*
8.- Disear un algoritmo que permita permita calcular la suma,suma de cuadrados
de los N primeros nmeros naturales.
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
import JAVA.math.BigInteger;
//clase principal
public class Ejercicio8_ER1 {
//metodo principal
public static void main(String args[]){
//declarar variables
int numnat=0,suma=0,i=0;
double sc=0.0,scb=0.0;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Ingresar Nmero:");
numnat=lectura.nextInt();
//proceso de datos
for(i=1;i<=numnat;i++){
suma=suma+i;
sc=sc+Math.pow(i,2);//cuadrado
scb=scb+(Math.pow(i,2)*i);//cubo
}

Pgina 108 de 237

Italo Yaranga Vite


//salida de datos
System.out.println("La suma es:"+suma);
System.out.println("La suma de cuadrados es:"+sc);
System.out.println("La suma de cubos es:"+scb);
}//Fin del metodo
}//Fin de la clase
*Ejecucin del programa.

9.

Disear un algoritmo que permita calcular el factorial de un nmeros ingresado.

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

Pgina 109 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.repetitivas.for1;
/*
9.- Disear un algoritmo que permita calcular el factorial de un nmeros
ingresado.
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio9_ER1 {
//metodo principal
public static void main(String args[]){
//declarar variables
int num=0,f=0,i=0;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Ingresar Nmero:");
num=lectura.nextInt();
//proceso de datos
f=1;
for(i=1;i<=num;i++){
f=f*i;
}//fin for
//salida de datos
System.out.println("el factorial de "+num+" es: "+f);
}//Fin del metodo
}//Fin de la clase

*Ejecucin del programa.

Pgina 110 de 237

Italo Yaranga Vite


10.

Disear un algoritmo permita visualizar el promedio,la nota mayor y menor de n notas


generadas a la azar.
Solucin:
*Algoritmo
1.-inicio
2.-nt=0,pnt=0.0,i=0,nota=0.0,ntmy=0.0,ntmn=0.0,snt=0.0
3.-leer nt
4.-ntmn=99
para i=1 hasta nt
nota=aleatorio()
snt=snt+nota
si nota>ntmy entonces
ntmy=nota
fin de si
si nota<ntmn entonces
ntmn=nota
fin de si
fin de para
pnt=snt/nt
5.-escribir pnt,ntmy,ntmn
6.-fin
*Implementacin del algoritmo en JAVA.
package estructuras.repetitivas.for1;
/*
10.-Disear un algoritmo permita visualizar el promedio,la nota mayor y menor
de n notas generadas a la azar.
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
import JAVA.util.Random;
//clase principal
public class Ejercicio10_ER1 {
//metodo principal
public static void main(String args[]){
//declarar variables
int nt,i;
double pnt=0.0,nota=0.0,ntmy=0.0,ntmn=0.0,snt=0.0;
Scanner lectura=new Scanner(System.in);
Random r=new Random();
//entrada de datos
System.out.print("Cantidad de notas a procesar:");
nt=lectura.nextInt();
ntmn=99;
//proceso de datos
for(i=1;i<=nt;i++){
nota=r.nextInt(20);
System.out.println("Nota :"+i+":"+nota);
snt=snt+nota;
if(nota>ntmy){
ntmy=nota;
}
if(nota<ntmn){
ntmn=nota;
}
}
Pgina 111 de 237

Italo Yaranga Vite


pnt=snt/nt;
//salida de datos
System.out.println("Promedio de notas :"+pnt);
System.out.println("Nota mayor :"+ntmy);
System.out.println("Nota menor :"+ntmn);
}//Fin del metodo
}//Fin de la clase

*Ejecucin del programa.

Pgina 112 de 237

Italo Yaranga Vite

S SESION

05

Mientras, Permite realizar un


ciclo de repetiticiones mediante
unas candicin.

Pgina 113 de 237

Italo Yaranga Vite


SESION 05
ESTRUCTURAS REPETITIVAS CONDICIONALES
1. Disear un algoritmo que permita invertir una cantidad ingresada.
Solucin:
*Anlisis de datos
E:c(cantidad)
S:ci(cantidad invertida)
*Algoritmo
1.-inicio
2.-c=0,ci=0,dg=0
3.-leer c
mientras c>0
dg=residuo(c/10) //digito
ci=(ci * 10) + dg //cantidad invertida
c=entero(c/10) //cantidad actualizada
fin de mientras
4.-escribir ci
5.-fin
*Prueba de Escritorio
Cantidad: 123
Invertir la cantidad Ingresada: 321

*Implementacin del algoritmo en JAVA.


package estructuras.repetitivas.while2;
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio1_ER2 {
//metodo principal
public static void main(String args[]){
//declarar variables
int c=0,ci=0,dg=0;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Ingresar cantidad:");
c=lectura.nextInt();
//proceso de datos
while(c>0){
dg=c%10;
ci=(ci*10)+dg;
c=c/10;
}//fin de while
//salida de datos
System.out.println("Cantidad Invertida :"+ci);
}//Fin del metodo
}//Fin de la clase

Pgina 114 de 237

Italo Yaranga Vite


*Ejecucin del programa.

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

Cantidad de productos:3, Promedio Precio : 20, Precio mayor:30, Total a Pagar:280

Pgina 115 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.repetitivas.while2;
/*
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.
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio2_ER2 {
//metodo principal
public static void main(String args[]){
//declarar variables
String p=new String();
String rpta=new String();
double pc=0.0,sp=0.0,pp=0.0,pmy=0.0,tp=0.0;
int c=0,cp=0;
Scanner lectura=new Scanner(System.in);
//proceso de datos
do{
cp=cp+1; //cantidad de productos
System.out.print("Ingresar producto :");
p=lectura.next();
System.out.print("Ingresar precio :");
pc=lectura.nextDouble();
System.out.print("Ingresar cantidad :");
c=lectura.nextInt();
sp=sp+pc; //acumulador de precios
if(pc>pmy){
pmy=pc;
}
tp=tp+(pc*c); //acumulador de total a pagar
System.out.print("Desea seguir comprando [si/no]:");
rpta=lectura.next();
}while(rpta.equalsIgnoreCase("si"));
pp=sp/cp;
//salida de datos
System.out.println("Cantidad de Productos :"+cp);
System.out.println("Precio promedio :"+pp);
System.out.println("Precio mayor :"+pmy);
System.out.println("Total a pagar :"+tp);
}//Fin del metodo
}//Fin de la clase

Pgina 116 de 237

Italo Yaranga Vite


*Ejecucin del programa.

3. Disee un programa que genere nmeros aleatorios en el intervalo de -1000 a 1000


hasta obtener un nmero par menor que 500 pero mayor que -500. Cuntos nmeros
fueron necesarios generar y cules fueron el mayor y el menor nmero generados?.
Solucin:
*Analisis de Datos
E: Ninguna
S:conta,mayor,menor
*Algoritmo
1.- inicio
2.-conta=0,mayor=0,menor=0,numero=0
3.-hacer
numero = random(-1000,1000)// numero random desde -1000 hasta 1000
escribir 'Numero ' conta : numero
conta++
si (numero > mayor)
mayor = numero;
sino(numero < menor)
menor = numero;
fin de si
mientras(numero%2!=0 o numero <= -500 o numero >= 500)
4.- escribir conta,mayor,menor
5.-fin
*Prueba de escritorio
conta=? //este resultado sera de acuerdo a las cantidades aleatorias
mayor=? //este sera el numero aleatorio mayor
menor=? // este sera un numero aleatorio menor

Pgina 117 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.repetitivas.while2;
/*
3.- Disee un programa que genere nmeros aleatorios en el intervalo de 1000 a 5000
hasta obtener un nmero par menor que 1000 pero mayor que 5000. Cuntos nmeros
fueron necesarios generar y cules fueron el mayor y el menor nmero generados?.
*/
//Paquete de datos e/s de datos por consola
import java.util.Scanner;
import java.util.Random;
//clase principal
public class Ejercicio3_ER2 {
//metodo principal
public static void main(String args[]){
//declarar variables
int numero=0, mayor=0,menor=0,conta=0;
Scanner lectura=new Scanner(System.in);
Random r=new Random();
menor=9999999;
//proceso de datos
do{
numero =r.nextInt(5000);
System.out.println("Numero :"+conta+" : "+numero);
conta=conta+1;
if(numero > mayor){
mayor = numero;
}
if(numero < menor){
menor = numero;
}
}while(numero>1000 && numero<5000);
//Salida de datos
System.out.println("Cantidad de numeros generados :"+conta);
System.out.println("Mayor numero generado :"+mayor);
System.out.println("Menor numero generado :"+menor);
}//Fin del metodo
}//Fin de la clase

*Ejecucin del programa.

Pgina 118 de 237

Italo Yaranga Vite


4. Disear un algoritmo que permita ingresar para los N alumnos de un aula de clases la
edad y su sexo (M F). Al final se deber mostrar el porcentaje de varones y mujeres,
as como los promedios de edad de cada gnero.
Solucin:
*Anlisis de datos
E: s,edad,rpta
S: i,porv,porm,promm,promv
*Algoritmo
1.- Inicio
2.- s='',promm=0.0, promv=0.0, porm=0.0, porv=0.0, rpta=1, edad=0, i=0, summ=0.0,
nrom=0, sumv=0.0, nrov=0
3.- Mientras rpta!=0 hacer
i=i+1
leer s,edad
Si s='m' s='M' entonces
sumv=sumv+edad
nrov=nrov+1
Sino
summ=summ+edad
nrom=nrom+1
Fin de Si
leer rpta
Fin de Mientras
porv=division(nrov*100,i)
porm=division(nrom*100,i)
promm=division(summ,nrom)
promv=division(sumv,nrov)
4.- escribir i,porv,porm,promm,promv
5.- Fin
*Prueba de escritorio
s='M'
edad=20
rpta=1
s='M'
edad=12
rpta=1
s='F'
edad=17
rpta=1
s='M'
edad=14
rpta=1
s='F'
edad=16
rpta=0
i=5
porv=60
porm=40
promv=13
promm=16

Pgina 119 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.repetitivas.while2;
/*
4.- Disear un algoritmo que permita ingresar para los N alumnos de un aula de
clases la edad y su sexo (M F). Al final se deber mostrar el porcentaje de
varones y mujeres, as como los promedios de edad de cada gnero.
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
//clase principal
public class Ejercicio4_ER2 {
//metodo principal
public static void main(String args[]){
//declarar variables
char s;
double promm=0.0,promv=0.0,porm=0.0,porv=0.0;
int rpta=1,edad,i=0;
//inicializacion de sumadores y contadores
int summ=0,nrom=0;
int sumv=0,nrov=0;
Scanner lectura=new Scanner(System.in);
//proceso de datos
while(rpta!=0){//si el usuario decide ingresar ms datos
i=i+1;
System.out.println("Alumno Nro :"+i);
System.out.print("Sexo (M-F) :");
s=lectura.next().charAt(0);
System.out.print("Edad :");
edad=lectura.nextInt();
if (s=='M' || s=='m'){//si ingres masculino
sumv=sumv+edad;//acumulador de la edad de los varones
nrov=nrov+1;
}//nro de varones aumenta en 1
else{//si ingres masculino
summ=summ+edad;//acumulador de la edad de los varones
nrom=nrom+1;
}//nro de varones aumenta en 1
System.out.print("Otro alumno? si(1)/no(0):");
rpta=lectura.nextInt();
}//fin del while
//procesando los datos ingresados
porv=(nrov*100)/i;
porm=(nrom*100)/i;
promm=summ/nrom;
promv=sumv/nrov;
//salida de datos
System.out.println("Informe final de alumnos :");
System.out.println("Total de alumnos : "+i);
System.out.println("Porcentaje de varones : "+porv+"%");
System.out.println("Promedio de edad :"+promv);
System.out.println("Porcentaje de mujeres : "+porm+"%");
System.out.println("Promedio de edad : "+promm);
}//Fin del metodo
}//Fin de la clase

Pgina 120 de 237

Italo Yaranga Vite


*Ejecucin del programa.

Pgina 121 de 237

Italo Yaranga Vite


5.

Disear un algoritmo que permita hallar el factorial o una potencia de un nmero n


ingresado por teclado. Manejar el programa mediante un men.

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

Pgina 122 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.repetitivas.while2;
/*
5.-Disear un algoritmo que permita hallar el factorial o una potencia de
un nmero n ingresado por teclado. Manejar el programa mediante un men.
*/
//Paquete de datos e/s de datos por consola
import JAVA.util.Scanner;
import JAVA.math.BigInteger;
//clase principal
public class Ejercicio5_ER2 {
//metodo principal
public static void main(String args[]){
//declarar variables
int n=0,r,ex,op=0;
Scanner lectura=new Scanner(System.in);
//mientras que maneja un men
while (op<1 || op>3){//mientras la variable op tenga un valor no vlido para el men
System.out.println("FACTORIAL - POTENCIA:");
System.out.println("1.- Factorial:");
System.out.println("2.- Potencia:");
System.out.println("3.- Salir:");
System.out.print("Seleccione opcion : ");
op=lectura.nextInt();
//segun sea la opcion elegida
switch(op){
case 1: //opcion 1: hallar el factorial
r=1;
System.out.print("Ingrese un numero : ");
n=lectura.nextInt();
for (int i=1;i<=n;i++){
r=r*i;
}
System.out.print("El factorial de : "+n+" es "+r);
break;
case 2: //opcion 2: potencia
System.out.print("Ingrese un numero como base :");
n=lectura.nextInt();
System.out.print("Ingrese un exponente :");
ex=lectura.nextInt();
r=(int)Math.pow(n,ex);
System.out.print("elevado a la :"+ex+" es igual a "+r);
break;
case 3:
System.exit(0);
break;//opcion 3: no hace nada (solo sale del programa)
}//fin del segun sea
op=0;//para que vuelva a aparecer el menu
System.out.println("");
}//fin while
}//Fin del metodo
}//Fin de la clase

Pgina 123 de 237

Italo Yaranga Vite


*Ejecucin del programa.

Pgina 124 de 237

Italo Yaranga Vite


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.

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

Italo Yaranga Vite


*Ejecucin del programa.

7.

Disear un algoritmo que mediante un numero entero positivo ingresado,se desea


averiguar si es capicua(abc=cba).

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

Pgina 126 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.repetitivas.while2;
//Paquete de datos e/s de datos por consola
/*
7.- Disear un algoritmo que mediante un numero entero positivo ingresado,se
desea averiguar si es capicua(abc=cba).
*/
import JAVA.util.Scanner;
//clase principal
public class Ejercicio7_ER2 {
//metodo principal
public static void main(String args[]){
//declarar variables
int num,inv=0,r,u;
String m=new String();
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Escriba el numero que desea saber si es capicua:");
num=lectura.nextInt();
u=num;//reserbamos num para compararlo con el inverso
//proceso de datos
do{
r=u%10;
u=u/10;
inv=inv*10+r;//calculo del inverso
}while(u!=0);//limite
//si el numero es igual a su inverso son capicuas
if(inv==num){
m="es capicua";
}else{
m="no es capicua";
}
//salida de datos
System.out.println("inv:"+inv);
System.out.println("El numero es:"+m);
}//Fin del metodo
}//Fin de la clase

*Ejecucin del programa

Pgina 127 de 237

Italo Yaranga Vite

8.

Disear un algoritmo que permita determinar la suma N primeros trminos de la siguiente


serie.
1/2+1/4+1/6+..

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

Pgina 128 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.repetitivas.while2;
//Paquete de datos e/s de datos por consola
/*
8.-Disear un algoritmo que permita determinar la suma N primeros trminos
de la siguiente serie.
*/
import JAVA.util.Scanner;
//clase principal
public class Ejercicio8_ER2 {
//metodo principal
public static void main(String args[]){
//declarar variables
int nt=0;
double sumainv=0.0,par=2,cont=0;
String m=new String();
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Ingresar N primeros numeros:");
nt=lectura.nextInt();
//proceso de datos
par=2;
cont=1;
while(cont<=nt){
sumainv=sumainv+(1/par);
par=par+2;
cont=cont+1;
}//fin de while
//salida de datos
System.out.println("La suma es:"+sumainv);
}//Fin del metodo
}//Fin de la clase

*Ejecucin del programa

Pgina 129 de 237

Italo Yaranga Vite


9.

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

Pgina 130 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.repetitivas.while2;
//Paquete de datos e/s de datos por consola
/*
8.-Disear un algoritmo que permita determinar la suma N primeros trminos
de la siguiente serie.
*/
import JAVA.util.Scanner;
//clase principal
public class Ejercicio9_ER2 {
//metodo principal
public static void main(String args[]){
//declarar variables
int c=0,cd=0,sd=0,dg=0;
String m=new String();
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Ingresar cantidad:");
c=lectura.nextInt();
//proceso de datos
while(c>0){
dg=c%10;//digito
sd=sd+dg;//suma de digitos
cd=cd+1;//cantidad de digitos
c=c/10;//actualiza el la cantida ingresada
}//fin de while
//salida de datos
System.out.println("Suma de digitos:"+sd);
System.out.println("Cantidad de digitos:"+cd);
}//Fin del metodo
}//Fin de la clase
*Ejecucin del programa

Pgina 131 de 237

Italo Yaranga Vite


10.

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

Pgina 132 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package estructuras.repetitivas.while2;
//Paquete de datos e/s de datos por consola
/*
10.- Disear un algoritmo que permita determinar el digito mayor y menor de una
cantidad
ingresada.
*/
import JAVA.util.Scanner;
//clase principal
public class Ejercicio10_ER2 {
//metodo principal
public static void main(String args[]){
//declarar variables
int c=0,dmy=0,dmn=0,dg=0;
String m=new String();
dmn=99;//inicializa a un valor mayor
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Ingresar cantidad:");
c=lectura.nextInt();
//proceso de datos
while(c>0){
dg=c%10;//digito
//digito mayor
if(dg>dmy){
dmy=dg;//cantidad de digitos
}
//digito menor
if(dg<dmn){
dmn=dg;//cantidad de digitos
}
c=c/10;
}//fin while
//salida de datos
System.out.println("Digito mayor es:"+dmy);
System.out.println("Digito menor es:"+dmn);
}//Fin del metodo
}//Fin de la clase

*Ejecucin del programa

Pgina 133 de 237

Italo Yaranga Vite

S SESION 06
Procedimiento
subalgoritmo

es
que

un
permite

realizar una tarea que se utilizar


con frecuencia.

Pgina 134 de 237

Italo Yaranga Vite


SESION 06
SUBALGORITMO PROCEDIMIENTOS
1. Disear un algoritmo que permite realizar una simulacin de un cajero automtico.
* El usuario realiza un depsito con una cantidad entera.
* El usuario realiza un retiro menor igual que el monto depositado.
* El monto retirado tiene que ser mltiplo de 20
* El algoritmo finaliza hasta que el saldo sea 0 y mayor igual a 20
Solucin:
*Anlisis de datos
E:dp(deposito),mr(monto a retirar)
S:s(saldo)
//procedimiento deposito
procedimiento deposito(xdp entero)
mr=0,r=0
mientras xdp>0
escribir 'Ingresar monto a retirar:'
leer mr;
r=residuo(mr/20); //multiplo de 20
si r=0 y mr<=xdp entonces
xdp=xdp-mr;
//salida de datos
escribir 'Saldo:',xdp;
sino
escribir 'Valor Incorrecto:',xdp;
fin de si
fin de mientras
xdp=0
fin de procedimiento
*Algoritmo
1.-inicio
2.-dp=0
3.-leer dp
4.-deposito(dp) //invocar al procedimiento
5.-fin
*Prueba de Escritorio
dp=860
mr=900
mr=400
mr=150
mr=460
xdp=0

Pgina 135 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package procedimiento.metodos;
/*
1.- Disear un algoritmo que permite realizar una simulacin de un cajero
automtico.
* El usuario realiza un depsito con una cantidad entera.
* El usuario realiza un retiro menor igual que el monto depositado.
* El monto retirado tiene que ser mltiplo de 20
* El algoritmo finaliza hasta que el saldo sea 0 y mayor igual a 20
*/
import JAVA.util.Scanner;
//clase principal
public class Ejercicio1_Procedimiento {
static Scanner lectura=new Scanner(System.in);
//metodo tipo procedimiento deposito
static void deposito(int xdp){
int mr=0,r=0;
while(xdp>0){
System.out.print("Ingresar monto a retirar:");
mr=lectura.nextInt();
r=mr%20; //multiplo de 20
if(r==0 && mr<=xdp){
xdp=xdp-mr;
//salida de datos
System.out.println("Saldo:"+xdp);
}else{
System.out.println("Valor Incorrecto::"+xdp);
}//fin if
}//fin while
xdp=0;//inicializa la variable
}//fin del metodo
//metodo principal
public static void main(String args[]){
//declarar variables
int dp,dp2;
//entrada de datos
System.out.print("Ingresar deposito 1:");
dp=lectura.nextInt();
//invocar al metodo tipo procedimiento deposito
deposito(dp);
System.out.print("------------------");
System.out.print("Ingresar deposito 2:");
//invocar al metodo tipo procedimiento deposito
dp2=lectura.nextInt();
deposito(dp2);
}//fin del metodo principal
}//Fin de la clase

Pgina 136 de 237

Italo Yaranga Vite


*Ejecucin del programa.

Pgina 137 de 237

Italo Yaranga Vite


2.

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

Pgina 138 de 237

Italo Yaranga Vite


*Algoritmos
1.-inicio
2.-d1=0,m1=0,a1=0
3.-leer d1,m1,a1
4.- si((d1>0 y d1<=31) y (m1>0 y m1<=12) y a1>0) entonces
genfecha(d1,m1,a1)
sino
escribir La fecha Ingresada es Incorrecta
fin de si
5.-fin
*Prueba de Escritorio
d=9
m=9
a=2012
fechaactual=10/9/2012

*Implementacin del algoritmo en JAVA.


package metodos.procedimiento;
/*
2.-Disear un procedimiento que permita generar una fecha siguiente a la fecha
ingresadas en formato da, mes y ao.
*/
import java.util.Scanner;
//clase principal
public class Ejercicio2_Metodo_Procedimiento {
static Scanner lectura=new Scanner(System.in);
//procedimiento genfecha
static void genfecha(int d,int m,int a){
int diamax=0;
//proceso de datos
switch(m){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
diamax=31;
break;
case 4:
case 6:
case 9:
case 11:
diamax=30;
break;
case 2:
if(((a%4)==0 && (a%100)!=0) || (a%400)==0){
diamax=29;
}else{
diamax=28;
}
break;

Pgina 139 de 237

Italo Yaranga Vite


}//fin switch
if((d>0 && d<=diamax) && (m>0 && m<13) && (a>0)){
//contempla ao
if(d==diamax && m==12){
d=1;
m=1;
a++;
}
else{
if(d==diamax && m<12){
d=1;
m++;
}
else{
d++;
}
}
}
System.out.println(d+"/"+m+"/"+a);
}//fin de procedimiento
//metodo principal
public static void main(String args[]){
//declarar variables
int d1,m1,a1;
//entrada de datos
System.out.print("Ingresa el dia :");
d1=lectura.nextInt();
System.out.print("Ingresa el mes :");
m1=lectura.nextInt();
System.out.print("Ingresa el ao :");
a1=lectura.nextInt();
//invocar al procedimiento
if((d1>0 && d1<=31) && (m1>0 && m1<=12) && a1>0){
genfecha(d1,m1,a1);
}else{
System.out.println("La fecha Ingresada es Incorrecta:");
}//fin if
}//fin del metodo principal
}//Fin de la clase
*Ejecucin del programa.

Pgina 140 de 237

Italo Yaranga Vite


3. Disear un procedimiento que permita generar la tabla de multiplicar de un nmero
ingresado.
Solucin:
*Anlisis de datos
e:n(numero)
s:resultados
procedimiento mtabla(xn:entero)
r=0,i=0
para i=1 hasta 12
r=n * i
escribir n,'*',i,'=',r
fin de para
fin procedimiento
*Algoritmo
1.-inicio
2.-n=0
3.-leer n
4.-mtabla(n)
5.-fin
*Prueba de Escritorio
n=5
5*1=5
5*2=10
.
5*12=60
*Implementacin del algoritmo en JAVA.
package metodos.procedimiento;
/*3.- Disear un procedimiento que permita generar la tabla de multiplicar de
un nmero ingresado.
*/
import JAVA.util.Scanner;
//clase principal
public class Ejercicio3_Metodo_Procedimiento {
static Scanner lectura=new Scanner(System.in);
//mtodo tipo procedimiento mtabla
static void mtabla(int xn){
int r=0,i=0;
for(i=1;i<=12;i++){
r=xn * i;
System.out.println(xn+"*"+i+"="+r);
} //fin for
}//fin proc
//metodo principal
public static void main(String args[]){
//declarar variables
int n=0,n1=0;
//entrada de datos
System.out.print("Ingresar Numero 1:");
n=lectura.nextInt();
//invocar al procedimiento
mtabla(n);
System.out.print("Ingresar Numero 2:");
n1=lectura.nextInt();
mtabla(n1);
}//fin del metodo principal
}//Fin de la clase
Pgina 141 de 237

Italo Yaranga Vite


*Ejecucin del programa

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

Pgina 142 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package procedimiento.metodos;
/*
4.-Disear un procedimiento que permita visualizar las cantidad y la suma de los
dgitos que ah en una cantidad ingresada.
*/
import JAVA.util.Scanner;
//clase principal
public class Ejercicio4_Procedimiento {
static Scanner lectura=new Scanner(System.in);
//mtodo de procedimiento deposito
static void digitos(int c){
int sd=0,cd=0,dg=0;
while(c>0){
dg=c%10; //digito
sd=sd+dg; //suma sde digitos
cd=cd+1;
c=c/10; //cantidad actualizada
}
System.out.println("La suma de los digitos es:"+sd);
System.out.println("La cantidad de digitos es:"+cd);
}//fin de programa
//metodo principal
public static void main(String args[]){
int c;
//entrada de datos
System.out.print("Ingresar numero:");
c=lectura.nextInt();
//invocar al mtodo tipo procedimiento
digitos(c);
}//fin del metodo principal
}//Fin de la clase

*Ejecucin del programa

Pgina 143 de 237

Italo Yaranga Vite


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.

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

Pgina 144 de 237

Italo Yaranga Vite


//metodo principal
public static void main(String args[]){
//declarar variables
int n;
//entrada de datos
System.out.print("Ingrese un numero de tres cifras entero:");
n=lectura.nextInt();
//invocar al metodo
Cambio(n);
}//fin del metodo principal
}//Fin de la clase
*Ejecucin del programa

6.

Mediante el uso de procedimientos , muestre los primeros multiplos de n.

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

Pgina 145 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package procedimiento.metodos;
/*
Mediante el uso de procedimientos , muestre los primeros multiplos de n
*/
import JAVA.util.Scanner;
//clase principal
public class Ejercicio6_Procedimiento {
static Scanner lectura=new Scanner(System.in);
//mtodo de procedimiento deposito
static void Multiplos(int n){
int i;
System.out.println("Los Multiplos del "+n+" son:");
for(i=0;i<=n;i++){
System.out.println(i+"*"+n+"="+i*n);
}
}//fin mtodo
//metodo principal
public static void main(String args[]){
//declarar variables
int m,n;
//entrada dedatos
System.out.print("Ingrese el numero :");
n=lectura.nextInt();
Multiplos(n);
}//fin del metodo principal
}//Fin de la clase
*Ejecucin del programa

Pgina 146 de 237

Italo Yaranga Vite


7.
Disear un procedimientos que encuentre los divisores comunes de dos nmeros.
Solucin:
*Analisis de Datos
E:a,b
S:(divisores comunes)
procedimiento Divisores(entero a,entero b){
i=1
mientras(i<=a y i<=b) entonces
si(residuo(a/i)=0 y residuo(b/i)=0) entonces
escribir ' ',i
fin de si
i=i+1
fin de mientras
fin procedimento
*Algoritmo
1.-inicio
2.-a=0,b=0
3.-leer a,b
4.-escrbir'los divisores comunes son'
5.-divisores(a,b)
6.-fin
*Prueba Escritorio
a=25
b=60
1
5
*Implementacin del algoritmo en JAVA.
package procedimiento.metodos;
/*
7.- Disear un procedimientos que encuentre los divisores comunes de dos nmeros.
*/
import JAVA.util.Scanner;
//clase principal
public class Ejercicio7_Procedimiento {
static Scanner lectura=new Scanner(System.in);
//mtodo tipo procedimiento Divisores
static void Divisores(int a,int b){
int i=1;
while(i<=a && i<=b){
if(a%i==0 && b%i==0){
System.out.println(" "+i);
}//fin if
i=i+1;
}//fin while
}//fin procedimento
//metodo principal
public static void main(String args[]){
//declarar variables
int a,b;
//entrada dedatos
System.out.println("Ingrese el numero :");
System.out.print("Ingrese el primer numero :");
a=lectura.nextInt();
System.out.print("Ingrese el segundo numero :");
Pgina 147 de 237
b=lectura.nextInt();
System.out.println("Los divisores comunes son ");
Divisores(a,b);

Italo Yaranga Vite

*Ejecucin del programa

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

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package metodos.procedimiento;
/*
Disear un procedimiento que permita escribir los numeros pares entre dos
numeros de manera descendente.
*/
import java.util.Scanner;
//clase principal
public class Ejercicio8_Metodo_Procedimiento {
static Scanner lectura=new Scanner(System.in);
//procedimiento secuencia
static void secuencia(int xa,int xan){
while (xan>xa){
if (xan%2==0){
xan=xan-2;
if(xan>xa){
System.out.print(""+xan+",");
}else{
xan=xa-1;
}//fin de si
}else{
xan=xan-1;
if (xan>xa){
System.out.print(""+xan+",");
}else{
xan=xa-1;
}//fin de si
}//fin de si
}//fin de mientras
System.out.println("");
}//fin de procedimiento
public static void main(String args[]){
//declarar variables
int a,an;
//entrada dedatos
System.out.print("Ingresar Primer Numero:");
a=lectura.nextInt();
System.out.print("Ingresar Ultimo Numero:");
an=lectura.nextInt();
if (a>0&&an>a){
secuencia(a,an);
}else{
System.out.print("Numero Ingresados Incorrectos:");
}//fin de si
}//fin del metodo principal
}//Fin de la clase

Pgina 149 de 237

Italo Yaranga Vite

*Ejecucin del programa

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

Pgina 150 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package metodos.procedimiento;
/*
9.-Disear un algoritmo que imprima los divisores de un numero ingresado por
el usuario.
*/
import java.util.Scanner;
//clase principal
public class Ejercicio9_Metodo_Procedimiento {
static Scanner lectura=new Scanner(System.in);
//procedimiento pdivisores
static void pdivisores(int nx){
int i, re,d;
i=1;
while(i<=nx){
re=nx%i;
if(re==0){
d=i;
System.out.println(d+" es divisor de "+nx);
}
i=i+1;
}//fin while
}//pdivisores
//metodo principal
public static void main(String args[]){
//declarar variables
int n;
//entrada de datos
System.out.print("Ingrese el numero que desee conocer sus divisores:");
n=lectura.nextInt();
pdivisores(n);
}//fin del metodo principal
}//Fin de la clase

*Ejecucin del programa

Pgina 151 de 237

Italo Yaranga Vite

10.

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.

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

Pgina 152 de 237

Italo Yaranga Vite


segn sea d3
caso 0
k=''
caso 1
k='X'
caso 2
k='XX'
caso 3
k='XXX'
caso 4
k='XL'
caso 5
k='L'
caso 6
k='LX'
caso 7
k='LXX'
caso 8
k='LXXX'
caso 9
k='XC'
fin de segn
segn sea d4
caso 0
h=''
caso 1
h='I'
caso 2
h='II'
caso 3
h='III'
caso 4
h='IV'
caso 5
h='V'
caso 6
h='VI'
caso 7
h='VII'
caso 8
h='VIII'
caso 9
h='IX'
fin de segn
escribir'Notacin Romana', i,j,k,h
fin de procedimiento

Pgina 153 de 237

Italo Yaranga Vite


*Algortimo
1.-inicio
2.-n=0,d1=0,d2=0,d3=0,d4=0,r=0
3.-leer n
4.-r=n
si (r>=1000 y r<=3000) entonces
d1=entero(r/1000)
r=residuo(r/1000)
sino
d1=0
fin de si
si (r>=100 y r<1000) entonces
d2=entero(r/100)
r=(residuo(r/100)
sino
d2=0
fin de si
si (r>=10 y r<100) entonces
d3=entero(r/10)
r=residuo(r/10)
sino
d3=0
fin de si
si (r>0 y r<10) entonces
d4=r
sino
d4=0
fin de si
calccifrarom(d1,d2,d3,d4)
5.-fin
*Prueba de Escritorio
n=2155
Notacin Romana: MMCLV

Pgina 154 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package procedimiento.metodos;
/*
10.- 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.
*/
import JAVA.util.Scanner;
//clase principal
public class Ejercicio10_Procedimiento {
static Scanner lectura=new Scanner(System.in);
//metodo tipo procedimiento calccifrarom
static void calccifrarom(int d1,int d2,int d3,int d4){
String i=new String();
String j=new String();
String k=new String();
String h=new String();
switch(d1){
case 0:i="";break;
case 1:i="M";break;
case 2:i="MM";break;
case 3:i="MMM";break;
}//fin de switch
switch(d2){
case 0:j="";break;
case 1:j="C";break;
case 2:j="CC";break;
case 3:j="CCC";break;
case 4:j="CD";break;
case 5:j="D";break;
case 6:j="DC";break;
case 7:j="DCC";break;
case 8:j="DCCC";break;
case 9:j="CM";break;
}//fin de switch
switch(d3){
case 0:k="";break;
case 1:k="X";break;
case 2:k="XX";break;
case 3:k="XXX";break;
case 4:k="XL";break;
case 5:k="L";break;
case 6:k="LX";break;
case 7:k="LXX";break;
case 8:k="LXXX";break;
case 9:k="XC";break;
}//fin de switch

Pgina 155 de 237

Italo Yaranga Vite


switch(d4){
case 0:h="";break;
case 1:h="I";break;
case 2:h="II";break;
case 3:h="III";break;
case 4:h="IV";break;
case 5:h="V";break;
case 6:h="VI";break;
case 7:h="VII";break;
case 8:h="VII";break;
case 9:h="IX";
} //fin de switch
System.out.println("Notacion Romana");
System.out.println("---------------* "+i+j+k+h);
}//fin de procedimiento
//metodo principal
public static void main(String args[]){
//declarar variables
int n,r,d1,d2,d3,d4;
//proceso de datos
System.out.println("Ingresar el numero: ");
n=lectura.nextInt();
r=n;
if(r>=1000 && r<=3000){
d1=r/1000;
r=r%1000;
}else{
d1=0;
}
if(r>=100 && r<1000){
d2=r/100;
r=r%100;
}else{
d2=0;
}
if(r>=10 && r<100){
d3=r/10;
r=r%10;
}else{
d3=0;
}
if(r>0 && r<10){
d4=r;
}else{
d4=0;
}
//invoca al metodo
calccifrarom(d1,d2,d3,d4); //invocar procedimiento
}//fin del metodo principal
}//Fin de la clase

Pgina 156 de 237

Italo Yaranga Vite


*Ejecucin del programa

Pgina 157 de 237

Italo Yaranga Vite

S SESION07
Las funcin son rutinas que
procesan datos y retornar un
resultado.

Pgina 158 de 237

Italo Yaranga Vite


SESION 07
SUBALGORITMO FUNCIONES
1. Disear las funciones que permita determinar el promedio de tres notas ingresadas de
un alumno, la condicin (aprobado, desaprobado), estado.
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:p(promedio),c(condicin),e(estado)
funcion fpromedio(xnt1:real,xnt2:real,xnt3:real):real
retornar(xnt1+xnt2+xnt3)/3
fin funcion
funcion fcondicion(xp:real):cadena
c=' '
si xp>=10.5 entonces
c='aprobado'
sino
c='desaprobado'
fin de si
retornar(c)
fin funcion
funcion festado(xp1:real):cadena
e=''
si xp1<=5 entonces
e='psimo'
sino si xp1<=10 entonces
e='malo'
sino si xp1<=15 entonces
e='regular'
sino si xp1<=18 entonces
e='bueno'
sino si xp1<=20 entonces
e='excelente'
fin de si
retornar(e)
fin funcion

Pgina 159 de 237

Italo Yaranga Vite


*Algoritmo
1.-inicio
2.-nt1=0.0,nt2=0.0,nt3=0.0,p=0.0,condicion='',estado='',
3.-leer nt1,nt2,nt3
4.-p=fpromedio(nt1,nt2,nt3)
condicion=fcondicion(p)
estado=festado(p)
5.-escribir p,condicion,estado
6.-fin
*Prueba de Escritorio
nt1=12.0
nt2=13.0
nt3=15.0
p=13.3
condicin='Aprobado'
estado='Regular
*Implementacin del algoritmo en JAVA.
package metodos.funcion;
/*
1.- Disear las funciones que permita determinar el promedio de tres notas
ingresadas de un alumno, la condicin (aprobado, desaprobado), estado.
Condicin
Promedio >=10.5 aprobado ,desaprobado
Estado
<=5 pesimo
<=10 malo
<=15 "regular"
<=18 bueno
<=20 excelente
*/
import java.util.Scanner;
import java.text.DecimalFormat;
//clase principal
public class Ejercicio1_Metodo_Funcion {
//permite dar formato de salida de datos
static DecimalFormat formato = new DecimalFormat("#0.0");
static Scanner lectura=new Scanner(System.in);
//metodo tipo funcion fpromedio
static double fpromedio(double xnt1,double xnt2,double xnt3){
return(xnt1+xnt2+xnt3)/3;
}//fin de mtodo
//metodo tipo funcion fcondicion
static String fcondicion(double xp){
String c=new String();
if(xp>=10.5){
c="Aprobado";
}else{
c="Desaprobado";
}
return(c);
}//fin de mtodo

Pgina 160 de 237

Italo Yaranga Vite


//metodo tipo funcion festado
static String festado(double xp1){
String e=new String();
if(xp1<=5){
e="pesimo";
}else if(xp1<=10){
e="malo";
}else if(xp1<=15){
e="regular";
}else if(xp1<=18){
e="bueno";
}else if(xp1<=20){
e="excelente";
}//fin if
return(e);
}//fin de mtodo
//metodo principal
public static void main(String args[]){
//declarar variables
double nt1,nt2,nt3,p;
String condicion=new String();
String estado=new String();
//entrada de datos
System.out.print("Ingresar Nota 1:");
nt1=lectura.nextInt();
System.out.print("Ingresar Nota 2:");
nt2=lectura.nextInt();
System.out.print("Ingresar Nota 3:");
nt3=lectura.nextInt();
//invocar al metodo tipo procedimiento
p=fpromedio(nt1,nt2,nt3);
condicion=fcondicion(p);
estado=festado(p);
//salida de datos
System.out.println("El promedio es:"+formato.format(p));
System.out.println("La condicin es:"+condicion);
System.out.println("El estado es:"+estado);
}//fin del metodo principal
}//Fin de la clase

*Ejecucin del programa

Pgina 161 de 237

Italo Yaranga Vite


2.

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

Pgina 162 de 237

Italo Yaranga Vite


*Implementacin del algoritmo JAVA.
package metodos.funcion;
/*2.- Disear las funciones que permita determinar la nota mayor y menor de
cuadro nota ingresadas.
*/
import java.util.Scanner;
//clase principal
public class Ejercicio2_Metodo_Funcion {
static Scanner lectura=new Scanner(System.in);
//metodo tipo funcion fmayor
static double fmayor(double xnt1,double xnt2,double xnt3){
double nmy;
nmy=xnt1;
//nota mayor
if(xnt2>nmy){
nmy=xnt2;
}
if(xnt3>nmy){
nmy=xnt3;
}
return(nmy);
}//fin de la metodo
static double fmenor(double xnt1,double xnt2,double xnt3){
double nmn;
nmn=xnt1;
//nota mayor
if(xnt2<nmn){
nmn=xnt2;
}
if(xnt3<nmn){
nmn=xnt3;
}
return(nmn);
}//fin del mtodo
//metodo principal
public static void main(String args[]){
//declarar variables
double nt1,nt2,nt3,p;
double mayor,menor;
//entrada de datos
System.out.print("Ingresar Nota 1:");
nt1=lectura.nextInt();
System.out.print("Ingresar Nota 2:");
nt2=lectura.nextInt();
System.out.print("Ingresar Nota 3:");
nt3=lectura.nextInt();
//invocar al metodo tipo funcion
mayor=fmayor(nt1,nt2,nt3);
menor=fmenor(nt1,nt2,nt3);
//salida de datos
System.out.println("Nota mayor es:"+mayor);
System.out.println("Nota menor es::"+menor);
}//fin del metodo principal
}//Fin de la clase

Pgina 163 de 237

Italo Yaranga Vite

*Ejecucin del programa.

3.

Disear una funcin que indique si un nmero entero positivo ingresado es


capicua(abc=cba).

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'

Pgina 164 de 237

Italo Yaranga Vite


*Implementacin del algoritmo JAVA.
package metodos.funcion;
/*
3.- Disear una funcin que indique si un nmero entero positivo ingresado
es capicua(abc=cba).
*/
import java.util.Scanner;
import java.text.DecimalFormat;
//clase principal
public class Ejercicio3_Metodo_Funcion {
static Scanner lectura=new Scanner(System.in);
//metodo tipo funcion fcopicua
static String fcopicua(int xu){
int r=0,inv=0,xnum=0;
String xm=new String();
xnum=xu;
while(xu!=0){
r=xu%10;
xu=xu/10;
inv=inv*10+r;
}
if(xnum==inv){
xm="es capicua";
}else{
xm="no es capicua";
}
return(xm);
}//fin metodo
//metodo principal
public static void main(String args[]){
//declarar variables
int n=0,xn=0;
String m=new String();
//entrada de datos
System.out.print("Ingresar el numero:");
n=lectura.nextInt();
//invocar al metodo tipo procedimiento
m=fcopicua(n);
//salida de datos
System.out.println(m);
}//fin del metodo principal
}//Fin de la clase
*Ejecucin del programa

Pgina 165 de 237

Italo Yaranga Vite


4.
Disear una funcion que permita calcular el factorial de un nmeros ingresado.
Solucin:
*Anlisis de datos
e:num(numero)
s:f(factorial)
funcin ffactorial(xnum:entero):entero
xf=0
xf=1
para i=1 hasta xnum
xf=xf * i
fin de para
retornar(xf)
fin de funcion
*Algoritmo
1.-inicio
2.-num=0,fact=0
3.-leer num
4.-fact =ffactorial(num)
5.-escribir fact
6.-fin
*Prueba de escritorio
n=5
f=120
*Implementacin del algoritmo JAVA.
package metodos.funcion;
/*4.-Disear una funcion que permita calcular el factorial de un nmeros ingresado.
*/
import java.util.Scanner;
import java.text.DecimalFormat;
//clase principal
public class Ejercicio4_Metodo_Funcion {
static Scanner lectura=new Scanner(System.in);
//metodo tipo funcion ffactorial
static int ffactorial(int xnum){
int xf=0,i;
xf=1;
for(i=1;i<=xnum;i++){
xf=xf * i;
}
return(xf);
}//fin metodo
//metodo principal
public static void main(String args[]){
//declarar variables
int num=0,fact=0;
//entrada de datos
System.out.print("Ingresar numero:");
num=lectura.nextInt();
//invocar al metodo tipo procedimiento
fact =ffactorial(num);
//salida de datos
System.out.println("EL factorial de "+num+" es:"+fact);
}//fin del metodo principal
}//Fin de la clase
Pgina 166 de 237

Italo Yaranga Vite


*Ejecucin del programa.

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

Pgina 167 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package metodos.funcion;
/*
5.- Disear una funcion que permite determinar si una palabra ingresada el
palindroma.
*/
import java.util.Scanner;
import java.text.DecimalFormat;
//clase principal
public class Ejercicio5_Metodo_Funcion {
static Scanner lectura=new Scanner(System.in);
//metodo tipo funcion ffactorial
static String fpalindromo(String xpalabra){
String m=new String();
int num, x = 1;
//csantidad de carcteres
num = xpalabra.length();
for(int i = 0; i < num; i++ ){
if(xpalabra.charAt(i) ==xpalabra.charAt(num-1-i)){
x = 1;
}else{
x = 2;
break;
}
}//fin for
if(x==2){
m="No es un palindromo";
}else{
m="Es un plindromo";
}
return(m);
}//fin de metodo
//metodo principal
public static void main(String args[]){
//declarar variables
String palabra=new String();
String plb=new String();
//entrada de datos
System.out.print("Ingresa una plalabra:");
palabra=lectura.nextLine();
//invocar al metodo tipo procedimiento
plb=fpalindromo(palabra);
//salida de datos
System.out.println(plb);
}//fin del metodo principal
}//Fin de la clase

Pgina 168 de 237

Italo Yaranga Vite


*Ejecucin del programa.

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

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package metodos.funcion;
/*
6.- Disear una funcion que permita determinar el nombre del da,
* mediante un nmero ingresado.
*/
import java.util.Scanner;
//clase principal
public class Ejercicio6_Metodo_Funcion {
static Scanner lectura=new Scanner(System.in);
//metodo tipo funcion fdia
static String fdia(int nx){
String xd=new String();
if(nx>0 && nx<=7){
switch(nx){
case 1:xd="Lunes";break;
case 2:xd="Martes";break;
case 3:xd="Miercoles";break;
case 4:xd="Jueves";break;
case 5:xd="Viernes";break;
case 6:xd="Sabado";break;
case 7:xd="Domingo";break;
}
}else{
xd="Error el numero ingresado no es valido";
}
return(xd);
}//fin de metodo
public static void main(String args[]){
//declarar variables
int n=0;
String dia=new String();
//entrada de datos
System.out.print("Ingresar numero del 1-7:");
n=lectura.nextInt();
//invocar al metodo tipo procedimiento
dia=fdia(n);
//salida de datos
System.out.println("El dia de la semana es:"+dia);
}//fin del metodo principal
}//Fin de la clase

Pgina 170 de 237

Italo Yaranga Vite


*Ejecucin del programa.

Pgina 171 de 237

Italo Yaranga Vite


7.

Disear funciones que al ingresar el nmero atmico de un elemento qumico permitan


visualizar su nombre, la familia a la que pertenece, la especificacin si es un metal o un
no metal y su electronegatividad segn Pauling.
El nmero atmico(2,3,4,5,6,7,8,9)
Solucin:
*Anlisis de datos
E: n(nmero atmico)
S: nombre, grupo, bloque, ev(electronegatividad)
funcin felemento(xn:entero):cadena
e=''
segn sea xn
caso 2:
e='HELIO / He'
caso 3:
e='LITIO / Li'
caso 4:
e='BERILIO / Be'
caso 5:
e='BORO / B'
caso 6:
e='CARBONO / C'
caso 7:
e='NITROGENO / N'
caso 8:
e='OXIGENO / O'
caso 9:
e='FLUOR / F'
fin de segn
retornar(e)
fin funcin
funcin fgrupo(xn:entero):cadena
g=''
segn sea xn
caso 2
g='Gases Nobles'
caso 3
g='Alcalinos'
caso 4
g='Alcalinos terreos'
caso 5
g='Boroides'
caso 6
g='Carbonoides'
caso 7
g='Nitrogenoides'
caso 8
g='Anfgenos'
caso 9
g='Halgenos'
fin
de
segn
.
retornar(g)
fin funcin

Pgina 172 de 237

Italo Yaranga Vite


funcin fbloque(xn:entero):cadena
b=''
segn sea xn
caso 3,4
b='*Metal Ligero'
caso 5,6,7,8,9
b='*No Metal'
caso 2
b='*Gas raro'
fin de segn
retornar(b)
fin funcin
funcin felectronegatividad(xn:entero):real
p=0.0
segn sea xn
caso 2
p=4.1
caso 3
p=1.0
caso 4
p=1.5
caso 5
p=2.0
caso 6
p=2.5
caso 7
p=3.0
caso 8
p=3.5
caso 9
p=4.0
fin de segn
retornar(p)
fin funcin
*Algortimo
1.-inicio
2.-n=0, ev=0.0, nombre='', grupo='', bloque=''
3.-leer n
nombre=felemento(n)
grupo=fgrupo(n)
bloque=fbloque(n)
ev=felectronegatividad(n)
4.-escribir nombre,grupo,bloque,ev
5.-fin
*Prueba de Escritorio
n=8
nombre= 'OXIGENO / O'
grupo='Anfgenos'
bloque='*No Metal'
ev=3.5

Pgina 173 de 237

Italo Yaranga Vite


*Implementacin del algoritmo JAVA.
package metodos.funcion;
/*
7.- Disear funciones que al ingresar el nmero atmico de un elemento qumico
permitan visualizar su nombre, la familia a la que pertenece, la especificacin
si es un metal o un no metal y su electronegatividad
*/
import java.util.Scanner;
//clase principal
public class Ejercicio7_Metodo_Funcion {
static Scanner lectura=new Scanner(System.in);
//metodo tipo funcion felemento
static String felemento(int xn){
String e=new String();
switch(xn){
case 2:e="HELIO / He";break;
case 3:e="LITIO / Li";break;
case 4:e="BERILIO / Be";break;
case 5:e="BORO / B";break;
case 6:e="CARBONO / C";break;
case 7:e="NITROGENO / N";break;
case 8:e="OXIGENO / O";break;
case 9:e="FLUOR / F";
} //fin de switch
return(e);
} //fin de mtodo

//metodo tipo funcion fgrupo


static String fgrupo(int xn){
String g=new String();
switch(xn){
case 2:g="Gases Nobles";break;
case 3:g="Alcalinos";break;
case 4:g="Alcalinos terreos";break;
case 5:g="Boroides";break;
case 6:g="Carbonoides";break;
case 7:g="Nitrogenoides";break;
case 8:g="Anfigenos";break;
case 9:g="Halogenos";break;
} //fin de switch
return(g);
}//fin de metodo

Pgina 174 de 237

Italo Yaranga Vite


//metodo tipo funcion fbloque
String fbloque(int xn){
String b=new String();
switch(xn){
case 3:
case 4:
b="*Metal Ligero"; break;
case 5:
case 6:
case 7:
case 8:
case 9:
b="*No Metal"; break;
case 2:
b="*Gas raro"; break;
}//fin de switch
return(b);
}//fin de metodo
//metodo tipo funcin felectronegatividad
double felectronegatividad(int xn){
double p=0.0;
switch(xn){
case 2:p=4.1;break;
case 3:p=1.0;break;
case 4:p=1.5;break;
case 5:p=2.0;break;
case 6:p=2.5;break;
case 7:p=3.0;break;
case 8:p=3.5;break;
case 9:p=4.0;break;
}//fin de switch
return(p);
} //fin de la funcin
public static void main(String args[]){
//declarar variables
int n;
double ev;
String nombre=new String();
String grupo=new String();
String bloque=new String();
//entrada de datos
System.out.print("Ingresar el NUMERO ATOMICO: ");
n=lectura.nextInt();
//invocar al metodo tipo procedimiento
nombre=felemento(n);
grupo=fgrupo(n);
bloque=fbloque(n);
ev=felectronegatividad(n);
//salida de datos
System.out.println("----------------El Elemento Quimico es: "+nombre);
System.out.println("------------Familia a la que pertenece: "+grupo);
System.out.println("---------------------------------Es un: "+bloque);
System.out.println("Su electronegatividad segun PAULING es: "+ev);
}//fin del metodo principal
}//Fin de la clase
Pgina 175 de 237

Italo Yaranga Vite

*Ejecucin del programa.

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

Pgina 176 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package metodos.funcion;
/*
8.-Disear una funcin que permita devolver el mayor digito de una cantidad
ingresada.
*/
import java.util.Scanner;
//clase principal
public class Ejercicio8_Metodo_Funcion {
static Scanner lectura=new Scanner(System.in);
//metodo tipo funcion fdmayor(digito mayor)
static int fdmayor(int xc){
int d=0,xdmy=0;
while(xc>0){
d=xc%10;
if(d>xdmy){
xdmy=d;
}
xc=xc/10;
}
return(xdmy);
}//fin de mtodo
public static void main(String args[]){
//declarar variables
int n=0;
String dia=new String();
//entrada de datos
int c,dmy;
System.out.print("Ingresar Numero:");
c=lectura.nextInt();
//invocar al metodo tipo procedimiento
dmy=fdmayor(c);
//salida de datos
System.out.println("El digito mayor es:"+dmy);
}//fin del metodo principal
}//Fin de la clase

*Ejecucin del programa.

Pgina 177 de 237

Italo Yaranga Vite


9.

Disear un algoritmo que permita calcular el area de una figura geometrica,


seleccionando el tipo de figura en un menu de opciones.El programa debe permitir el
ingreso de los datos de entrada dependiendo del tipo de figura. Debe repetirse hasta
que ya no desee seguir.

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

Pgina 178 de 237

Italo Yaranga Vite

*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

*Implementacin del algoritmo JAVA.


package metodos.funcion;
/*
9.- Disear un algoritmo que permita calcular el area de una figura geometrica,
seleccionando el tipo de figura en un menu de opciones.El programa debe permitir
el ingreso de los datos de entrada dependiendo del tipo de figura. Debe
repetirse hasta que ya no desee seguir.
*/
import java.util.Scanner;
//clase principal
public class Ejercicio9_Metodo_Funcion {
static Scanner lectura=new Scanner(System.in);
static final double pi=3.1416;
//metodo tipo funcion fCalArea
static double fCalArea(int tf){
double lado,base,altura,radio,area,base1,base2;
switch (tf){
case 1:
System.out.println("Ing. datos del cuadrado:");
System.out.print("Lado=");
lado=lectura.nextDouble();
area=lado*lado;break;
case 2:
System.out.println("Ing. datos del circulo:");
System.out.print("Radio=");
radio=lectura.nextDouble();
area=pi*Math.pow(radio,2);
break;

Pgina 179 de 237

Italo Yaranga Vite

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

Pgina 180 de 237

Italo Yaranga Vite


public static void main(String args[]){
//declarar variables
String sigue=new String();
String xarea=new String();
int tipof;
//entrada de datos
do {
//invocar funciones
tipof=menu();
System.out.println("Area="+fCalArea(tipof));
System.out.print("Desea continuar S/N:");
sigue=lectura.next();
}while(sigue.equalsIgnoreCase("S"));
}//fin del metodo principal
}//Fin de la clase
*Ejecucin del programa.

Pgina 181 de 237

Italo Yaranga Vite


10.

Disear un algoritmo que calcule la hipotenusa,el permetro de un triangulo rectangulo


cuyos catetos son ingresados por teclado.

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

Pgina 182 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package metodos.funcion;
/*
10.- Disear un algoritmo que calcule la hipotenusa,elperimetro,y los angulos de un
triangulo rectanguoo cuyos catetos son ingresados por teclado.
*/
import java.util.Scanner;
//operaciones aritmeticas con numeros reales
import java.math.BigDecimal;
//clase principal
public class Ejercicio10_Metodo_Funcion {
static double xalfa,xbeta;
static Scanner lectura=new Scanner(System.in);
//metodo tipo funcion hipotenusa
static double fhipotenusa(double c1,double c2){
double hip=0.0;
hip=Math.sqrt(Math.pow(c1,2)+Math.pow(c2,2));
return hip;
}//fin de funcion
////metodo tipo funcion fperimetro
static double fperimetro(double c1,double c2,double hip){
double per=0.0;
per=c1+c2+hip;
return per;
}//fin de funcin
//metodo principal
public static void main(String args[]){
//declarar variables
double c1,c2,hip,peri;
String sigue=new String();
do{
//entrada de datos
System.out.print("Ingrese el valor del cateto 1:");
c1=lectura.nextInt();
System.out.print("Ingrese el valor del cateto 2:");
c2=lectura.nextInt();
//invocar varaibles
hip=fhipotenusa(c1,c2);
peri=fperimetro(c1,c2,hip);
//salida de datos
System.out.println("La hipotenusa es:"+hip);
System.out.println("El perimetro del triangulo es:"+peri);
System.out.println("Desea continuar S/N:"+sigue);
sigue=lectura.next();
}while(sigue.equalsIgnoreCase("S"));
}//fin del metodo principal
}//Fin de la clase

Pgina 183 de 237

Italo Yaranga Vite

*Ejecucin del programa.

Pgina 184 de 237

Italo Yaranga Vite

S SESION08
Los

arreglo

nos

permiten

almacenar una coleccin con el


mismo tipo de dato en la
memoria del computador.

Pgina 185 de 237

Italo Yaranga Vite


SESION 08
ARREGLO DE DATOS
1. Disear un algoritmo que permita almacenar en un arreglo de datos cinco nmeros
ingresados y realizar una bsqueda mediante un nmero ingresado. Visualizar un mensaje
indicando si el nmero existe o no existe y la posicin del nmero en el arreglo de datos.
Solucin:
*Anlisis de datos
e:n(nmeros),nb(numero a buscar)
s:m(mensaje),pos(posicin)
funcion fbuscar(arr[]:entero,xnb:entero):entero
xpos=0,i=0
para i=0 hasta 4
si arr[i]=xnb entonces
xpos=i //si encontro
i=5 //permite finalizar la e.repetitiva
sino
xpos=-1//no encontro
fin de si
fin de para
retornar(xpos)
fin de funcion
*Algoritmo
1.-inicio
2.-anum[5]:0,nb=0,f=0,n=0,pos=0,m=''
3.-para f=0 hasta 4
leer n
anum[f]=n
fin de para
leer nb
4.-pos=fbuscar(anum,nb)
si pos>=0 entonces
m='si existe'
sino
m='no existe'
fin de si
5.-escribir pos,m
6.-fin
*Prueba de Escritorio
10-20-30-40-50
nb=30
m='si existe'
pos=2

Pgina 186 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package arreglo.datos;
/*
1.-Disear un algoritmo que permita almacenar en un arreglo de datos cinco
nmeros ingresados y realizar una bsqueda mediante un nmero ingresado.
Visualizar un mensaje indicando si el nmero existe o no existe y la posicin
del nmero en el arreglo de datos.
*/
//Paquete de datos e/s de datos por consola
import java.util.Scanner;
//clase principal
public class Ejercicio1_Arreglos {
//metodo tipo funcion fbuscar
static int fbuscar(int arr[],int xnb){
int xpos=0,i=0;
//arr.length devuelve la cantidad elemetos que tiene el arreglo
for(i=0;i<arr.length;i++){
if(arr[i]==xnb){
xpos=i; //si encontro
i=arr.length; //permite finalizar la e.repetitiva
}else{
xpos=-1;//no encontro
}//fin if
}//fin for
return(xpos);
}//fin metodo
//metodo principal
public static void main(String args[]){
//declarar variables
int[] anum= new int[5];
int nb=0,f=0,n=0,pos=0;
String m=new String();
Scanner lectura=new Scanner(System.in);
//entrada de datos
for(f=0;f<anum.length;f++){
System.out.print("Ingresar numero "+(f+1)+":");
n=lectura.nextInt();
anum[f]=n;
}//fin de for
System.out.print("Ingresar numero a buscar:");
nb=lectura.nextInt();
//invocar a la funcion
pos=fbuscar(anum,nb);
if(pos>=0){
m="si existe";
}else{
m="no existe";
}
System.out.println("La posicion de numero buscado es :"+pos);
}//Fin del metodo
}//Fin de la clase

Pgina 187 de 237

Italo Yaranga Vite


*Ejecucin del programa.

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]

Pgina 188 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package arreglo.datos;
/*
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.
*/
//Paquete de datos e/s de datos por consola
import java.util.Scanner;
//clase principal
public class Ejercicio2_Arreglos {
//metodo principal
public static void main(String args[]){
//declarar variables
int n=0,i=0,j=0,r=0,k=0,y=0;
int a[]=new int[5]; //arreglo de datos esttico
int b[]=new int[5]; //arreglo de datos esttico
int c[]=new int[10]; //arreglo de datos esttico
Scanner lectura=new Scanner(System.in);
for(i=0;i<a.length;i++){
System.out.print("Arreglo A nmero "+(i+1)+":");
n=lectura.nextInt();
a[i]=n;
}//fin de for
for(j=0;j<b.length;j++){
System.out.print("Arreglo B nmero "+(j+1)+":");
n=lectura.nextInt();
b[j]=n;
}//fin de for
//proceso de datos
for(k=0;k<5;k++){
c[k+r]=a[k];
r=r+1;
c[k+r]=b[k];
}//fin de for
//salida de datos
for(y=0;y<c.length;y++){
System.out.println(c[y]);
}//fin de for
}//Fin del metodo
}//Fin de la clase

Pgina 189 de 237

Italo Yaranga Vite


Ejecucin del programa.

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

Italo Yaranga Vite


*Implementacin del algoritmo en java.
package arreglo.datos;
/*
3.Disear un algoritmo que permita registrar los sueldos de los n empleados
en un arreglo de datos. Visualizar sueldo mayor.
*/
//Paquete de datos e/s de datos por consola
import java.util.Scanner;
//clase principal
public class Ejercicio3_Arreglos {
//metodo principal
public static void main(String args[]){
//declarar variables
int ne,i;
double sueldo=0.0,smayor=0.0;
String rpta=new String();
Scanner lectura=new Scanner(System.in);
do{
//entrada de datos
System.out.print("Ingresar nmero de empleados:");
ne=lectura.nextInt();
//proceso de datos
double asueldo[]=new double[ne] ;//arreglo dinamico
for(i=0;i<ne;i++){
System.out.print("Ingresar sueldo "+(i+1)+":");
sueldo=lectura.nextDouble();
asueldo[i]=sueldo;
}
for(i=0;i<ne;i++){
if(asueldo[i]>smayor){
smayor=asueldo[i];
}
}
//salida de datos
System.out.println("el sueldo mayor es:"+smayor);
System.out.print("Desea seguir si/no:");
rpta=lectura.next();
}while(rpta.equalsIgnoreCase("si"));
}//Fin del metodo
}//Fin de la clase

Pgina 191 de 237

Italo Yaranga Vite


*Ejecucin del programa.

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

Pgina 192 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package arreglo.datos;
/*
4.-Disear un arreglo de datos que permita almacenar cinco notas de un alumno
visualizando su promedio.
*/
//Paquete de datos e/s de datos por consola
import java.util.Scanner;
//clase principal
public class Ejercicio4_Arreglos {
//metodo principal
public static void main(String args[]){
//declarar variables
double sn=0.0,p,nota;
int n,i;
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("Ingresar cantidad de notas:");
n=lectura.nextInt();
double anotas[]=new double[n] ;//arreglo dinamico
//proceso de datos
for(i=0;i<n;i++){
System.out.print("Ingresar Nota "+(i+1)+":");
nota=lectura.nextDouble();
anotas[i]=nota;
sn=sn+anotas[i];
}
p=sn/n;
//salida de datos
System.out.println("El promedio de los nmeros es:"+p);
}//Fin del metodo
}//Fin de la clase

Ejecucin del programa.

Pgina 193 de 237

Italo Yaranga Vite


5.- Disear un algoritmo para un VIVERO que permita almacenar en un arreglo de datos las
cantidades de plantas de distintas variedades y en otro arreglo de datos los precios de
dichas variedades en orden correlativo. Visualizar un mensaje que me diga si hubo ganancia
o prdida, el costo total, el ingreso por medio de las ventas y la ganancia respectiva; esto
mediante el ingreso de los precios de la tierra, bolsas, semillas y abono.
Solucin:
*Anlisis de datos
E: n(nmero), t(pc de tierra), b(pc de bolsas), s(pc de semillas),
a(pc de abono)
S: m(mensaje), c(costo total), in(ingreso), g(ganancia)
funcion fcosto(xt:entero,xb:entero,xs:entero,xa:entero):entero
retornar xt+xb+xs+xa
fin funcin
*Algortimo
1.-inicio
2.-x[5]:0 ,z[5]:0 ,n=0, t=0, b=0, s=0, a=0, i=0, j=0, y=0, c=0, r=0,
in=0, g=0, m=''
3.-para i=0 hasta 4 //cantidades de plantas
leer n
x[i]=n
fin del para
para j=0 hasta 4 //precio de dicha variedades
leer n
z[j]=n
fin del para
leer t,b,s,a
4.-c=fcosto(t,b,s,a)
para y=0 hasta 4
r=x[y]*z[y]
in=in+r
fin de para
g=in-c
si g>0 entonces
m='HUBO GANANCIAS'
fin de si
si g<0 entonces
m='HUBO PRDIDAS'
fin de si
5.-escribir m,c,in,g
6.-fin
*Prueba de Escritorio
x[5]: 400,200,300,20,80
z[5]: 2,3,5,15,8
t=500
b=19
s=1000
a=400
m='HUBO GANANCIA'
C=1919
in=3840
g=1921
Pgina 194 de 237

Italo Yaranga Vite


*Implementacin del algoritmo aen JAVA.
package arreglo.datos;
/*
5.-Disear un algoritmo para un VIVERO que permita almacenar en un arreglo de
datos las cantidades de plantas de distintas variedades y en otro arreglo de
datos los precios de dichas variedades en orden correlativo. Visualizar un
mensaje que me diga si hubo ganancia o prdida, el costo total, el ingreso por
medio de las ventas y la ganancia respectiva; esto mediante el ingreso de los
precios de la tierra, bolsas, semillas y abono.
*/
//Paquete de datos e/s de datos por consola
import java.util.Scanner;
//clase principal
public class Ejercicio5_Arreglos {
//metodo tipo funcin fcosto
static int fcosto(int xt,int xb,int xs,int xa){
return xt+xb+xs+xa;
} //fin del metodo
//metodo principal
public static void main(String args[]){
//declarar variables
int t=0,b=0,s=0,a,c,p,g,n,i,in=0,j,y,r;
String m=new String();
int x[]=new int[5]; //arreglos de datos estticos
int z[]=new int[5]; //arreglos de datos estticos
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.print("***********VIVERO XYZ***********");
System.out.print("Cantidades por variedad");
//proceso de datos
for(i=0;i<=4;i++){
System.out.print("Variedad "+(i+1)+" : ");
n=lectura.nextInt();
x[i]=n;
}//fin de for
System.out.println("");
System.out.println("Precios por variedad");
for(j=0;j<=4;j++){
System.out.println("Variedad "+(j+1)+" : ");
n=lectura.nextInt();
z[j]=n;
} //fin de for
System.out.println("");
System.out.println("Calculando la inversion");
System.out.println("Ingresar precio tierra: "+t);
System.out.println("Ingresar precio bolsas: "+b);
System.out.println("Ingresar precio semilla: "+s);
System.out.println("Ingresar precio abono: "+a);
//proceso de datos
c=fcosto(t,b,s,a); //invocacin de la funcin
for(y=0;y<=4;y++){
r=x[y]*z[y];
in=in+r;
}

Pgina 195 de 237

Italo Yaranga Vite


g=in-c;
if(g>0){
m="------------*HUBO GANANCIAS*-------------";
}
if(g<0){
m="------------*HUBO PERDIDAS*--------------";
}
//salida de datos
System.out.println("");
System.out.println(m);
System.out.println("El costo total es: "+c);
System.out.println("El ingreso es: "+in);
System.out.println("La ganancia es: "+g);
}//Fin del metodo
}//Fin de la clase
Ejecucin del programa.

Pgina 196 de 237

Italo Yaranga Vite


6.-Disear un algoritmo que permita almacenar en un arreglos de datos los nombres de las
principales playas del sur y en otro arreglo de datos el nmero de baistas en orden correlativo.
Visualizar los porcentajes de baistas de cada playa en un arreglo de datos.
Solucin:
*Anlisis de datos
E: py(playas), n(nmero)
S: los porcentajes en un arreglo de datos
*Algoritmo
1.-inicio
2.-ap[5]:'', b[5]:0.0, c[5]:0.0, py='', i=0, j=0, k=0, y=0, n=0, bmy=0, bt=0,my=0.0
3.-para i=0 hasta 4
leer py
ap[i]=py
fin del para
para j=0 hasta 4
leer n
b[j]=n
fin del para
4.- para j=0 hasta 4
bt=bt+b[j]
fin del para
para k=0 hasta 4
c[k]=b[k]*100/bt
fin del para
my=c[0]
pos=0
si c[1]>my entonces
my=c[1]
pos=1
fin de si
si c[2]>my entonces
my=c[2]
pos=2
fin de si
si c[3]>my entonces
my=c[3]
pos=3
fin de si
si c[4]>my entonces
my=c[4]
pos=4
fin de si
5.-escribir
para y=0 hasta 4
escribir c[y]
fin del para
ap[pos]
6.-fin
*Prueba de Escritorio
ap[5]: 'san_pedro','silencio','san_bartolo','punta_negra','punta_hermosa'
b[5]: 1000,200,400,800,950
c[5]: 29.85,5.97,11.94,23.88,28.36
ap[pos]='san_pedro'

Pgina 197 de 237

Italo Yaranga Vite


*Implementacin del algoritmo JAVA.
package arreglo.datos;
/*6.-Disear un algoritmo que permita almacenar en un arreglos de datos los
nombres de las principales playas del sur y en otro arreglo de datos el nmero
de baistas en orden correlativo. Visualizar los porcentajes de baistas de
cada playa en un arreglo de datos.
*/
//Paquete de datos e/s de datos por consola
import java.util.Scanner;
import java.text.DecimalFormat;
//clase principal
public class Ejercicio6_Arreglos {
//permite dar formato de salida de datos
static DecimalFormat formato = new DecimalFormat("#0.00");
//metodo principal
public static void main(String args[]){
String[] v1=new String[5];
String py=new String();
//declarar variables
int i=0,n=0,bmy=0,j=0,k=0,y=0,pos;
double my,bt=0.0;
double[] c=new double[5];
double[] b=new double[5];
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.println("------PLAYAS DEL SUR*------");
for(i=0;i<=4;i++){
System.out.print("Playa "+(i+1)+" : ");
py=lectura.next();
v1[i]=py;
} //fin de for
System.out.print("");
System.out.println("NUMERO DE BAISTAS");
for(j=0;j<=4;j++){
System.out.print("En la playa "+(j+1)+" : ");
n=lectura.nextInt();
b[j]=n;
} //fin de for
//proceso de datos
for(j=0;j<=4;j++){
bt=bt+b[j]; //acumulador de baistas
} //fin de for
for(k=0;k<=4;k++){
c[k]=b[k]*100/bt;
} //fin de for
my=c[0];
pos=0;
if (c[1]>my){
my=c[1];
pos=1;
}
if (c[2]>my){
my=c[2];
pos=2;
}
Pgina 198 de 237

Italo Yaranga Vite

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

Ejecucin del programa.

Pgina 199 de 237

Italo Yaranga Vite

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'

Pgina 200 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package arreglo.datos;
/*
7.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.
*/
//Paquete de datos e/s de datos por consola
import java.util.Scanner;
import java.text.DecimalFormat;
//clase principal
public class Ejercicio7_Arreglos {
static DecimalFormat formato = new DecimalFormat("#0.00");
//metodo principal
public static void main(String args[]){
//declarar variables
int i=0,j=0,n=0,na=0,ne=0;
double pa,pe,nt;
String l=new String();
int[] a=new int[5];
int[] b=new int[5];
//entrada de datos
Scanner lectura= new Scanner(System.in);
//Entada de datos
System.out.println("INSTITUCION EDUCATIVA");
System.out.println("NUMERO DE ALUMNAS");
for(i=0;i<=4;i++){
System.out.print("En el aula "+(i+1)+" : ");
n=lectura.nextInt();
a[i]=n;
na=na+n;
}
System.out.print("");
System.out.println("NUMERO DE ALUMNOS");
for(j=0;j<=4;j++){
System.out.print("En el aula "+(j+1)+" : ");
n=lectura.nextInt();
b[j]=n;
ne=ne+n;
}
//procesos de datos
for(i=0;i<=4;i++){
na=na+a[i];
}
for(j=0;j<=4;j++){
ne=ne+b[j];
}
if(na>ne){
l="-----------------------------*PREDOMINIO FEMENINO";
}
if(na<ne){
l="-----------------------------*PREDOMINIO MASCULINO";
}

Pgina 201 de 237

Italo Yaranga Vite


if(na==ne){
l="-----------------------------*";
}
nt=na+ne;
pa=100*na/nt;
pe=100-pa;
//salida de datos
System.out.println("-----------------------------");
System.out.println("PORCENTAJE DE CHICAS: "+formato.format(pa)+"%");
System.out.println("PORCENTAJE DE CHICOS: "+formato.format(pe)+"%");
System.out.println(l);
}//Fin del metodo
}//Fin de la clase

Ejecucin del programa.

Pgina 202 de 237

Italo Yaranga Vite


8.-Disear un algoritmo que permita almacenar 10 temperaturas. Se desea calcular la media y
obtener el nmero de temperaturas mayores o iguales que la media.
Solucin:
*Anlisis de datos
E: t(temperaturas)
S: m(media de temperaturas), c(nmero de temperaturas >= de la media)
*Algoritmo
1.-inicio
2.-i=0, j=0, c=0, t=0.0, s=0.0, m=0.0, tem[10]:0.0
3.-escribir 'TEMPERATURAS EN GRADOS CELSIUS'
para i=0 hasta 9
leer t
tem[i]=t
s=s+t
fin de para
4.-para i=0 hasta 9
s=s+tem[i]
fin de para
m=s/10
para j=0 hasta 9
si tem[j]>=m entonces
c=c+1
fin de si
fin de para
4.-escribir m,c
5.-fin
*Prueba de escritorio
tem[10]: 23,25.2,35,30.26,42,16,15.62,30,40.32,26.5
m=28.39
c=5

Pgina 203 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package arreglo.datos;
/*
8.-Disear un algoritmo que permita almacenar 10 temperaturas. Se desea
calcular la media y obtener el nmero de temperaturas mayores o iguales que
la media.
*/
//Paquete de datos e/s de datos por consola
import java.util.Scanner;
import java.text.DecimalFormat;
//clase principal
public class Ejercicio8_Arreglos {
//permite dar formato de salida de datos
static DecimalFormat formato = new DecimalFormat("#0.00");
//metodo principal
public static void main(String args[]){
//declarar variables
int i=0,j=0,c=0;
double s=0.0,m=0.0,t=0.0;
double[] tem=new double[10];
Scanner lectura= new Scanner(System.in);
//entrada de datos
System.out.println("TEMPERATURAS EN GRADOS CELCIUS");
for(i=0;i<=9;i++){
System.out.print("Temperatura "+(i+1)+" : ");
t=lectura.nextDouble();
tem[i]=t;
}
//procesos de datos
for(i=0;i<=9;i++){
s=s+tem[i];
}
m=s/10;
for(j=0;j<=9;j++){
if(tem[j]>=m){
c=c+1;
}
}
//salida de datos
System.out.print("");
System.out.print("---------------------------");
System.out.println("La temperatura media: "+formato.format(m));
System.out.println("Temperaturas >= "+formato.format(m)+" : "+formato.format(c));
}//Fin del metodo
}//Fin de la clase

Pgina 204 de 237

Italo Yaranga Vite


Ejecucin del programa.

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

Pgina 205 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package arreglo.datos;
/*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.
*/
//Paquete de datos e/s de datos por consola
import java.util.Scanner;
//clase principal
public class Ejercicio9_Arreglos {
//metodo principal
public static void main(String args[]){
//declarar variables
int n, i, j;
int a[]=new int[4]; //arreglo de datos esttico
int b[]=new int[4]; //arreglo de datos esttico
int c[]=new int[4]; //arreglo de datos esttico
Scanner lectura=new Scanner(System.in);
//entrada de datos
for(i=0; i<4; i++){
System.out.print("Arreglo A numero "+(i+1)+": ");
n=lectura.nextInt();
a[i]=n;
}
for(i=0; i<4; i++){
System.out.print("Arreglo B numero "+(i+1)+": ");
n=lectura.nextInt();
b[i]=n;
}
for(i=0; i<4; i++){
c[i]=a[i]+b[i];
}
//salida de datos
for(j=0; j<4; j++){
System.out.println("Arreglo C numero"+(j+1)+": "+c[j]);
}
}//Fin del metodo
}//Fin de la clase
Ejecucin del programa.

Pgina 206 de 237

Italo Yaranga Vite


10. Disear un algoritmo para un conjunto de 10 personas se desea almacenar su edad. Cul
es la mayor edad y cuntas veces se repite la mayor edad.
Solucin:
*Anlisis de datos
E:e(edad)
S:me(mayor edad),cont(conteo)
*Algoritmo
1.-inicio
2.-e=0,i=0,me=0,cont=0,edad[10]:0
3.-para i=0 hasta 9
leer e
edad[i]=e
fin de para
me=edad[0]
para i=1 hasta 9
si edad[i]>me entonces
me=edad[i]
fin de si
fin de para
cont=0
para i=0 hasta 9
si edad[i]=me entonces
cont=cont+1
fin de si
fin de para
4.- escribir me,cont
5.-fin
*Prueba de Escritorio
e1=15
e2=16
e3=17
e4=16
e5=18
e6=18
e7=19
e8=20
e9=18
e10=20
me=20
cont=2

Pgina 207 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package arreglo.datos;
/*
10.Disear un algoritmo para un conjunto de 10 personas se desea almacenar su
edad. Cul es la mayor edad y cuntas veces se repite la mayor edad.
*/
//Paquete de datos e/s de datos por consola
import java.util.Scanner;
//clase principal
public class Ejercicio10_Arreglos {
//metodo principal
public static void main(String args[]){
//declarar variables
int e,i,me,cont=0;
int edad[]=new int[10];
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.println("Para las edades de un conjunto de 10 personas. Hallar la mayor
edad y cuantas veces se repite");
for(i=0;i<=9;i++){
System.out.print("Ingrese edad"+(i+1)+": ");
e=lectura.nextInt();
edad[i]=e;
}//fin de for
//proceso de datos
me=edad[0];
for(i=1;i<=9;i++){
if(edad[i]>me){
me=edad[i];
}//fin de if
}//fin de for
for(i=0;i<=9;i++){
if(edad[i]==me){
cont=cont+1;
}//fin de if
}//fin de for
//salida de datos
System.out.println("La mayor edad es: "+me);
System.out.println("La mayor edad aparece "+cont+" veces");
}//Fin del metodo
}//Fin de la clase

Pgina 208 de 237

Italo Yaranga Vite


Ejecucin del programa.

Pgina 209 de 237

Italo Yaranga Vite

[ SESION 09
Las matrices de datos permiten
almacenar datos en memoria
mediante el uso de filas y
columnas.

Pgina 210 de 237

Italo Yaranga Vite


SESION 09
MATRICES DE DATOS
1. Disear un algoritmo que permita registrar nmeros enteros dentro de una matriz de
3x3. Visualizar la suma de los nmeros, la suma de los n pares, la cantidad de los n
impares.
Solucin:
*Anlisis de datos
E:n(nmeros)
S:se(suma elementos),sp(suma pares),ci(cantidad de impares)
*Algoritmo
1.-inicio
2.-n=0,se=0,sp=0,ci=0,f=0,c=0,mnum[3,3]:0,r=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
se=se+mnum[f][c]
r=residuo(mnum[f][c]/2)
si r=0 entonces
sp=sp+mnum[f][c] //suma de pares
sino
ci=ci+1 //contador de impares
fin de si
fin de para
fin de para
5.-escribir se,sp,ci
6.-fin
*Prueba de escritorio
n=1-2-3-4-5-6-7-8-9
se=45
sp=20
ci=5

Pgina 211 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package matrices.datos;
/*
1.-Disear un algoritmo que permita registrar nmeros enteros dentro de una
matriz de 3x3. Visualizar la suma de los nmeros, la suma de los n pares,
la cantidad de los n impares.
*/
//Paquete de datos e/s de datos por consola
import java.util.Scanner;
//clase principal
public class Ejercicio1_Matrices {
//metodo principal
public static void main(String args[]){
//declarar variables
int n,se=0,sp=0,ci=0,f,c,r;
int[][] mnum=new int[3][3];
String m=new String();
Scanner lectura=new Scanner(System.in);
//entrada de datos
for(f=0;f<=2;f++){ //filas
for(c=0;c<=2;c++){ //columnas
System.out.print("Ingresar nmero:");
n=lectura.nextInt();
mnum[f][c]=n;
}
}
//proceso de datos
for(f=0;f<=2;f++){ //filas
for(c=0;c<=2;c++){ //columnas
se=se+mnum[f][c];
r=mnum[f][c]%2;
if(r==0){
sp=sp+mnum[f][c];
}else{
ci=ci+1;
}
}
}
//salida de datos
System.out.println("La suma de elementos es:"+se);
System.out.println("La suma de los n pares es:"+sp);
System.out.println("La cantidad de n impares es:"+ci);
}//Fin del metodo
}//Fin de la clase

Pgina 212 de 237

Italo Yaranga Vite


*Ejecucin del programa

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

Pgina 213 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package matrices.datos;
/*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.
*/
//Paquete de datos e/s de datos por consola
import java.util.Scanner;
//clase principal
public class Ejercicio2_Matrices {
//metodo principal
public static void main(String args[]){
//declarar variables
int n,f,c,sc1=0,sc2=0,sc3=0,sdp=0,sds=0,sfila=0;
int[][] mnum=new int[3][3];
int[] afila=new int[3];
String m=new String();
Scanner lectura=new Scanner(System.in);
//entrada de datos
for(f=0;f<3;f++){ //fila
for(c=0;c<3;c++){ //columna
System.out.print("Ingresar nmero:");
n=lectura.nextInt();
mnum[f][c]=n;
}
}
//proceso de datos
for(f=0;f<3;f++){ //fila
for(c=0;c<3;c++){ //columna
//diagonal principal
if(f==c){
sdp=sdp+mnum[f][c];
}
if((f+c)==2) {
sds=sds+mnum[f][c];
}
sfila=sfila+mnum[f][c];
//acumulador de filas
}
afila[f]=sfila;
sfila=0; //inicializar variable
sc1= sc1+mnum[f][0]; //acumulador de columnas
sc2= sc2+mnum[f][1];
sc3= sc3+mnum[f][2];
}
//salida de datos
System.out.println("La suma de la diagonal principal es: "+sdp);
System.out.println("La suma de la diagonal secundaria es: "+sds);
System.out.println("La suma de fila 1: "+afila[0]);
System.out.println("La suma de fila 2: "+afila[1]);
System.out.println("La suma de fila 3: "+afila[2]);
System.out.println("La suma de comuna 1: "+sc1);
System.out.println("La suma de comuna 2: "+sc2);
System.out.println("La suma de comuna 3: "+sc3);
}//Fin del metodo
}//Fin de la clase
Pgina 214 de 237

Italo Yaranga Vite


*Ejecucin del programa

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

Pgina 215 de 237

Italo Yaranga Vite

*Implementacin del algoritmo en JAVA.


package matrices.datos;
/*
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.
*/
//Paquete de datos e/s de datos por consola
import java.util.Scanner;
//clase principal
public class Ejercicio3_Matrices {
//metodo principal
public static void main(String args[]){
//declarar variables
String[] v1=new String[5];
String[] v2=new String[5];
String xdni=new String();
String nom=new String();
String m=new String();
int n,nmy,i,pos=0;
Scanner lectura=new Scanner(System.in);
//entrada de datos
for(i=0;i<v1.length;i++){
System.out.print("Ingresar DNI "+(i+1)+":");
xdni=lectura.next();
v1[i]=xdni;
System.out.print("Ingresar Nombre "+(i+1)+":");
nom=lectura.next();
v2[i]=nom;
}
//proceso de datos
System.out.print("Ingresar el DNI a buscar:");
xdni=lectura.next();
for(i=0;i<v1.length;i++){
if(v1[i].equalsIgnoreCase(xdni)){
pos=i;
i=v1.length+1;//permite finalizar la estructura repetitiva
}else{
m="Persona no existe";
pos=-1;
}
}
//salida de datos
if(pos>=0){
System.out.println(v2[pos]+" ");
}else{
System.out.println(m);
}
}//Fin del metodo
}//Fin de la clase

Pgina 216 de 237

Italo Yaranga Vite


*Ejecucin del programa

Pgina 217 de 237

Italo Yaranga Vite


4. Disear un algoritmo que permita registrar 5 animales de un zoolgico dentro de un matriz
tomando encuenta su nombre y el tipo de alimentacin (carnvoro,herbvoro, omnvoro).
Dentro de otra matriz de 5x2 almacenar el precio por paquete de alimento para la
respectiva especie y la cantidad de paquetes consumidos en el tiempo a evaluar. Visualizar
los datos de la especie que tiene mayores egresos en el rubro de la alimentacin.
Solucin:
*Anlisis de datos
E: nom(nombre del animal), clas(tipo de alimentacin), n(nmero)
S: Datos de la especie con mayores egresos
*Algortimo
1.-inicio
2.-nom='', clas='', n=0.0, i=0, f=0, c=0, k=0, pos=0,
my=0.0, m[5,3]:0.0, cd[5]:0.0, anom[5]:''
aclas[5]:''
3.-para i=0 hasta 4
escribir 'ESPECIE'(i+1)
leer nom, clas
anom[i]=nom
aclas[i]=clas
fin de para
para f=0 hasta 4
escribir 'ESPECIE'(f+1)': PxPQT -> CANTIDAD'
para c=0 hasta 1
leer n
m[f,c]=n
fin de para
fin de para
4.-para k=0 hasta 4
cd[k]=m[k,0]*m[k,1]
fin de para
my=cd[0]
pos=0
si cd[1]>my entonces
my=cd[1]
pos=1
fin de si
si cd[2]>my entonces
my=cd[2]
pos=2
fin de si
si cd[3]>my entonces
my=cd[3]
pos=3
fin de si
si cd[4]>my entonces
my=cd[4]
pos=4
fin de si
5.-escribir 'ESPECIE'(pos+1)'/'anom[pos]'/'aclas[pos]
6.-fin
*Prueba de Escritorio
anom[5]: 'PUMA', 'OVEJA', 'CONDOR', 'MONO', 'JIRAFA'
aclas[5]: 'CARNIVORO', 'HERBIVORO', 'CARNIVORO', 'OMNIVORO', 'HERBIVORO'
n= 500, 10, 100, 8, 300, 9, 400, 6, 200, 8
'ESPECIE 1'
anom[pos]: 'PUMA'
aclas[pos]: 'CARNIVORO'

Pgina 218 de 237

Italo Yaranga Vite


*Implementacin del algoritmo JAVA.
package matrices.datos;
/*
4.-Disear un algoritmo que permita registrar 5 animales de un zoolgico dentro
de un matriz tomando encuenta su nombre y el tipo de alimentacin
(carnvoro,herbvoro, omnvoro). Dentro de otra matriz de 5x2 almacenar el
precio por paquete de alimento para la respectiva especie y la cantidad de
paquetes consumidos en el tiempo a evaluar. Visualizar los datos de la especie
que tiene mayores egresos en el rubro de la alimentacin.
*/
//Paquete de datos e/s de datos por consola
import java.util.Scanner;
//clase principal
public class Ejercicio4_Matrices {
//metodo principal
public static void main(String args[]){
//declarar variables
String[] v1=new String[5];
String[] v2=new String[5];
String nom=new String();
String clas=new String();
int n,i,f,c,pos,k;
double my;
double m[][]=new double[5][2];
double cd[]=new double[5];
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.println(" ZOOLOGICO XD");
for(i=0;i<=4;i++){
System.out.println("ESPECIE "+(i+1)+" : ");
System.out.print("Ingresar nombre: ");
nom=lectura.next();
v1[i]=nom;
System.out.print("Tipo de alimentacion: ");
clas=lectura.next();
v2[i]=clas;
}//fin for
System.out.print("____________________________________");
for(f=0;f<=4;f++){ //filas
System.out.println("ESPECIE "+(f+1)+": PxPQT -> CANTIDAD");
for(c=0;c<=1;c++){ //columna
System.out.print("-Ingresar: ");
n=lectura.nextInt();
m[f][c]=n;
}
}
//procesos de datos
System.out.print("____________________________________");
for(k=0;k<=4;k++){
cd[k]=m[k][0]*m[k][1];
}

Pgina 219 de 237

Italo Yaranga Vite


my=cd[0];
pos=0;
if(cd[1]>my){
my=cd[1];
pos=1;
}
if(cd[2]>my){
my=cd[2];
pos=2;
}
if(cd[3]>my){
my=cd[3];
pos=3;
}
if(cd[4]>my){
my=cd[4];
pos=4;
}
//salida de datos
System.out.println("Genera mas egresos:");
System.out.println("****************** ESPECIE "+(pos+1)+" / "+v1[pos]+" /
"+v2[pos]);
}//Fin del metodo
}//Fin de la clase
*Ejecucin del programa

Pgina 220 de 237

Italo Yaranga Vite


5. Disear un algoritmo que permita registrar 7 regiones en una matriz asignandole un codigo y
especificando su capital. Luego del almacenamiento se debe solicitar ingresar un codigo de
regin apareciendo de inmediato la regin que representa y una interrogante sobre su
capital. Visualizar un mensaje que me informe si la respuesta fue correcta o no.
Solucin:
*Anlisis de datos
E: cod(cdigo de regin), reg(regin), cap(capital), xcod, xcap
S: m(mensaje)
*Algoritmo
1.-inicio
2.-cod='', reg='', cap='', acod[7]:'', areg[7]:'', acap[7]:'', i=0,
xcod='', xcap='', m=''
3.-para i=0 hasta 6
leer cod, reg, cap
acod[i]=cod
areg[i]=reg
acap[i]=cap
fin de para
4.-escribir 'PONTE A PRUEBA'
leer xcod
para i=0 hasta 6
si acod[i]=xcod entonces
pos=i
escribir areg[pos]
i=7
fin de si
fin de para
escribir 'CUAL ES SU CAPITAL?'
leer xcap
para i=0 hasta 6
si acap[pos]=xcap entonces
m='Respuesta Correcta'
sino
m='Respuesta Incorrecta'
fin de si
fin de para
5.-escribir m
6.-fin
*Prueba de Escritorio
acod[7]: 1, 2, 3, 4, 5, 6, 7
areg[7]: 'LAMBAYEQUE', 'ANCASH', 'UCAYALI', 'LORETO', 'AMAZONAS', 'JUNIN',
'APURIMAC'
acap[7]: 'CHICLAYO', 'HUARAZ', 'PUCALLPA', 'IQUITOS', 'CHACHAPOYAS',
'HUANCAYO', 'ABANCAY'
xcod= '3'
areg[pos]='UCAYALI'
xcap= 'IQUITOS'
m='Respuesta Incorrecta'

Pgina 221 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package matrices.datos;
/*
5.Disear un algoritmo que permita registrar 7 regiones en una matriz
asignandole un codigo y especificando su capital. Luego del almacenamiento se
debe solicitar ingresar un codigo de regin apareciendo de inmediato la regin
que representa y una interrogante sobre su capital. Visualizar un mensaje que
me informe si la respuesta fue correcta o no.
*/
//Paquete de datos e/s de datos por consola
import java.util.Scanner;
//clase principal
public class Ejercicio5_Matrices {
//metodo principal
public static void main(String args[]){
//declarar variables
String[] v1=new String[7];
String[] v2=new String[7];
String[] v3=new String[7];
String cod=new String();
String reg=new String();
String cap=new String();
int i,pos=0;
String xcod=new String();
String xcap=new String();
String m=new String();
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.println(" REGINES DEL PERU");
for(i=0;i<=6;i++){
System.out.print("Ingresar codigo: ");
cod=lectura.next();
v1[i]=cod;
System.out.print("Ingresar region: : ");
reg=lectura.next();
v2[i]=reg;
System.out.print("Ingresar capital : ");
cap=lectura.next();
v3[i]=cap;
}//fin for
//procesos de datos
System.out.println("");
System.out.println("
(......)");
System.out.println("
^_^");
System.out.println("PONTE A PRUEBA***");
System.out.print("Ingresar un codigo: ");
xcod=lectura.next();
for(i=0;i<=6;i++){
if(v1[i].equalsIgnoreCase(xcod)){
pos=i;
System.out.println("------------------------"+v2[pos]);
i=7;
}//fin if
}//fin for

Pgina 222 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
System.out.println("");
System.out.print("CUAL ES SU CAPITAL?:");
xcap=lectura.next();
for(i=0;i<=6;i++){
if(v3[pos].equalsIgnoreCase(xcap)){
m="Respuesta Correcta";
}else{
m="Respuesta Incorrecta";
i=7;
}//fin if
}//fin for
//salida de datos
System.out.println("");
System.out.println("-------------"+m);
}//Fin del metodo
}//Fin de la clase
*Ejecucin del programa

Pgina 223 de 237

Italo Yaranga Vite


6. Disear un algoritmo que permita registrar en una matriz 4 lneas de transporte tomando en
cuenta su distrito de partida y su distrito de destino, en la ultima fila se debe registre NPA
(no podemos ayudarlo). Realizar una bsqueda con el distrito al que quiero dirigirme y
visualizar los datos de la ruta de transporte que puedo usar si la bsqueda es satisfactoria
sino mostrar el mensaje NPA.
Solucin:
*Anlisis de datos
E: l(lnea de transpote), dp(distrito de partida), dd(destrito de destino),
dqd(distrito a dirigirme)
S: Datos de la empresa o NPA
*Algortimo
1.-inicio
2.-l='', dp='', dd='', al[5]:'', adp[5]:'', add[5]:'', i=0, pos=0, dqd=''
3.-para i=0 hasta 4
leer l, dp, dd
al[i]=l
adp[i]=dp
add[i]=dd
fin de para
4.-escribir 'A DONDE QUIERE DIRIGIRSE'
leer dqd
para i=0 hasta 4
si add[i]=dqd entonces
pos=i
i=5
sino
pos=4
fin de si
fin de para
5.-escribir al[pos], adp[pos], add[pos]
6.-fin
*Prueba de Escritorio
al[5]: 'SM-27', 'SO-16', 'SO-18','NO-01','NPA'
adp[5]:
'PACHACAMAC','SAN_BARTOLO','VILLA_EL_SALVADOR','VILLA_EL_SALVADO
R','-'
add[5]: 'BREA','SAN_MIGUEL','CARABAYLLO','COMAS','-'
dqd=LURIN
NPA: ---

Pgina 224 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package matrices.datos;
/*6.Disear un algoritmo que permita registrar en una matriz 4 lneas de
transporte tomando en cuenta su distrito de partida y su distrito de destino,
en la ultima fila se debe registre NPA (no podemos ayudarlo). Realizar una
bsqueda con el distrito al que quiero dirigirme y visualizar los datos de la
ruta de transporte que puedo usar si la bsqueda es satisfactoria sino mostrar
el mensaje NPA.
*/
//Paquete de datos e/s de datos por consola
import java.util.Scanner;
//clase principal
public class Ejercicio6_Matrices {
//metodo principal
public static void main(String args[]){
//declarar variables
String[] v1=new String[4];
String[] v2=new String[4];
String[] v3=new String[4];
String l=new String();
String dp=new String();
String dd=new String();
int i,pos=0;
String dqd=new String();
Scanner lectura=new Scanner(System.in);
//entrada de datos
for(i=0;i<4;i++){
System.out.print("Ingresar ruta: ");
l=lectura.next();
v1[i]=l;
System.out.print("Distrito de partida: ");
dp=lectura.next();
v2[i]=dp;
System.out.print("Distrito de destino: ");
dd=lectura.next();
v3[i]=dd;
}
//procesos de datos
System.out.print("");
System.out.print("A DONDE QUIERE DIRIGIRSE? ");
dqd=lectura.next();
for(i=0;i<4;i++){
if(v3[i].equalsIgnoreCase(dqd)){
pos=i;
i=5;
}else{
pos=4;
}//fin if
}//fin for
//salida de datos
System.out.println("");
System.out.println("TIENE LA SIGUIENTE OPCION");
System.out.println(v1[pos]+" : "+v2[pos]+"-"+v3[pos]);
}//Fin del metodo
}//Fin de la clase

Pgina 225 de 237

Italo Yaranga Vite


*Ejecucin del programa

7. Disear un algoritmo que genere la suma de dos matrices de 2x2.


Solucin:
*Anlisis de datos:
E:n, f, c, a[2][2], b[2][2]
S:s[2][2]
*Algoritmo:
1.-inicio
2.-n=0, f=0, c=0, a[2][2]:entero, b[2][2]:entero, s[2][2]:entero
3.-para f = 0 hasta 2 // fila
para c = 0 hasta 2 // columna
leer n
a[f][c]=n
fin de para
fin de para
para f = 0 hasta 2 // fila
para c = 0 hasta 2 // columna
leer n
b[f][c]=n
fin de para
fin de para
4.-para f = 0 hasta 2 // fila
para c = 0 hasta 2 // columna
s[f][c]=a[f][c]+b[f][c]
escribir s[f][c]
s[f][c]=0
fin de para
fin de para
5.-fin
*Prueba de escritorio:
a[2][2]= 1 2
34
b[2][2]= 5 6
78
s[2][2]= 6 8
10 12
Pgina 226 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
#include <iostream.h> // librera de entrada y salida de datos de una consola
#include <conio.h>
//procedimiento principal
int main(){
//declarar variables
int n, f, c;
int a[2][2];
int b[2][2];
int s[2][2];
//entrada de datos
for(f=0;f<2;f++){ // filas
for(c=0;c<2;c++){ // columnas
cout<<"Matriz A. Ingresar numero de la fila "<<(f+1)<<": ";cin>>n;
a[f][c]=n;
}
}
for(f=0;f<2;f++){ // filas
for(c=0;c<2;c++){ // columnas
cout<<"Matriz B. Ingresar numero de la fila "<<(f+1)<<": ";cin>>n;
b[f][c]=n;
}
}

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

Pgina 227 de 237

Italo Yaranga Vite

*Ejecucin del programa

Pgina 228 de 237

Italo Yaranga Vite


8. Disear un algoritmo que lea por teclado una matriz 3x3 y muestre su matriz traspuesta.
Solucin:
*Analisis
E:m(matriz ingresada)
S:----*Algoritmo
1.-inicio
2.- n=0,i=0,j=0,m[3][3]:0
3.-//leer m
para i=1 hasta 3
para j=1 hasta 3
leer n
m[i][j]=n
fin para
fin para
4.- //imprimir matriz transpuesta
para j=1 hasta 3
para i=1 hasta 3
imprimir
m[i][j]=n
fin para
fin para
5.- fin
*Prueba de escritorio
M =(/ 1 2 3 - 4 5 6 - 7 8 9 /)
MT =(/ 1 4 7 - 2 5 8 - 3 6 0/)

Pgina 229 de 237

Italo Yaranga Vite

*Implementacin del algoritmo en JAVA.


package matrices.datos;
/*
8.-Disear un algoritmo que lea por teclado una matriz 3x3 y muestre su matriz
traspuesta.
*/
//Paquete de datos e/s de datos por consola
import java.util.Scanner;
//clase principal
public class Ejercicio8_Matrices {
//metodo principal
public static void main(String args[]){
//declarar variables
int n,i,j;
int[][] m=new int[4][4];
Scanner lectura=new Scanner(System.in);
//entrada de la matriz
System.out.println("Ingresar elementos de la matriz");
for (i=1;i<=3;i++){
for (j=1;j<=3;j++){
n=lectura.nextInt();
m[i][j]=n;
}//end for J
}//end for
for (j=1;j<=3;j++){
System.out.println("");
for (i=1;i<=3;i++){
System.out.print(m[i][j]+" ");
}//fin for
}//fin for
System.out.println("");
}//Fin del metodo
}//Fin de la clase
*Ejecucin del programa

Pgina 230 de 237

Italo Yaranga Vite


9. Disear un algoritmo que lea por teclado una matriz M(3x3) y muestre las matrices M+M y
MxM.
Solucin:
*Analisis
E:m1(matriz ingresada)
S:m2(matriz suma),m3(matriz producto)
*subrutina
procedimiento suma(m[3][3]:entero)
i=0,j=0,m2[3][3]:0
para i=0 hasta 2
para j=0 hasta 2
m2[i][j]=2*m[i][j]
imprimir m2[i][j]
fin para
fin para
procedimiento producto(m[3][3]:entero)
i=0,j=0,m3[3][3]:0
para i=0 hasta 2
para j=0 hasta 2
m3[i][j]=m[i][j]*m[i][j]
imprimir m3[i][j]
fin para
fin para
*Algoritmo
1.- inicio
2.- i=0,j=0,n=0,m1[3][3]:0
3.- //leer m1
para i=0 hasta 2
para j=0 hasta 2
leer n
m1[i][j]=n
fin para
fin para
4.- //llamando a las subrutinas
suma(m1)
producto(m1)
5.- fin
*Prueba de escritorio
m1= 1-2-3-4-5-6-7-8-9
M+M= 2-4-6-8-10-12-14-16-18
M*M= 1-4-9-16-25-36-49-64-81

Pgina 231 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package matrices.datos;
/*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.*/
import java.util.Scanner;
//clase principal
public class Ejercicio9_Matrices {
static Scanner lectura=new Scanner(System.in);
//metodo tipo procedimiento suma
static void suma(int m[][]){
int i,j;
int[][] m2=new int[3][3] ;
System.out.println("La matriz suma M+M= ");
for (i=0;i<=2;i++){
System.out.print("");
for (j=0;j<=2;j++){
m2[i][j]=2*m[i][j];
System.out.print(m2[i][j]+" ");
}//fin for
System.out.println();
}//fin for
}//fin metodo
static void producto(int m[][]){
int i,j;
int[][] m3=new int[3][3];
System.out.println("La matriz producto M*M= ");
for (i=0;i<=2;i++){
System.out.print("");
for (j=0;j<=2;j++){
m3[i][j]=m[i][j]*m[i][j];
System.out.print(m3[i][j]+" ");
}//fin for
System.out.println();
}//fin for
}//fin de metodo
//metodo principal
public static void main(String args[]){
//declarando variables
int i,j,n;
int[][] m1=new int[3][3];
//entrada de datos
System.out.println("Infresar los elementos de la matriz:");
for (i=0;i<=2;i++){
for (j=0;j<=2;j++){
n=lectura.nextInt();
m1[i][j]=n;
}//fin for
}//fin de for
//salida de datos
suma(m1);
System.out.println("");
producto(m1);
}//fin metodo
}//Fin de la clase
Pgina 232 de 237

Italo Yaranga Vite


*Ejecucin del programa

Pgina 233 de 237

Italo Yaranga Vite


10. Disear un algoritmo para un conjunto de 5 alumnos se desea almacenar las notas de sus
4 prcticas y presentar el promedio por alumno, sabiendo que este se calcula eliminando la
nota ms baja.
Solucin:
*Anlisis de datos
E:nt(nota)
S:promedios
*Algoritmo
1.-inicio
2.-nt=0.0,s=0.0,min=0.0,f=0,c=0,nota[5,4]:0.0
3.-para f=0 hasta 4//fila
para c=0 hasta 3//columna
leer nt
nota[f,c]=nt
fin de para
fin de para
4.-para f=0 hasta 4
s=nota[f,0]
min=nota[f,0]
para c=1 hasta 3
si nota[f,c]<min entonces
min=nota[f,c]
fin de si
s=s+nota[f,c]
fin de para
escribir (s-min)/3
fin de para
5.-fin
*Prueba de Escritorio
notas del alumno 1 = 16-14-15-13
notas del alumno 2 = 17-14-20-13
notas del alumno 3 = 11-15-18-18
notas del alumno 4 = 14-15-18-19
notas del alumno 5 = 15-17-14-18
promedio de notas del alumno 1 = 15
promedio de notas del alumno 2 = 17
promedio de notas del alumno 3 = 17
promedio de notas del alumno 4 = 17.3333
promedio de notas del alumno 5 = 16.6667

Pgina 234 de 237

Italo Yaranga Vite


*Implementacin del algoritmo en JAVA.
package matrices.datos;
/*
10.Disear un algoritmo para un conjunto de 5 alumnos se desea almacenar las
notas de sus 4 prcticas y presentar el promedio por alumno, sabiendo que este
se calcula eliminando la nota ms baja.
*/
//Paquete de datos e/s de datos por consola
import java.util.Scanner;
import java.text.DecimalFormat;
//clase principal
public class Ejercicio10_Matrices {
//permite dar formato de salida de datos
static DecimalFormat formato = new DecimalFormat("#0.0");
//metodo principal
public static void main(String args[]){
//declarar variables
double nt,s,min;
int f,c;
double[][] nota=new double[5][4];
Scanner lectura=new Scanner(System.in);
//entrada de datos
System.out.println("Para un conjunto de 5 alumnos se presentara el promedio
por alumno de las 4 practicas, sabiendo que este se calcula eliminando la nota mas
baja");
for(f=0;f<=4;f++){
System.out.println("Notas del Alumno "+(f+1));
for(c=0;c<=3;c++){
System.out.print("Ingrese nota "+(c+1)+": ");
nt=lectura.nextInt();
nota[f][c]=nt;
}//fin de for
System.out.println("");
}//fin de for
//proceso de datos
for(f=0;f<=4;f++){
s=nota[f][0];
min=nota[f][0];
for(c=1;c<=3;c++){
if(nota[f][c]<min){
min=nota[f][c];
}//fin de if
s=s+nota[f][c];
}//fin de for
System.out.println("El promedio de las notas del Alumno "+(f+1)+" es:
"+formato.format((s-min)/3));
}//fin de for
}//Fin del metodo
}//Fin de la clase

Pgina 235 de 237

Italo Yaranga Vite

*Ejecucin del programa

Pgina 236 de 237

Das könnte Ihnen auch gefallen