Josue pedro ramos quispe

125
PRIMER INFORME DE LABORATORIO DESARROLLO DE LOS EJERCICIOS 1. Diseñar el algoritmo y programa para hallar el cociente y residuo de dos números enteros. I. Análisis: a) Datos de entrada: a, b. b) Datos de salida: c, r. c) Modelo matemático/lógico: c=a div b r=a mod b II. Diseño a) Diagrama de flujo inicio a, b lee c=a/b r=a%b c, r imp. fin

Transcript of Josue pedro ramos quispe

PRIMER INFORME DE LABORATORIO

DESARROLLO DE LOS EJERCICIOS

1. Diseñar el algoritmo y programa para hallar el cociente y residuo de dos números enteros.

I. Análisis:

a) Datos de entrada: a, b.b) Datos de salida: c, r.c) Modelo matemático/lógico:

c=a div br=a mod b

II. Diseño

a) Diagrama de flujo

fin

c, r imp.

c=a/br=a%b

a, b lee

inicio

b) Pseudocódigo:

Inicio

Entrada: lee: a, b

Proceso:

c=a/b r=a%b

in=(r1*10000)+(r2*1000)+(r3*100)+(r4*10)+r5

Salida: imprime: c, r Fin

III. Aplicación

a) Codificación:1. package ejercicios;2. import java.util.Scanner;3. public class Ejercicios {4. public static void main(String[] args) {5. int a=0,b=0,c=0,r=0;6. Scanner entrada=new Scanner(System.in);7. System.out.println("ingrese el primer numero");8. a=entrada.nextInt();9. System.out.println("ingrese el primer numero");10. b=entrada.nextInt();

11. c=a/b;12. r=a%b;

13. System.out.println("el residuo es: "+r);14. System.out.println("el cociente es: "+c);15. }16. }

b) Prueba de escritorio

2. Diseñar el algoritmo y programa tal que dado un número de 5 dígitos devolver el número en orden inverso.

I. Análisis:

a) Datos de entrada: n.b) Datos de salida: in.c) Modelo matemático/lógico:

n1=n/10r1=n%10n2=n1/10r2=n1%10n3=n2/10r3=n2%10n4=n3/10r4=n3%10r5=n4%10 in= (r1*10000)+(r2*1000)+(r3*100)+(r4*10)+r5

II. Diseño:

a) Diagrama de flujo:

n lee

Inicio

fin

In imprime

in=(r1*10000)+(r2*1000)+(r3*100)+(r4*10)+r5

n1=n/10r1=n%10n2=n1/10r2=n1%10n3=n2/10r3=n2%10n4=n3/10r4=n3%10r5=n4%10

b) Pseudocódigo:

Inicio

Entrada: lee: n

Proceso:

n1=n/10 r1=n%10 n2=n1/10 r2=n1%10 n3=n2/10 r3=n2%10 n4=n3/10 r4=n3%10 r5=n4%10 in=(r1*10000)+(r2*1000)+(r3*100)+(r4*10)+r5

Salida: imprime: in Fin

III. Aplicación:

a) Codificación:

1. package ejercicio2;2. import java.util.Scanner;3. public class Ejercicio2 {4. public static void main(String[] args) {5. int n,r1,r2,r3,r4,r5,in,n1,n2,n3,n4;

6. System.out.println("ingrese un número con cinco dígitos");7. Scanner num=new Scanner (System.in);8. n=num.nextInt ();

9. n1=n/10;10. r1=n%10;11. n2=n1/10;12. r2=n1%10;13. n3=n2/10;14. r3=n2%10;15. n4=n3/10;16. r4=n3%10;

17. r5=n4%10;

18. in=(r1*10000)+(r2*1000)+(r3*100)+(r4*10)+r5;

19. System.out.println("El número con cinco dígitos inversamente es:");

20. if(n%10==0)21. {

22. System.out.println("0"+in);23. }

24. else25. {26. System.out.println(in);27. }

28. }29. }

b) Prueba de escritorio:

3. Diseñar el algoritmo y programa que permita crear un programa para convertir una cantidad dada en segundos a horas, minutos y segundos.

I. Análisis a) Datos de entrada: sb) Datos de salida: h, m, sfc) Modelo M. /L.:

h=s div3600 s=s mod 3600 m=s div 60 s=s mod 60

sf=s

II. Diseño:

a) Diagrama de flujo:

b) Pseudocódigo: inicio datos de entrada: s proceso: h=s/3600

s=s%3600 m=s/60 s=s%60 sf=s

datos de salida: h, m, sf fin

III. Aplicación:a) Codificación:

1. package ejercicio.pkg3;2. import java.util.Scanner;3. public class Ejercicio3 {

Fin

h=s/3600 s=s%3600 m=s/60s=s%60sf=s

c, r imp.

s lee

Inicio

4. public static void main(String[] args) {5. int s=0, h=0,m=0,sf=0 ;6. Scanner entrada=new Scanner(System.in);7. System.out.println("ingrese la cantidad de segundos");8. s=entrada.nextInt();9. h=s/3600;10. s=s%3600; 11. m=s/60;12. s=s%60; 13. sf=s; 14. System.out.println("hay "+h+" horas "+m+" minutos "+sf+" segundos");15. }16. }

b) Prueba de escritorio

4. Diseñar el algoritmo y programa para determinar si un número entero es positivo, negativo o neutro.

I. Análisis:

a) Datos de entrada: x.b) Datos de salida: “positivo”, “negativo”, “neutro”.c) Modelo matemático/lógico:

if(x==0)

Verdad: “El número es neutro” Falso: if(x>0)

Verdad: “El número es positivo” Falso: “El número es negativo”

II. Diseño:

a) Diagrama de flujo:

b) Pseudocódigo:

“neutro”

F

V

FV if

x>0

if

x==0

fin

x lee

inicio

“positivo” “negativo”

Inicio

Entrada: lee: x

Proceso:

if(x==0) Verdad: “El número es neutro” Falso: if(x>0)

Verdad: “El número es positivo” Falso: “El número es negativo”

Salida: imprime: “neutro”, “positivo”, “negativo”. Fin

III. Aplicación:

a) Codificación:

1. package ejercicio4;2. import java.util.Scanner;3. public class Ejercicio4 {4. public static void main(String[] args) {5. int x;

6. System.out.println("Ingrese un número entero");7. Scanner num=new Scanner(System.in);8. x=num.nextInt();

9. if(x==0)10. {11. System.out.println("El número es neutro");12. }13. else14. {15. if(x>0)16. {17. System.out.println("El número es positivo");18. }19. else20. {21. System.out.println("El número es negativo");22. }23. }

24. }

25. }

b) Prueba de escritorio:

5. Diseñar el algoritmo y programa tal que dado tres números enteros devolver el número mayor.

I. Análisis a) Datos de entrada: a, b, cb) Datos de salida: ac) Modelo M. /L.: Si a<b V: aux=a a=b b=aux Si a<c V: aux=a a=c c=aux

II. Diseño:

a) Diagrama de flujo:

a,b,c lee

inicio

b) Pseudocódigo:

inicio datos de entrada: a, b, c proceso: if(a<b) aux=a a=b b=aux if(a<c) aux=a a=c

c=aux datos de salida: a fin

III. Aplicación:a) Codificación:

1. package ejercicio.pkg5;2. import java.util.Scanner;3. public class Ejercicio5 {4. public static void main(String[] args) {5. int a=0,b=0,c=0,aux=0;6. Scanner entrada=new Scanner(System.in);7. System.out.println("ingrese el primer numero entero");8. a=entrada.nextInt();9. System.out.println("ingrese el segundo numero entero");10. b=entrada.nextInt();11. System.out.println("ingrese el tercer numero entero");12. c=entrada.nextInt();13. 14. if(a<b)15. {16. aux=a;17. a=b;18. b=aux;19. } 20.21. if(a<c)22. {23. aux=a;24. a=c;25. c=aux;26. }27. 28. System.out.println("el número mayor es "+a);29. }30. }

b) Prueba de escritorio

6. Diseñar el algoritmo y programa tal que dado la hora, minuto y segundo, encuentre la hora del siguiente segundo.

I. Análisis:

a) Datos de entrada: h,m,s.b) Datos de salida: hn, mn, sn.c) Modelo matemático/lógico:

t=h*3600+m*60+s+1 hn=t/3600 r=t%3600 mn=r/60 r1=r%60 sn=r1

II. Diseño:

a) Diagrama de flujo:

Hn,mn,sn

h,m,s lee

Inicio

fin

t=h*3600+m*60+s+1 hn=t/3600 r=t%3600 mn=r/60 r1=r%60 sn=r1

c) Pseudocódigo:

Inicio

Entrada: lee: h,m,s.

Proceso:

t=h*3600+m*60+s+1 hn=t/3600 r=t%3600 mn=r/60 r1=r%60 sn=r1

Salida: imprime: hn,mn,sn. Fin

III. Aplicación:

a) Codificación:

1. package ejercicio6;2. import java.util.Scanner;3. public class Ejercicio6 {4. public static void main(String[] args) {5. int h,m,s,t,r,hn,mn,sn,r1;

6. System.out.println("Ingrese la hora");7. Scanner num=new Scanner(System.in);8. h=num.nextInt();

9. System.out.println("Ingrese el minuto");10. Scanner num1=new Scanner(System.in);11. m=num.nextInt();

12. System.out.println("Ingrese los segundos");13. Scanner num2=new Scanner(System.in);14. s=num.nextInt();

15. t=h*3600+m*60+s+1;16. hn=t/3600;17. r=t%3600;18. mn=r/60;19. r1=r%60;20. sn=r1;

21. System.out.println("La hora del siguiente segundo es:");

22. System.out.println(hn+":"+mn+":"+sn);

23. }24. }

c) Prueba de escritorio:

7. Diseñar el algoritmo y programa tal que dada la fecha (D,M,A) encuentre la fecha del día siguiente.

I. Análisis:

a) Datos de entrada: d, m, a.b) Datos de salida: d, m, a.c) Modelo matemático/lógico:

if(d>=28) switch (m) case 1: case 3: case 5: case 7: case 8: case 10: if(d==31) d=d-30 m=m+1 else d=d+1 case 2: r=a%4 if(r==0)

d=29 else d=d-27 m=m+1 case 4: case 6: case 9: case 11: if(d==30) d=d-29 m=m+1 else d=d+1 case 12: if(d==31) d=1 m=1 a=a+1 else d=d+1 else

d=d+1

II. Diseño

a) Diagrama de flujo

a,b,c lee

inicio

if

d>=28

d,m,a imp.

fin

d=d-30m=m+1

d=d+1

if

d==311

d=d+1d=1m=1

a=a+1

if

d==31

d=d-27m=m+1

d=29

if

r%4==0

d=d+1d=d-29m=m+1

if

d==30

m

1,3,5,7,8,10

V F

V F

4,6,9,11

V F

d=d+1

FV

2

FV

12

b) Pseudocódigo: Inicio

Entrada: lee: d, m, a

Proceso:if(d>=28) { switch (m) { case 1: case 3: case 5: case 7: case 8: case 10: { if(d==31) { d=d-30; m=m+1; } else { d=d+1; } } break; case 2: { r=a%4; if(r==0) { d=29; } else { d=d-27; m=m+1; } } break; case 4: case 6: case 9:

case 11: { if(d==30) { d=d-29; m=m+1; } else { d=d+1; } } break; case 12: { if(d==31) { d=1; m=1; a=a+1; } else { d=d+1; } } break; } } else { d=d+1; }

Salida: imprime: d, m, a Fin

III. Aplicacióna) Codificación:

1. package ejercicio.pkg7;2. import java.util.Scanner;3. public class Ejercicio7 {4. public static void main(String[] args) {5. Scanner teclado=new Scanner(System.in);6. int m=0,d=0,a=0,r;7. System.out.println("Ingrese la fecha dia: ");8. d=teclado.nextInt();9. System.out.println("Ingrese la fecha mes: ");10. m=teclado.nextInt();

11. System.out.println("Ingrese la fecha año: ");12. a=teclado.nextInt();

13. if(d>=28)14. {15. switch (m)16. {

17. case 1:18. case 3:19. case 5:20. case 7:21. case 8:22. case 10:23. {24. if(d==31)25. {26. d=d-30;27. m=m+1;28. }29. else30. {31. d=d+1;32. }33. }34. break;35. case 2:36. {37. r=a%4;38. if(r==0)39. {40. d=29;41. }42. else43. {44. d=d-27;45. m=m+1;46. }47. }48. break;49.50. case 4:51. case 6:52. case 9:53. case 11:54. {55. if(d==30)56. {

57. d=d-29;58. m=m+1;59. }60. else61. {62. d=d+1;63. }64. }65. break;66. case 12:67. {68. if(d==31)69. {70. d=1;71. m=1;72. a=a+1;73. }74. else75. {76. d=d+1;77. }78. }79. break;80. }81. }82. else83. {84. d=d+1;85. }86. System.out.println("El dia siguiente es: "+d+"/"+m+"/"+a);87. }88. }

b) Prueba de escritorio

8. Diseñar el algoritmo y programa que permita determinar si un alumno aprueba o reprueba un curso, sabiendo que aprobará si su promedio de tres calificaciones es mayor o igual a 70; reprueba en caso contrario.

I. Análisis:

a) Datos de entrada: n1,n2,n3.b) Datos de salida: “aprueba”, “reprueba”.c) Modelo matemático/lógico:

P=(n1+n2+n3)/3

if(P>=70)

Verdad: “aprueba” Falso: “reprueba”

II. Diseño:

a) Diagrama de flujo:

F

P=(n1+n2+n3)/3

V if

P>=70

fin

n1,n2,n3

inicio

“reprueba”

“aprueba”

c) Pseudocódigo:

Inicio

Entrada: lee: n1, n2, n3.

Proceso:

P=(n1+n2+n3)/3if(P>=70)

Verdad: “aprueba” Falso: “reprueba”

Salida: imprime: “aprueba”, “reprueba”. Fin

III. Aplicación:

a) Codificación:

1. package ejercicio8;2. import java.util.Scanner;3. public class Ejercicio8 {4. public static void main(String[] args) {

5. int n1,n2,n3,p;

6. System.out.println("Ingrese la pimera nota");7. Scanner num=new Scanner(System.in);8. n1=num.nextInt();

9. System.out.println("Ingrese la segunda nota");10. Scanner num1=new Scanner(System.in);11. n2=num.nextInt();

12. System.out.println("Ingrese la tercera nota");13. Scanner num2=new Scanner(System.in);14. n3=num.nextInt();

15. p=(n1+n2+n3)/3;

16. if(p>=70)17. {18. System.out.println("Aprueba el curso");

19. }20. else

21. {22. System.out.println("Reprueba el curso");23. }

24. }25. }

b) Prueba de escritorio:

9. Diseñar el algoritmo y programa que permita obtener cuanto dinero se le descuenta al cliente, bajo las siguientes condiciones: en un supermercado se hace una promoción, mediante la cual el cliente obtiene un descuento, dependiendo de un número que se escoge al azar. Si el numero escogido es menor que 74 el descuento es de 15% sobre el total de la compra, si es mayor o igual a 74 el descuento es de 20%.

I) Análisis:

a) Datos de entrada: a, b.b) Datos de salida: tp.c) Modelo matemático/lógico:

si b>=74 v:tp= (a*0.8)else f: tp=(a*0.85)

II) Diseñoa) Diagrama de flujo

b) Pseudocódigo:

Inicio

Entrada: lee: a, b

Proceso:If b>=74 v:tp=(int) (a*0.8)else v: tp=(int) (a*0.85)

Salida: imprime: tp Fin

III) Aplicacióna) Codificación:

1. package ejercicio.pkg9;2. import java.util.Scanner;3. public class Ejercicio9 {4. public static void main(String[] args) {5. int a=0,b=0;

V F

d,m,a imp.

fin

tp= (a*0.8) tp=(a*0.85)

if

b>=74

a,b lee

inicio

6. int tp=0;7. Scanner entrada=new Scanner(System.in);8. System.out.println("ingrese el monto a pagar");9. a=entrada.nextInt();10. System.out.println("ingrese un numero al azar");11. b=entrada.nextInt();

12. if(b>=74)13. {14. tp=(int) (a*0.8);15. }16. else17. {18. tp=(int) (a*0.85);19. }20. System.out.println("el monto a pagar es: "+tp);21. }22. }

b) Prueba de escritorio

10. Diseñar el algoritmo y programa que determine la cantidad de dinero que recibirá un trabajador por concepto de las horas extras trabajadas que determine la remuneración de un trabajador, ingresando total de horas trabajadas y el pago por hora. Considera que por cada

hora extra en el trabajo se le abonará el importe de una hora y media. El tiempo extra se considera cuando el total de horas sea mayor a 40 horas.

I. Análisis:

a) Datos de entrada: tht,ph.b) Datos de salida: dht.c) Modelo matemático/lógico:

if(tht>40)

Verdad: t=tht-40dht=t(3ph/2)

Falso: dht=0

II. Diseño:

a) Diagrama de flujo:

FV

if

tht>40

fin

tht, ph

inicio

dht

dht=0t=tht-40

dht=t(3ph/2)

b) Pseudocódigo:

Inicio

Entrada: lee: tht,ph.

Proceso:

if(tht>40) Verdad:

t=tht-40dht=t(3ph/2)

Falso: dht=0

Salida: imprime: dht. Fin

III. Aplicación:

a) Codificación:

1. package ejercicio10;2. import java.util.Scanner;3. public class Ejercicio10 {4. public static void main(String[] args) {

5. int tht,ph,t,dht;

6. System.out.println("Ingrese el total de horas trabajadas");7. Scanner num=new Scanner(System.in);8. tht=num.nextInt();

9. System.out.println("Ingrese el pago por hora");10. Scanner num1=new Scanner(System.in);11. ph=num1.nextInt();

12. if(tht>40)13. {14. t=tht-40;15. dht=t*(3*ph/2);16. }17. else18. {19. dht=0;20. }

21. System.out.println("La cantidad de dinero que recibirá por horas extras trabajadas es:");

22. System.out.println(dht+" soles");23. }24. }

b) Prueba de escritorio:

11. Diseñar el algoritmo y programa que determine la cantidad de dinero que recibirá un trabajador por concepto de las horas extras trabajadas en una empresa, sabiendo que cuando las horas de trabajo exceden de 40, el resto se considera horas extras y que estas se pagan al doble de una hora normal cuando no exceden de 8; si las horas extras superan de 8 se pagan las primeras 8 al doble de lo que se pagan las horas normales y el resto al triple.

I. Análisis:

a) Datos de entrada: ht, ph.b) Datos de salida: st.c) Modelo matemático/lógico:

Si ht>=41 V: hx=ht-40; si hx>=9 v: int s1=0,s2=0,s3=0; s1=8*2*ph; hx=hx-8; s2=hx*ph*3; s3=40*ph; st=s1+s2+s3; F: st=(hx*ph*2)+(40*ph); F: st=ht*ph;

II. Diseño

a) Diagrama de flujo

st=(hx*ph*2)+(40*ph)

hx=ht-40

V Fif

hx>=9

V F

st imp.

fin

s1=8*2*phhx=hx-8s2=hx*ph*3s3=40*phst=s1+s2+s3

st=ht*ph

if

ht>=41

ht, th lee

inicio

b) Pseudocódigo: Inicio

Entrada: lee: ht, ph

Proceso:if(ht>=41) { hx=ht-40; if(hx>=9) { int s1=0,s2=0,s3=0; s1=8*2*ph; hx=hx-8; s2=hx*ph*3; s3=40*ph; st=s1+s2+s3; } else { st=(hx*ph*2)+(40*ph); } } else { st=ht*ph; }

Salida: imprime: tp Fin

III. Aplicacióna) Codificación:

1. package ejercicio.pkg11;

2. import java.util.Scanner;3. public class Ejercicio11 {4. public static void main(String[] args) {5. int ht=0,ph=0,st=0,hx=0;6. Scanner entrada=new Scanner(System.in);7. System.out.println("ingrese la cantidad de horas");8. ht=entrada.nextInt();9. System.out.println("ingrese el sueldo por hora");10. ph=entrada.nextInt();

11. if(ht>=41)12. {13. hx=ht-40;14. if(hx>=9)15. {16. int s1=0,s2=0,s3=0;17. s1=8*2*ph;18. hx=hx-8;19. s2=hx*ph*3;20. s3=40*ph;21. st=s1+s2+s3;

22. }23. else24. {

25. st=(hx*ph*2)+(40*ph); 26. }27. }28. else29. {30. st=ht*ph;31. }32. System.out.println("sueldo total a recibir es: "+st);33. }34. }

b) Prueba de escritorio

12. Diseñar el algoritmo y programa para calcular la utilidad que un trabajador recibe en el reparto anual de utilidades si este se le asigna un porcentaje de su salario mensual que depende de su antigüedad en la empresa de acuerdo con la siguiente tabla:

I. Análisis:

a) Datos de entrada: sm,ant.b) de salida: u.c) Modelo matemático/lógico:

if(ant<1) Verdad:

u=sm/20 Falso:

If(ant>=1&&ant<2)Verdad:

u=(7/100)smfalso:

If(ant>=2&&ant<5)

Tiempo Utilidad

Menos de 1 año1 año o más y menos de 2 años2 años o más y menos de 5 años5 años o más y menos de 10 años10 años o más y menos de 20 años

5% del salario7% del salario10% del salario15% del salario 20% del salario

Verdad: u=sm/10

falso:If(ant>=5&&ant<10)Verdad:

u=3sm/20falso:

If(ant>=10&&ant<20)Verdad:

u=sm/5

II. Diseño:

a) Diagrama de flujo:

F

F

F

F

V

V

V

V

Ifant>=5&&ant<10

ant<1

Ifant>=2&&ant<5

ant<1

Ifant>=1&&ant<2

FV if

ant<1

sm, ant

inicio

u=3sm/20

u=sm/10

u=7sm/100

u=sm/20

Ifant>=10&&ant<20

ant<1

b) Pseudocódigo:

Inicio

Entrada: lee: sm, ant .

Proceso:

if(ant<1) Verdad:

u=sm/20 Falso:

If(ant>=1&&ant<2)Verdad:

u=(7/100)smfalso:

If(ant>=2&&ant<5)Verdad:

u=sm/10falso:

If(ant>=5&&ant<10)Verdad:

u=3sm/20falso:

If(ant>=10&&ant<20)Verdad:

u=sm/5

Salida: imprime: u. Fin

IV. Aplicación:

a) Codificación:

1. package ejercicio.pkg12;2. import java.util.Scanner;3. public class Ejercicio12 {

4. public static void main(String[] args) {

5. double sm,ant;6. double u;7. System.out.println("Ingrese su salario mensual");8. Scanner num=new Scanner(System.in);9. sm=num.nextDouble();

10. System.out.println("Ingrese el tiempo de trabajo en la empresa en años");11. Scanner num1=new Scanner(System.in);12. ant=num1.nextDouble();

13. if(ant<1)14. {15. u=sm/20;16. System.out.println("La utilidad que recibe en el reparto anual es:");17. System.out.print(u+" soles");18. }19. else20. { if(ant>=1&&ant<2)21. {22. u=(7/100)*sm;23. System.out.println("La utilidad que recibe en el reparto anual es:");24. System.out.print(u+"soles"); 25. }26. else{27. if(ant>=2&&ant<5)28. {29. u=sm/10;30. System.out.println("La utilidad que recibe en el reparto anual es:");31. System.out.print(u+"soles"); 32. }

33. else { 34. if(ant>=5&&ant<10)

35. {36. u=3*sm/20;37. System.out.println("La utilidad que recibe en el reparto anual es:");38. System.out.print(u+"soles"); 39. }40. else { 41. if(ant>=10&&ant<20) 42. {43. u=sm/5; 44. System.out.println("La utilidad que recibe en el reparto anual es:");45. System.out.print(u+"soles");46. }

47. }48. }49. }50. }51. }52. }

b) Prueba de escritorio:

13. Una persona enferma, que pesa 70 Kg, se encuentra en reposo y desea saber cuántas calorías consume su cuerpo durante todo el tiempo que realice una misma actividad. Las actividades que tiene permitido realizar son únicamente dormir o estar sentado en reposo. Los datos que tiene son que estando en dormido consume 1.08 calorías por minuto y estando sentado en reposo consume 1.66 calorías por minuto.

I) Análisis:

a) Datos de entrada: h.b) Datos de salida: c.

c) Modelo matemático/lógico: si h==0 v: h=h*60 c=h*1.08 si h==1 v: h=h*60; c= h*1.66

II) Diseñoa) Diagrama de flujo

h=h*60c=h*1.08

V

Fif

h==0

V

Fif

h==1

ht, the

inicio

b) Pseudocódigo: Inicio

Entrada: lee: h

Proceso: if(h==0) { h=h*60 c=h*1.08 } if(h==1) { h=h*60 c= h*1.66 }

Salida: imprime: c Fin

III) Aplicacióna) Codificación:

1. package ejercicio.pkg13;2. import java.util.Scanner;3. public class Ejercicio13 {

4. public static void main(String[] args) {5. int h;6. float c;7. Scanner entrada=new Scanner(System.in);8. System.out.println("ingrese '0' si duerme o '1' si esta sentado");9. h=entrada.nextInt();10. if(h==0)11. {12. System.out.println("ingrese las horas que duerme");13. h=entrada.nextInt();14. h=h*60;15. c=(float) (h*1.08);16. System.out.println("consume "+c+" durmiendo");

17. } 18. if(h==1)19. System.out.println("ingrese las horas que esta sentado");20. h=entrada.nextInt();21. h=h*60;22. c=(float) (h*1.66);23. System.out.println("consume "+c+" sentado");24. }25. }

b) Prueba de escritorio

14. Una empresa quiere hacer una compra de varias piezas de la misma clase a una fábrica de refacciones. La empresa, dependiendo del monto total de la compra, decidirá quehacer para pagar al fabricante. Si el monto total de la compra excede de $500 000 la empresa tendrá la capacidad de invertir de su propio dinero un 55 % del monto de la compra, pedir prestado al banco un 30 % y el resto lo pagará solicitando un crédito al fabricante. Si el monto total de la compra no excede de $500 000 la empresa tendrá capacidad de invertir de su propio dinero un 70% y el restante 30% lo pagará solicitando crédito al fabricante. El fabricante cobra por concepto de interés un 20% la cantidad que se le pague a crédito.

I. Análisis:

a) Datos de entrada:mtc.b) Datos de salida: pd,b,c,cpcf.c) Modelo matemático/lógico:

if(mtc>50000)

Verdad: pd=(11*mtc)/20 b =(3*mtc)/10 c =(3*mtc)/20 cpcf=c/5

Falso: pd=(7*mtc)/10 b =0 c =(3*mtc)/10 cpcf=c/5

II. Diseño:

a) Diagrama de flujo:

FV

fin

mtc

inicio

pd,b, c,cpcf

pd=(7*mtc)/20b=0c=(3*mtc)/10cpcf=c/5

b()=(

Ifmtc >500 000

ant<1pd=(11*mtc)/20b=(3*mtc)/10c=(3*mtc)/20cpcf=c/5

b()=(

b) Pseudocódigo:

Inicio

Entrada: lee: mtc.

Proceso: if(mtc>50000)

Verdad: pd=(11*mtc)/20

b =(3*mtc)/10 c =(3*mtc)/20 cpcf=c/5

Falso: pd=(7*mtc)/10 b =0 c =(3*mtc)/10 cpcf=c/5

Salida: imprime: pd,b,c,cpcf. Fin

III. Aplicación:

a) Codificación:

1. package ejercicio14;2. import java.util.Scanner;3. public class Ejercicio14 {4. public static void main(String[] args) {

5. double mtc,c,b,pd,cpcf;

6. System.out.println("Ingrese el monto total de la compra");7. Scanner num=new Scanner(System.in);8. mtc=num.nextInt();

9. if(mtc>500000)10. {11. pd=(double)11*mtc/20;12. b=(double)3*mtc/10;

13. c=(double)3*mtc/20;14. cpcf=(double)c/5;15. }

16. else17. {18. pd=(double)7*mtc/20;19. b=0;20. c=(double)3*mtc/10;21. cpcf=(double)c/5; 22. }23. System.out.println("La empresa invertirá de su propio dinero: "+pd+"

soles");24. System.out.println("La empresa pedirá prestado al banco: "+b+" soles");25. System.out.println("La empresa solicitará un crédito de: "+c+" soles al

fabricante");26. System.out.println("El fabricante le cobrará: "+cpcf+" soles de interés a la

empresa por dicho crédito");27. }28. }

b) Prueba de escritorio:

15. Que permita ingresar el precio unitario y la cantidad de un artículo. Se requiere determinar el importe de venta bruto, el descuento y el importe de venta neto. El descuento será de acuerdo a la escala siguiente:

IMPORTE DE VENTA BRUTO DESCUENTO<500.00 5%

>=500.00 y <=750.00 8%>750.00 10%

I. Análisis:

a) Datos de entrada: a, b.b) Datos de salida: vb, d, vn.c) Modelo matemático/lógico:

vb=a*b; si vb<500 v: d=vb*0.05 vn=vb-d; si vb>=500&&vb<=750 v: d=vb*0.08 vn=vb-d; si vb>750 { d=(int) (vb*0.1); vn=vb-d; }

I) Diseñoa) Diagrama de flujo

Fvb>750

vb=a*b

d= (vb*0.08)vn=vb-d

d= (vb*0.05);vn=vb-d

V

Fvb>=500&&v

b<=750

V

Fif

vb<500

ht, th lee

inicio

b) Pseudocódigo: Inicio

Entrada: lee: a, b

Proceso: vb=a*b; if(vb<500) { d= (vb*0.05); vn=vb-d; } if(vb>=500&&vb<=750) { d=(vb*0.08); vn=vb-d; } if(vb>750) { d= (vb*0.1); vn=vb-d; } Salida: imprime: vb, d, vn

vb>750

FinII) Aplicación

a) Codificación:1. package ejercicio.pkg15;2. import java.util.Scanner;3. public class Ejercicio15 {4. public static void main(String[] args) {5. int a=0,b=0,vb=0,d=0,vn=0;6. Scanner entrada=new Scanner(System.in);7. System.out.println("ingreseel precio del producto");8. a=entrada.nextInt();9. System.out.println("ingrese la cantidad a comprar");10. b=entrada.nextInt();

11. vb=a*b;12. if(vb<500)13. {14. d=(int) (vb*0.05);15. vn=vb-d;16. }17. if(vb>=500&&vb<=750)18. {19. d=(int) (vb*0.08);20. vn=vb-d;21. }22. if(vb>750)23. {24. d=(int) (vb*0.1);25. vn=vb-d;26. }27. System.out.println("venta en bruto: "+vb+" descuento: "+d+" importe de

venta neta: "+vn);28. }29. }

b) Prueba de escritorio

16. Una compañía de seguros está abriendo un Dpto. de Finanzas y estableció un programa para captar clientes, que consiste en lo siguiente¨: Si el monto por el que se efectúa la fianza en menor que $50 000 la cuota a pagar será por el 3% del monto, y si el monto es mayor de $500 000 la cuota a para pagar será el 2% del monto. La afianzadora desea determinar cuál será la cuota que debe pagar un cliente.

I. Análisis:

a) Datos de entrada: m.b) Datos de salida: c. c) Modelo matemático/lógico:

If (m<500000)Verdad:

C=(m*3)/100Falso:

C=m/50II. Diseño:

a) Diagrama de flujo:

C=m/50C=(m*3)/100

Ifm<50 000

ant<1

FV

m

inicio

b) Pseudocódigo:

Inicio

Entrada: lee: m.

Proceso:

If (m<500000)Verdad:

C=(m*3)/100Falso:

C=m/50

Salida: imprime:c. Fin

III. Aplicación:

a) Codificación:1. package ejercicio.pkg16;2. import java.util.Scanner;3. public class Ejercicio16 {4. public static void main(String[] args) {

5. double m,c;

6. System.out.println("ingrese el monto de la fianza");7. Scanner num=new Scanner (System.in);

C=m/50

8. m=num.nextDouble ();

9. if(m<50000)10. {11. c=(double)m*3/100;12. }13. else14. {

15. c=(double)m/50;16. }

17. System.out.println("La cuota que debe pagar el cliente es: "+c+" soles");18. }19. }

b) Prueba de escritorio:

17. Que permita ingresar la nota final de un examen y determine el calificativo de acuerdo a la siguiente escala:

NOTAS CALIFICATIVO0-10 Deficiente

11-14 Regular15-18 Bueno19-20 Excelente

Cualquier otro valor deberá visualizar un mensaje de ERROR

I. Análisis:

a) Datos de entrada: a.b) Datos de salida: a.c) Modelo matemático/lógico:

Si a>=0&&a<=20 V:

Si a>=0&&a<=10 V: “nota " +a+ "calificativo: DEFICIENTE"

Si a>=11&&a<=14 V: “nota "+a +“calificativo: REGULAR" Si a>=15&&a<=18 V:"nota "+a+ “calificativo: BUENO" Si a>=19&&a<=20 V: "nota "+a+ “calificativo: EXCELENTE"

F:"la nota ingresada es incorrecta"

II. Diseñoa) Diagrama de flujo

C=“nota "+a +“calificativo: REGULAR"

C=“nota "+a +“calificativo: DEFICIENTE "

V

Fa>=11&&a<=14

V

Fa>=0&&a<=10

V F

"la nota ingresada es incorrecta"

a>=0&&a<=20

a lee

inicio

b) Pseudocódigo: Inicio

Entrada: lee: a, b

Proceso: if(a>=0&&a<=20) { if(a>=0&&a<=10) { "nota "+a+"calificativo: DEFICIENTE" } if(a>=11&&a<=14) { "nota "+a+"calificativo: REGULAR" } if(a>=15&&a<=18) { "nota "+a+"calificativo: BUENO" } if(a>=19&&a<=20)

{ “nota "+a+"calificativo: EXCELENTE" } } else { “la nota ingresada es incorrecta" }

Salida: imprime: a Fin

III. Aplicacióna) Codificación:

1. package ejercicio.pkg17;2. import java.util.Scanner;3. public class Ejercicio17 {4. public static void main(String[] args) {5. int a=0;6. Scanner entrada=new Scanner(System.in);

7. System.out.println("Ingrese la nota final");8. a=entrada.nextInt();9. if(a>=0&&a<=20)10. {11. if(a>=0&&a<=10)12. {13. System.out.println("nota "+a+"calificativo: DEFICIENTE");14. }15. if(a>=11&&a<=14)16. {17. System.out.println("nota "+a+"calificativo: REGULAR");18. }19. if(a>=15&&a<=18)20. {21. System.out.println("nota "+a+"calificativo: BUENO");22. }23. if(a>=19&&a<=20)24. {25. System.out.println("nota "+a+"calificativo: EXCELENTE");26. }27. }28. else29. {30. System.out.println("la nota ingresada es incorrecta"); 31. }

32. }33. }

b) Prueba de escritorio

18. En una institución la Dirección ordenó aumentar con 2 puntos sobre el promedio final a todo aquel alumno aprobado que haya participado en el desfile institucional y con 3 puntos al alumno desaprobado. De no cumplirse con estas condiciones el promedio permanecerá igual.

I. Análisis:

a) Datos de entrada:pf,d. b) Datos de salida: n. c) Modelo matemático/lógico:

Switch(d)

Caso 1:If (pf>10)Verdad: n=pf+2Falso : n=pf+3

Caso 2:n=pf

II. Diseño:

a) Diagrama de flujo:

b) Pseudocódigo:

Inicio

Entrada: lee: pf,d

Proceso:Switch(d)

Caso 1:

If (pf>10)Verdad: n=pf+2Falso : n=pf+3

n

n=pfCaso2

n=pf+3n=pf+2

Ifpf>10

ant<1

Caso 1

FV

fin

m

inicio

d

Caso 2:n=pf

Salida: imprime:n. Fin

III. Aplicación:

a) Codificación:

1. package ejercicio.pkg18;2. import java.util.Scanner;3. public class Ejercicio18 {4. public static void main(String[] args) {

5. int pf,d,n=0;

6. System.out.println("Ingrese su promedio final");7. Scanner num=new Scanner(System.in);8. pf=num.nextInt();

9. System.out.println("Ingrese :");10. System.out.println(" 1: Si participó en el desfile");11. System.out.println(" 2: Si no participó en el desfile");12. Scanner num1=new Scanner(System.in);13. d=num.nextInt();

14. switch(d)15. {16. case 1:17. if(pf>10)18. {19. n=pf+2;20. }21. else22. {23. n=pf+3;24. }

25. break;26. case 2:27. n=pf;28. break;29. }

30. System.out.println("El promedio final del alumno de acuerdo a sus méritos es: "+n);

31. }32. }

b) Prueba de escritorio:

19. Ingresar 3 números enteros y determinar si uno de ellos es la suma de los otros dos.

I. Análisis:

a) Datos de entrada: a, b, c.b) Datos de salida: a,b,c.c) Modelo matemático/lógico:

si a==(b+c) v: a+" es igual a la suma de "+b+"+"+c si b==(a+c) v:b+" es igual a la suma de "+a+"+"+c si c==(a+b) v:c+" es igual a la suma de "+b+"+"+a F:"ninguna suma es igual "

II. Diseñoa) Diagrama de flujo

a+" es igual a la suma de "+b+"+"+c

Fb==(a+c)

V

F a==(b+c)

a,b,c lee

inicio

b) Pseudocódigo: Inicio

Entrada: lee: a, b, c

Proceso: if (a==(b+c)) { a+" es igual a la suma de "+b+"+"+c } If (b==(a+c)) {

b==(a+c)

b+" es igual a la suma de "+a+"+"+c } If (c==(a+b)) { c+" es igual a la suma de "+b+"+"+a } else { "ninguna suma es igual " }

Salida: imprime: a, b, c Fin

III. Aplicacióna) Codificación:

1. package ejercicio.pkg19;2. import java.util.Scanner;3. public class Ejercicio19 {4. public static void main(String[] args) {5. int a=0,b=0,c=0;6. Scanner entrada=new Scanner(System.in);7. System.out.println("ingrese el primer numero");8. a=entrada.nextInt();9. System.out.println("ingrese el segundo numero");10. b=entrada.nextInt();11. System.out.println("ingrese el tercer numero");12. c=entrada.nextInt();13. if (a==(b+c))14. {15. System.out.println(a+" es igual a la suma de "+b+"+"+c);16. }17. if(b==(a+c))18. {19. System.out.println(b+" es igual a la suma de "+a+"+"+c);20. }21. if(c==(a+b))22. {23. System.out.println(c+" es igual a la suma de "+b+"+"+a);24. }25. else26. {27. System.out.println("ninguna suma es igual "); 28. }29. }30. }

b) Prueba de escritorio

20. En la escuela de Post Grado los alumnos llevan 4 cursos durante un semestre. El costo de cada curso es el mismo. Se ha establecido un programa para estimular a los alumnos, el cual consiste en lo siguiente: Si el promedio obtenido por un alumno al finalizar el semestre es mayor o igual que 18. se le hará un descuento del 40% sobre el costo de su semestre y no se le cobrará IGV; y si el promedio obtenido es menor que 18 deberá pagar su semestre completo, más el 10% por derecho de IGV.

I. Análisis:

a) Datos de entrada: cc,p.b) Datos de salida: ct.c) Modelo matemático/lógico:

c=cc*4d=(c*2)/5IGV=c/10If(p>=18)

Verdad: ct=c-dFalso : ct=c+IGV

II. Diseño:

a) Diagrama de flujo:

F

c=cc*4d=(c*2)/5IGV=c/10

V

cc,p

inicio

Ifp>=18

ant<1

b) Pseudocódigo:

Inicio

Entrada: lee: cc,p

Proceso:

c=cc*4d=(c*2)/5IGV=c/10

If(p>=18)Verdad: ct=c-dFalso : ct=c+IGV

Salida: imprime: ct. Fin

III. Aplicación:

a) Codificación:

1. package ejercicio.pkg20;2. import java.util.Scanner;3. public class Ejercicio20 {4. public static void main(String[] args) {

5. double cc,p,c,d ,IGV,ct;

6. System.out.println("Ingrese el costo de un curso");

7. Scanner num=new Scanner(System.in);8. cc=num.nextDouble();

9. System.out.println("Ingrese su promedio semestral final");10. Scanner num1=new Scanner(System.in);11. p=num1.nextDouble();

12. c=cc*4;13. d=(c*2)/5;14. IGV=10;

15. if(p>=18)16. {17. ct=c-d;

18. }19. else20. {21. ct=c+IGV;22. }

23. System.out.println("El pago que debe realizar por su semestre completo es: "+ct);

24. }25. }

b) Prueba de escritorio:

21. En una fábrica de computadoras se planea ofrecer a los clientes un descuento que dependerá del número de computadoras que compre. Si las computadoras son menos de cinco se les dará un 10% de descuento sobre el total de la compra; si el número de computadoras es mayor o igual a cinco pero menos de diez se le otorga un 20% de descuento; y si son 10 o más se les da un 40% de descuento. El precio de cada computadora es de $11,000.

I. Análisis:

a) Datos de entrada: c.b) Datos de salida: pf.c) Modelo matemático/lógico:

pt=c*11000; si c<5 v: d=pt*0.1 pf=pt-d si c>=5&&c<10 v: d=pt*0.2 pf=pt-d si c>=10 v: d=pt*0.4 pf=pt-d

II. Diseño

a) Diagrama de flujo

pt=c*11000

d=pt*0.1pf=pt-d

F

V

F

if c<5

c lee

inicio

b) Pseudocódigo: Inicio

Entrada: lee: c

Proceso:pt=c*11000 if(c<5) { d= pt*0.1 pf=pt-d } if(c>=5&&c<10) { d=pt*0.2 pf=pt-d; } Si >=10

F

{ d= pt*0.4 pf=pt-d }

Salida: imprime: pf Fin

III. Aplicación

a) Codificación:1. package ejercicio.pkg21;2. import java.util.Scanner;3. public class Ejercicio21 {4. public static void main(String[] args) {5. int c=0,d=0,pt=0,pf=0;6. Scanner entrada=new Scanner(System.in);7. System.out.println("ingrese la cantidad de computas a comprar");8. c=entrada.nextInt();9. pt=c*11000;10. if(c<5)11. {12. d=(int) (pt*0.1);13. pf=pt-d;14. }15. if(c>=5&&c<10)16. {17. d=(int) (pt*0.2);18. pf=pt-d;19. }20. if(c>=10)21. {22. d=(int) (pt*0.4);23. pf=pt-d;24. }25. System.out.println("el descuento es: "+d+" total a pagar es: "+pf);26. }27. }

b) Prueba de escritorio

22. Encontrar el mayor y el menor de tres números.

I. Análisis:

a) Datos de entrada: a, b, c. b) Datos de salida: a, c.c) Modelo matemático/lógico:

If(a<b)

aux=aa=bb=aux

If(a<c)

aux=aa=cc=aux

If(b<c)

aux=bb=cc=aux

II. Diseño:

a) Diagrama de flujo:

F

V

if

a<b

a,b,c lee

inicio

b) Pseudocódigo:

Inicio

Entrada: lee: a, b, c.

Proceso:

If(a<b)

V

aux=aa=bb=aux

If(a<c)

aux=aa=cc=aux

If(b<c)aux=bb=cc=aux

Salida: imprime: a, c. Fin

III. Aplicación:

a) Codificación:

1. package ejercicio.pkg22;2. import java.util.Scanner;3. public class Ejercicio22 {4. public static void main(String[] args) {

5. int a,b,c,aux;

6. System.out.println("Ingrese el primer número");7. Scanner num=new Scanner(System.in);8. a=num.nextInt();

9. System.out.println("Ingrese el segundo número");10. Scanner num1=new Scanner(System.in);11. b=num1.nextInt();

12. System.out.println("Ingrese el tercer número");13. Scanner num2=new Scanner(System.in);14. c=num.nextInt();

15. if(a<b)16. {17. aux=a;18. a=b;19. b=aux;20. }

21. if(a<c)22. {23. aux=a;24. a=c;25. c=aux;

26. }

27. if(b<c)28. {29. aux=a;30. b=c;31. c=aux; 32. }33. System.out.println("El mayor es "+a);34. System.out.println("El menor es "+c);

35. }36. }

b) Prueba de escritorio:

23. Verificar si un número X es múltiplo de 3 o de 5.

I. Análisis:

a) Datos de entrada: n.b) Datos de salida: n.c) Modelo matemático/lógico:

Si n%3==0&&n%5==0 V:n+" es multiplo de 3 y 5" F: Si n%3==0 V: n+" es multiplo de 3" F:

Si n%5==0 V:n+" es multiplo de 5" F:n+" no es multiplo ni 3 ni 5"

II. Diseño

a) Diagrama de flujo

b) Pseudocódigo: Inicio

Entrada: lee: n

Proceso:if(n%3==0&&n%5==0) { n+" es multiplo de 3 y 5"

n+" es multiplo de 5"

n+" es multiplo de 3"

VF if

n%5==0

n+" es multiplo de 3"

VF if

n%3==0

VF

fin

n+" es múltiplo de 3 y 5"

n%3==0&&n%5==0

n lee

inicio

} else { if(n%3==0) { n+" es multiplo de 3" } else { if(n%5==0) { n+" es multiplo de 5" } else { n+" no es multiplo ni 3 ni 5” } } }

Salida: imprime: n Fin

III. Aplicacióna) Codificación:

1. package ejercicio.pkg23;2. import java.util.Scanner;3. public class Ejercicio23 {4. public static void main(String[] args) {5. int n;6. Scanner entrada=new Scanner(System.in);7. System.out.println("ingrese un numero");8. n=entrada.nextInt();9. if(n%3==0&&n%5==0)10. {11. System.out.println(n+" es multiplo de 3 y 5");12. }13. else14. {15. if(n%3==0)16. {17. System.out.println(n+" es multiplo de 3");18. }19. else20. {21. if(n%5==0)22. {23. System.out.println(n+" es multiplo de 5"); 24. }

25. else26. {27. System.out.println(n+" no es multiplo ni 3 ni 5");28. }29. } 30. } 31. }32. }

b) Prueba de escritorio

24. Dados tres números se desea lo siguiente:

Si solo dos números son iguales desplegar un mensaje, entonces se deberá mostrar el producto del número igual con el número diferente y no se deberá realizar ninguno de los siguientes incisos. Si los tres son iguales debe desplegar un mensaje, y no debe efectuar ninguna otra operación. Hallar la diferencia del mayor menos el menor.

I. Análisis:

a) Datos de entrada: a, b, c.b) Datos de salida: “a y b son =”, “a y c son =”, “a, b y c son =”, p, d.c) Modelo matemático/lógico:

if(a==b&&b==c)verdad: “a, b y c son =”falso : if(a==b)

verdad:p=a*c“a y b son =”

Falso : if(a==c)

verdad: p=a*b“a y c son =”

Falso :If(a<b)

aux=aa=bb=aux

If(a<c)

aux=aa=cc=aux

If(b<c)aux=bb=cc=aux

d=a-c

II. Diseño:

a) Diagrama de flujo:

p

p

p=a*c

a==b&&b==c

F

V

if

a<b

p=a*b

Ifa==c

Ifa==b

Ifif(a=

“a, b y c son =”

a,b,c lee

inicio

V

V

V

F

F

F

b) Pseudocódigo:

Inicio

Entrada: lee: a, b, c.

Proceso:if(a==b&&b==c)verdad: “a, b y c son =”falso : if(a==b)

F

p

verdad:p=a*c“a y b son =”

Falso : if(a==c)

verdad: p=a*b“a y c son =”

Falso :If(a<b)

aux=aa=bb=aux

If(a<c)

aux=aa=cc=aux

If(b<c)aux=bb=cc=aux

d=a-c

Salida: imprime: “a y b son =”, “a y c son =”, “a, b y c son =”, p, d. Fin

III. Aplicación:

a) Codificación:

1. package ejercico.pkg24;2. import java.util.Scanner;3. public class Ejercico24 {4. public static void main(String[] args) {

5. int a,b,c,aux,p,d;

6. System.out.println("Ingrese el primer número");7. Scanner num=new Scanner(System.in);8. a=num.nextInt();

9. System.out.println("Ingrese el segundo número");

10. Scanner num1=new Scanner(System.in);11. b=num1.nextInt();

12. System.out.println("Ingrese el tercer número");13. Scanner num2=new Scanner(System.in);14. c=num.nextInt();

15. if(a==b&&b==c)

16. {17. System.out.println(a+", "+b+" y "+c+" son iguales" ); 18. }19. else20. {21. if(a==b)

22. {

23. p=a*c;24. System.out.println(a+" y "+b+" son iguales" );25. System.out.println("El producto con el número diferente es "+p);

26. }27. else28. {29. if(a==c)30. {31. p=a*b;32. System.out.println(a+" y "+c+" son iguales" );33. System.out.println("El producto con el número diferente es "+p);34. }

35. else36. {37. if(a<b)38. {39. aux=a;40. a=b;41. b=aux;42. }43. if(a<c)44. {45. aux=a;46. a=c;47. c=aux;

48. }

49. if(b<c)50. {51. aux=b;52. b=c;53. c=aux; 54. }

55. d=a-c;56. System.out.println("la diferencia del mayor y menor es "+d);

57. }58. }

59. }60. }

61. }

b) Prueba de escritorio:

25. Dada la fecha actual (día, mes y año), y la fecha de nacimiento de una persona, diseñar un algoritmo que determine la edad de esta persona.

I. Análisis:

a) Datos de entrada: d,m,a,dn,mn,an.b) Datos de salida: e.c) Modelo matemático/lógico:

e=a-an si m==mn

v: si d>=dn) v:"usted tiene: "+e+" años" f: e=e-1; "usted tiene: "+e+" años"

Si m>mn V:"usted tiene: "+e+" años" F:e=e-1; “usted tiene: "+e+" años"

II. Diseñoa) Diagrama de flujo

e=a-an

V Fif

d>=dn

V F

e=e-1

m==mn

d,m,a,dn,mn,an lee

inicio

b) Pseudocódigo: Inicio

Entrada: lee: d,m,a,dn,mn,an.

Proceso: e=a-an if(m==mn) { if(d>=dn) { "usted tiene: "+e+" años" } else e=e-1;

"usted tiene: "+e+" años" } } if(m>mn) { "usted tiene: "+e+" años" } else { e=e-1; "usted tiene: "+e+" años" } Salida: imprime: e Fin

III. Aplicacióna) Codificación:

1. package ejercicio.pkg25;2. import java.util.Scanner;3. public class Ejercicio25 {4. public static void main(String[] args) {5. int d,m,a,dn,mn,an,e;6. Scanner entrada=new Scanner(System.in);7. System.out.println("ingrese la fecha actual");8. System.out.print("dia: ");d=entrada.nextInt();9. System.out.print("mes: ");m=entrada.nextInt();10. System.out.print("año: ");a=entrada.nextInt();11. System.out.println("ingrese la fecha de nacimiento");12. System.out.print("dia: ");dn=entrada.nextInt();13. System.out.print("mes: ");mn=entrada.nextInt();14. System.out.print("año: ");an=entrada.nextInt();15. e=a-an;16. if(m==mn)17. {18. if(d>=dn)19. {20. System.out.println();21. System.out.println("usted tiene: "+e+" años");22. }23. else24. {25. e=e-1;26. System.out.println();27. System.out.println("usted tiene: "+e+" años");28. }29. }30. if(m>mn)31. {

32. System.out.println();33. System.out.println("usted tiene: "+e+" años");34. } 35. else36. {37. e=e-1;38. System.out.println();39. System.out.println("usted tiene: "+e+" años");40. }41. }42. }

b) Prueba de escritorio

26. Un banco antes de conceder un préstamo, comprueba los ingresos del solicitante. Si los ingresos son superiores a 12000 soles anuales, el crédito se concede. Si los ingresos son inferiores a 12000 soles anuales pero superiores a 10000 soles y el cliente tiene máximo 2 hijos, el crédito se concede. También se le concede, si tiene ingresos entre 8000 y 10000 soles pero no tiene hijos. Realizar un algoritmo que pida los ingresos anuales y el número de hijos del solicitante, y diga si se le da el crédito o no.

I. Análisis:

a) Datos de entrada: i, h.

b) Datos de salida: “c”, “nc”.c) Modelo matemático/lógico:

If(i>12000)Verdad: “c”.Falso : if(i<12000&&i>10000)

Verdad: if(h<=2)Verdad: “c”.Falso : “nc”.

Falso : if(i>=8000&&i<=10000)Verdad: if(h==0)

Verdad: “c”.Falso : “nc”.

Falso: “nc”.

II. Diseño:

a) Diagrama de flujo:

VF

“c” “nc”

i>12000

FIfi<8000&&i>100000000

Ifi<12000&&i>1000000

Ifif(a=

“c ”

h, i lee

inicio

V

V

F

F

Ifh<=12

ant<1

“nc”

Ifh<=12

V

F

b) Pseudocódigo:

Inicio

Entrada: lee:

Proceso:

If(i>12000)Verdad: “c”.Falso : if(i<12000&&i>10000)

Verdad: if(h<=2)Verdad: “c”.Falso : “nc”.

Falso : if(i>=8000&&i<=10000)Verdad: if(h==0)

Verdad: “c”.Falso : “nc”.

Falso: “nc”.

Salida: imprime: “c”, “nc”. Fin

III. Aplicación:

a) Codificación:

1. package ejericio.pkg26;2. import java.util.Scanner;

h<=12

3. public class Ejericio26 {4. public static void main(String[] args) {

5. int i,h;

6. System.out.println("Introduzca su ingreso anual:");7. Scanner num=new Scanner(System.in);8. i=num.nextInt();

9. System.out.println("Introcuzca el número de hijos que tenga:");10. Scanner num1=new Scanner(System.in);11. h=num1.nextInt();

12. if(i>12000)13. {14. System.out.println("Le damos el crédito"); 15. }16. else17. {18. if(i<12000&&i>10000)19. {

a. if(h<=2)b. {c. System.out.println("Le damos el crédito"); d. }e. elsef. {g. System.out.println("No le damos el crédito"); h. }

20. }21. else22. {

a. if(i>=8000&&i<=10000)b. {c. if(h==0)d. {

i. System.out.println("Le damos el crédito"); e. }f. elseg. {

i. System.out.println("No le damos el crédito"); h. }i. }j. elsek. {l. System.out.println("No le damos el crédito"); m. }

23. }

24. }25. }26. }

b) Prueba de escritorio:

27. Diseñe un algoritmo que lea el importe de la compra y la cantidad de dinero recibida, y calcule el cambio a devolver, teniendo en cuenta que el número de monedas que se devuelven debe ser mínimo. Suponer que el sistema monetario utilizado consta de monedas de 50, 20, 5 y 1, y que hay capacidad ilimitada de monedas.

I. Análisis:

a) Datos de entrada: dc, dr.b) Datos de salida: v, m50, m20, m5, m1.c) Modelo matemático/lógico:

v=dr-dc m50=v/50 r=v%50 m20=r/20 r=r%20 m5=r/5 r=r%5 m1=r

II. Diseñoa) Diagrama de flujo

v=dr-dcm50=v/50r=v%50m20=r/20

dc, dr lee

inicio

b) Pseudocódigo: Inicio

Entrada: lee: dc, dr.

Proceso: v=dr-dc m50=v/50 r=v%50 m20=r/20 r=r%20 m5=r/5 r=r%5 m1=r Salida: imprime: v, m50, m20, m5, m1. Fin

III. Aplicacióna) Codificación:

1. package jercicio.pkg27;2. import java.util.Scanner;3. public class Jercicio27 {4. public static void main(String[] args) {5. int dc,dr,v,m50,m20,m5,m1,r;6. Scanner entrada=new Scanner(System.in); 7. System.out.println("ingrese el importe de la venta");8. dc=entrada.nextInt();9. System.out.println("ingrese cantidad de dinero recibido");

v=dr-dcm50=v/50r=v%50m20=r/20

10. dr=entrada.nextInt();11. v=dr-dc;12. m50=v/50;13. r=v%50;14. m20=r/20;15. r=r%20;16. m5=r/5;17. r=r%5;18. m1=r;19. System.out.println("su vuelto es: "+v+ " y se da de la siguiente manera:");20. System.out.println("billetes de 50 soles: "+m50);21. System.out.println("billetes de 20 soles: "+m20);22. System.out.println("monedas de 5 soles: "+m5);23. System.out.println("monedas de 1 soles: "+m1);24. }25. }

b) Prueba de escritorio

28. Diseñe un algoritmo para un problema similar al anterior. Pero considerar que se tienen solo 10 monedas de 50, y 2 de 5, las demás ilimitadas.

I. Análisis:

a) Datos de entrada: i, p.b) Datos de salida: m50, m20, m5, m1. c) Modelo matemático/lógico:

d=p-im50=ddiv50d=dmod50if (m50<=10)

verdad: m50=m50

falso : d=(m50-10)*50m50=10

m20=ddiv20d=dmod20m5=ddiv5d=dmod5if (m50<=10)

verdad: m5=m5

falso : d=(m5-2)*50m5=2

m1=d

II. Diseño:

a) Diagrama de flujo:

m20=ddiv20

d=dmod20

m50=m50

F

d=p-im50=ddiv50d=dmod50

V

i, p

inicio

d=(m50-10)*50

m50=10

Ifm50<=10

ant<1

b) Pseudocódigo:

Inicio

Entrada: lee: i, p.

Proceso:d=p-im50=ddiv50d=dmod50if (m50<=10)

verdad: m50=m50

falso : d=(m50-10)*50m50=10

m20=ddiv20

m20=ddiv20

d=dmod20

d=dmod20m5=ddiv5d=dmod5if (m50<=10)

verdad: m5=m5

falso : d=(m5-2)*50m5=2

m1=d

Salida: imprime: m50, m20, m5, m1. Fin

III. Aplicación:

a) Codificación:

1. package ejercicio28;2. import java.util.Scanner;3. public class Ejercicio28 {4. public static void main(String[] args) {

5. int i,p,d,m50,m20,m5,m1;

6. System.out.println("Ingrese el importe de la compra");7. Scanner num=new Scanner(System.in);8. i=num.nextInt();

9. System.out.println("Ingrese la cantidad de dinero recibida ");10. Scanner num1=new Scanner(System.in);11. p=num1.nextInt();

12. d=p-i;

13. m50=d/50;14. d=d%50;

15. if(m50<=10)16. {17. m50=m50;18. }19. else20. {21. d=(m50-10)*50;22. m50=10;23. }

24. m20=d/20;25. d=d%20;26. m5=d/5;27. d=d%5;

28. if(m5<=2)29. {30. m5=m5;31. } 32. else33. {34. d=(m5-2)+5;35. m5=2;36. }

37. m1=d;

38. System.out.println("Su cambio es:");39. System.out.println(m50+" billetes de 50");40. System.out.println(m20+" billetes de 20");41. System.out.println(m5+" monedas de 5");42. System.out.println(m1+" monedas de 1");43. }44. }

b) Prueba de escritorio:

29. Dado un año, indique mediante mensaje si es bisiesto o no. Un año es bisiesto, solo si es múltiplo de 4 pero no de 100, salvo que sea múltiplo de 400.( teoría completa del año bisiesto).

I. Análisis:

a) Datos de entrada: a.b) Datos de salida: "si es bisiesto", "no es bisiesto".c) Modelo matemático/lógico:

Si (a%4==0 && a % 100 != 0) || a % 400 == 0 V:"si es bisiesto" F:"no es bisiesto"

II. Diseñoa) Diagrama de flujo

VF

"si es bisiesto" "no es bisiesto"

(a%4==0 && a % 100 != 0) || a % 400 ==0

a lee

inicio

b) Pseudocódigo: Inicio

Entrada: lee: a

Proceso:if((a%4==0 && a % 100 != 0) || a % 400 == 0) { "si es bisiesto" } else { "no es bisiesto" } Salida: imprime: "si es bisiesto", "no es bisiesto". Fin

III. Aplicacióna) Codificación:

1. package ejercicio.pkg29;2. import java.util.Scanner;3. public class Ejercicio29 {4. public static void main(String[] args) {5. int a;6. Scanner entrada=new Scanner(System.in);7. System.out.println("ingrese un año");8. a=entrada.nextInt();9. if((a%4==0 && a % 100 != 0) || a % 400 == 0)10. {11. System.out.println("si es bisiesto");12. }13. else14. {15. System.out.println("no es bisiesto");16. }17. }18. }

b) Prueba de escritorio

30. Escriba un algoritmo que lea tres números enteros de un supuesto triángulo, determine si realmente forman un triángulo, y muestre el tipo de triángulo que es (si es un triángulo: La suma de dos cualesquiera de los lados debe ser mayor que el otro).Equilátero: todos los lados son iguales. Isósceles: solo dos lados son iguales. Escaleno: no tiene dos lados iguales.

I. Análisis:

a) Datos de entrada: a, b, c, s.b) Datos de salida: “t”, “nt”, “ee”, “i”, “e”.c) Modelo matemático/lógico:

s=a+bIf(s>c)Verdad:

“t”.if(a==b&&b==c)Verdad: “ee”.Falso : if(a==b||b==c||a==c)

Verdad: “i”.Falso : “e”.

Falso : “nt”.

II. Diseño:

a) Diagrama de flujo:

b)Pseudocódigo:

Inicio

Entrada: lee: a, b, c.

Proceso:

s=a+b

F

“e”“i”

If

a=b||b=c||a=c“ee”

Ifa=b&&b=c

ant<1

“nt”

FV

a, b, c

inicio

Ifs>c

ant<1

“t”

fin

V

V

If(s>c)Verdad:

“t”.if(a==b&&b==c)Verdad: “ee”.Falso : if(a==b||b==c||a==c)

Verdad: “i”.Falso : “e”.

Falso : “nt”.

Salida: imprime: “t”, “nt”, “ee”, “i”, “e”. Fin

III. Aplicación:

a) Codificación:

1. package ejercicio.pkg30;2. import java.util.Scanner;3. public class Ejercicio30 {4. public static void main(String[] args) {

5. int a,b,c,s;

6. System.out.println("Ingrese tres números enteros para un supuesto triángulo");

7. System.out.println("Ingrese el primer número entero.");8. Scanner num=new Scanner(System.in);9. a=num.nextInt();

10. System.out.println("Ingrese el segundo número entero:");11. Scanner num1=new Scanner(System.in);12. b=num1.nextInt();

13. System.out.println("Ingrese el tercer número entero:");14. Scanner num2=new Scanner(System.in);15. c=num2.nextInt();

16. s=a+b;

17. if(s>c)18. {19. System.out.println("Es un triángulo"); 20. if(a==b&&b==c)21. {22. System.out.println("Es un triángulo equilátero"); 23. }24. else

25. {26. if(a==b||b==c||a==c)27. {

System.out.println("Es un triángulo isósceles");28. }29. else30. {

System.out.println("Es un triángulo escaleno");31. }32. }33. }34. else

35. {36. System.out.println("No es un triángulo");37. }38. }39. }

b) Prueba de escritorio:

31. Dados dos enteros, día y mes, de una fecha de un año no bisiesto, indicar si la fecha es correcta.

I. Análisis:

a) Datos de entrada: d, m.b) Datos de salida: r.c) Modelo matemático/lógico:

Si m>12 V:r="NO CORRESPONDE" f:

switch (m) case 1: case 3: case 5: case 7: case 8: case 10: case 12: dmax=31 si d<=dmax v: r="FECHA CORRESPONDE" f: r="FECHA NO CORRESPONDE" case 4: case 6: case 9: case 11: dmax=30; si d<=dmax v: r="FECHA CORRESPONDE" f: r="FECHA NO CORRESPONDE" case 2: si d==29 v: r="FECHA NO CORRESPONDE"; f: si d<28 v:"FECHACO RRESPONDE"

II. Diseñoa) Diagrama de flujo

d,m lee

Inicio

if

m>12

d,m,a imp.

fin

d=d-30m=m+1

d=d+1

if

d==3

d=d+1d=1m=1

a=a+1

if

d==3

d=d-27m=m+1

d=29

if

r%4==0

d=d+1d=d-29m=m+1

if

d==3

m

1,3,5,7,8,10

V F

V F

4,6,9,11

V F

d=d+1

FV

2

FV

1

b) Pseudocódigo: Inicio

Entrada: lee: d, m

Proceso: if(m>12) r="NO CORRESPONDE"

switch (m){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: dmax=31 if(d<=dmax) r="FECHA CORRESPONDE" else r="FECHA NO CORRESPONDE" break case 4: case 6: case 9: case 11: dmax=30; if(d<=dmax) r="FECHA CORRESPONDE" else r="FECHA NO CORRESPONDE" break case 2: if(d==29) r="FECHA NO CORRESPONDE" else if(d<28) r="FECHACO RRESPONDE" } Salida: imprime: r Fin

III. Aplicacióna) Codificación:

1. package ejercicio.pkg31;2. import java.util.Scanner;3. public class Ejercicio31 {

4. public static void main(String[] args) {5. int d,m,dmax=0;6. String r="";7. Scanner teclado=new Scanner(System.in); 8. System.out.print("Ingrese Dia : ");9. d=teclado.nextInt();10. System.out.print("Ingrese Mes : ");11. m=teclado.nextInt(); 12. if(m>12)13. r="NO CORRESPONDE";14. switch (m){15. case 1:16. case 3:17. case 5:18. case 7:19. case 8:20. case 10:21. case 12: 22. dmax=31;23. if(d<=dmax)24. r="FECHA CORRESPONDE";25. else26. r="FECHA NO CORRESPONDE";27. break;28. case 4:29. case 6:30. case 9:31. case 11:32. dmax=30;33. if(d<=dmax)34. r="FECHA CORRESPONDE";35. else36. r="FECHA NO CORRESPONDE";37. break;38. case 2:39. if(d==29)40. r="FECHA NO CORRESPONDE";41. else42. if(d<28)43. r="FECHACO RRESPONDE";44. } 45. System.out.println(""); 46. System.out.println("Respuesta : "+r);47. }48. }

b) Prueba de escritorio

32. Los triángulos se pueden clasificar respecto de sus ángulos:

Si uno de los ángulos mide más de 90°, el triángulo es obtusángulo. Si uno de los ángulos mide 90°, el triángulo es rectángulo. Si de los tres ángulos miden menos de 90°, el triángulo es acutángulo.

I. Análisis:

a) Datos de entrada: a1, a2, a3.b) Datos de salida: “o”, “r”, “a”. c) Modelo matemático/lógico:

If(a1>90||a2<90||a3>90)Verdad: “o”.Falso : if(a1=90||a2=90||a3=90)

Verdad: “r”.Falso : if(a1<90||a2<90||a3<90)

Verdad: “a”.

II. Diseño:

a) Diagrama de flujo:

FV

a1, a2, a3

inicio

IfA1>90||a2>90

||a3>90

“o”

b) Pseudocódigo:

Inicio

Entrada: lee: a1, a2, a3.

Proceso:

If(a1>90||a2<90||a3>90)Verdad: “o”.Falso : if(a1=90||a2=90||a3=90)

Verdad: “r”.Falso : if(a1<90||a2<90||a3<90)

Verdad: “a”.

Salida: imprime: “o”, “r”, “a”. Fin

III. Aplicación:

a) Codificación:

1. package ejercicio.pkg32;2. import java.util.Scanner;

F

“o”

3. public class Ejercicio32 {4. public static void main(String[] args) {

5. int a1,a2,a3;

6. System.out.println("Ingrese el primer ángulo de un triángulo");7. Scanner num=new Scanner(System.in);8. a1=num.nextInt();

9. System.out.println("Ingrese el segundo ángulo de un triángulo");10. Scanner num1=new Scanner(System.in);11. a2=num1.nextInt();

12. System.out.println("Ingrese el tercer ángulo de un triángulo");13. Scanner num2=new Scanner(System.in);14. a3=num2.nextInt();

15. if(a1>90||a2>90||a3>90)16. {17. System.out.println("El triángulo es obtusángulo"); 18. }19. else20. {21. if(a1==90||a2==90||a3==90)22. {23. System.out.println("El triángulo es rectángulo"); 24. }25. else26. {

a. if(a1<90||a2<90||a3<90)b. {c. System.out.println("El triángulo es acutángulo");d. }

27. }28. }29. }30. }

b) Prueba de escritorio:

33. Dos entidades financieras ofrecen las siguientes tasas de interés simple:

Entidad A Entidad BDinero Depositado Interés Mensual Dinero Depositado Interés Mensual

De 0 a500 soles 5%del dinero depositado De 0 a 600 soles 5%del dinero depositadoDe 501 a 4499 soles 12%del dinero depositado De 601 a 3499 soles 5%del dinero depositado4500 soles a más 16%del dinero depositado 3500 soles a más 5%del dinero depositado

Desarrollar un programa que realice lo siguiente:

Solicite al usuario que ingrese el monto de dinero que desea depositar y el tiempo (meses) que lo mantendrá en el banco.

Determine cuál de las dos entidades, A o B, es más conveniente para depositar el dinero y muestre un mensaje indicando en que banco debería el usuario depositar el monto ingresado, y cuánto dinero tendrá luego de transcurrido el tiempo que indico al inicio. Nota: Para calcular el interés simple se utiliza la siguiente fórmula: Interés = Capital * Tasa * Tiempo

I. Análisis:a) Datos de entrada: d, t.b) Datos de salida: a, b.c) Modelo matemático/lógico:

Si d>0&&d<=500 V: a=(d*0.05)*t Si: d>500&&d<=4499 v: a=(d*0.12)*t si d>4499 v: a=(d*0.16)*t si d>0&&d<=600 v: b=(d*0.07)*t si d>600&&d<=3499 v: b=(d*0.10)*t si d>3499 v: b=(d*0.15)*t

si a>b v: "la entidad A es más conveniente" f: "la entidad B es más conveniente"

II. Diseñoa) Diagrama de flujo

1

d, tlee

inicio

2

1

b= (d*0.10)*t

V

Fd>600&&d<=3499

b= (d*0.07)*t

V

Fd>0&&d<=600

a= (d*0.16)*t

V

Fd>4499

a= (d*0.12)*t

V

Fd>500&&d<=4499

a=(d*0.05)*t

V

Fd>0&&d<=500

b) Pseudocódigo: Inicio

Entrada: lee: a, b

Proceso: if(d>0&&d<=500) { a= (d*0.05)*t } if(d>500&&d<=4499) { a= (d*0.12)*t }

fin

"la entidad B es más conveniente"IMP."la entidad A es más conveniente"IMP.

FVa>b

2

b=(d*0.15)*t

V

Fd>3499

if(d>4499) { a= (d*0.16)*t } if(d>0&&d<=600) { b= (d*0.07)*t } if(d>600&&d<=3499) { b= (d*0.10)*t } if(d>3499) { b= (d*0.15)*t }

if(a>b) { "la entidad A es más conveniente" } else { "la entidad B es más conveniente" } Salida: imprime: a, b Fin

III. Aplicacióna) Codificación:

1. package ejercicio.pkg33;2. import java.util.Scanner;3. public class Ejercicio33 {4. public static void main(String[] args) {5. int d,a=0,b=0,t;6. Scanner entrada=new Scanner(System.in);7. System.out.println("ingresa el monto de dinero que dese depositar");8. d=entrada.nextInt();9. System.out.println("ingresa el tiempo en el que quiere pagar");10. t=entrada.nextInt();

11. if(d>0&&d<=500)12. {13. a=(int) (d*0.05)*t;14. }15. if(d>500&&d<=4499)16. {17. a=(int) (d*0.12)*t;18. }

19. if(d>4499)20. {21. a=(int) (d*0.16)*t;22. } 23. if(d>0&&d<=600)24. {25. b=(int) (d*0.07)*t;26. }27. if(d>600&&d<=3499)28. {29. b=(int) (d*0.10)*t;30. }31. if(d>3499)32. {33. b=(int) (d*0.15)*t;34. } 35. System.out.println("entidad A: "+a);36. System.out.println("entidad B: "+b);37. if(a>b)38. {39. System.out.println("la entidad A es mas conveniente");40. }41. else42. {43. System.out.println("la entidad B es mas conveniente");44. }45. }46. }

b) Prueba de escritorio