0% encontró este documento útil (0 votos)
8 vistas17 páginas

Trabajo Programacion - Juan Rendon

xdvb

Cargado por

Camilo Arboleda
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
8 vistas17 páginas

Trabajo Programacion - Juan Rendon

xdvb

Cargado por

Camilo Arboleda
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Universidad del Sinú - Elías Bechara Zainúm

PROGRAMACION I

Estudiante:

Juan Sebastián Rendón Rivera

Tutor:

Juan Carlos Navarro Ramos

Semestre N°1

Montería

2024-2
El siguiente ejercicio o código se encuentra incompleto y con algunos
errores, la idea es crear un menú y submenú de opciones, con el fin
de completar y realizar operaciones básicas y avanzadas, haciendo
uso del bucle do while, switch case. Dicho menú sería el siguiente:

Tenemos un Menú General con las siguientes Opciones:

Ingrese la Opción deseada:

1 para Realizar Operaciones Aritméticas Básicas.

2 para Realizar Operaciones Aritméticas Avanzadas.

0 para Salir del Programa.

Si se escoge la Opción 1, tenemos el siguiente submenú:

1 para Realizar Operaciones Aritméticas Básicas.

Ingrese la Opción deseada:

A Sumar.

B Restar.

C Multiplicar.

D Dividir.

S Salir.

Si se escoge la Opción 2, tenemos el siguiente submenú:

2 para Realizar Operaciones Aritméticas Avanzadas.

Ingrese la Opción deseada:

W Potencia.

X Raíz Cubica.

Y Factorial.

Z Fibonacci.

E Salir.

Código Original:
1 Scanner entrada = new Scanner([Link]);

2 char opcion = ' ';

3 do {

4 [Link]("Ingrese la Opcion deseada:\r\n"

5 + " 1 Para Realizar Operaciones Aritméticas Básicas.\r\


n"
6
+ " 2 Para Realizar Operaciones Aritméticas Avanzadas.\
7
r\n"
8
+ " 0 Para Salir del Programa.\r\n");
9
opcion = [Link]().charAt(0);
1
switch (opcion) {
0
case '1':
1
1

1 do {
2
[Link]("Ingrese la Opción deseada:\r\n"
1
+ " a Para SUMAR\r\n"
3
+ " b Para RESTAR\r\n"
1
4 + " c Para MULTIPLICAR\r\n"

1 + " d Para DIVIDIR\r\n"


5
+ " s Para SALIR\r\n");
1
opcion = [Link]().charAt(0);
6
switch (opcion) {
1
7

1 case 'a':
8
int n1, n2, suma;
1
[Link](" Selecionó la Opción + SUMAR + .
9
");
2
[Link]("INGRESE EL PRIMER NUMERO A
0 SUMAR: ");

2 n1 = [Link]();
1
[Link]("INGRESE EL SEGUNDO NUMERO A
2 SUMAR: ");
2
n2 = [Link]();
2
suma = n1 + n2;
3
[Link](" ---- LA SUMA DE LOS NUMEROS
2
INGRESADOS ES ---- :
4
"+suma);
2
5 break;

2 case 'b':
6
int resta;
2
[Link](" Selecionó la Opción - RESTAR -. ");
7
[Link]("INGRESE EL PRIMER NUMERO A
2
RESTAR: ");
8
n1 = [Link]();
2
9 [Link]("INGRESE EL SEGUNDO NUMERO A
RESTAR: ");
3
0 n2 = [Link]();

3 resta = n1 - n2;
1
[Link](" ---- LA RESTA DE LOS NUMEROS
3 INGRESADOS ES ---- :
2
"+resta);
3
break;
3
case 'c':
3
4 int multiplicar;

3 [Link](" Selecionó la Opcion * MULTIPLICAR


5 *. ");

3 [Link]("INGRESE EL PRIMER NUMERO A


6 MULTIPLICAR: ");

3 n1 = [Link]();
7
[Link]("INGRESE EL SEGUNDO NUMERO A
3 MULTIPLICAR: ");
8
n2 = [Link]();
3
multiplicar = n1 * n2;
9
[Link](" ---- LA MULTIPLICACION DE LOS
4
NUMEROS INGRESADOS ES
0
---- : "+multiplicar);
4
1 break;

4 case 'd':
2
[Link](" Selecionó la Opción DIVIDIR. ");
4
break;
3
default:
4
4 [Link](" Error!!, Opción Incorrecta. ");

4 break;
5
}
4
} while (opcion != 's');
6

4
7

4 case '2':
8
[Link](" Selecionaste la Opcion 2 ");
4
break;
9
default:
5
0 [Link](" Opcion no Valida ");

5 break;
1

5
2 }

5 } while (opcion != '0');


3
[Link](" Saliendo del Programa.... ");
5
}
4
}
5
5

5
6

5
7

5
8

5
9

6
0

6
1

6
2

6
3

6
4

6
5

6
6

6
7

6
8

6
9

7
0

7
1

7
2

7
3

7
4

7
5

7
6

Errores:

1. Error en la Concatenación de Cadenas (salto de línea)

Línea 30:

Debería estar en una sola línea:

Línea 41:
Corregido:

Línea 52:

Corregido:

2. Falta la Implementación de la División

En el caso 'd' del submenú básico (línea 56), falta implementar la


operación de división. Solo muestra el mensaje sin realizar la operación:

Para corregirlo, se debe añadir la lógica de la división y manejar la


división por cero:

3. Falta la Opción para Salir del Submenú Básico


En el submenú de operaciones básicas falta un control adecuado
para salir de este menú. Actualmente, el bucle do-while se basa en la
condición opcion != 's', pero no existe una salida implementada que
rompa este bucle de manera explícita.

añadir un case 's' que permita salir limpiamente:

4. Operaciones Avanzadas No Implementadas:

Los casos para las operaciones avanzadas (potencia, raíz cúbica,


factorial, y fibonacci) no estaban implementados, solo se imprimía un
mensaje básico. No se añadía la lógica para calcular cada operación.

5. Control de Flujos en Submenús:

Al volver al menú principal desde el submenú básico, el programa no


revalida opcion adecuadamente, lo que podía hacer que continuara
ejecutando casos anteriores sin pedir la opción del usuario nuevamente.

código completo y corregido y funcionando:


1 Scanner entrada = new Scanner([Link]);

2 char opcion;

4 do {

5 [Link]("Ingrese la Opcion deseada:\r\n"

6 + " 1 Para Realizar Operaciones Aritmeticas


Basicas.\r\n"
7
+ " 2 Para Realizar Operaciones Aritmeticas
8
Avanzadas.\r\n"
9
+ " 0 Para Salir del Programa.\r\n");
10
opcion = [Link]().charAt(0);
11

12 switch (opcion) {

13 case '1':

14 char opcionBasica;

15 do {

16 [Link]("Ingrese la Opcion
deseada:\r\n"
17
+ " a Para SUMAR\r\n"
18
+ " b Para RESTAR\r\n"
19
+ " c Para MULTIPLICAR\r\n"
20
+ " d Para DIVIDIR\r\n"
21
+ " s Para SALIR\r\n");
22
opcionBasica = [Link]().charAt(0);
23

24
switch (opcionBasica) {
25
case 'a':
26
[Link]("Selecciono la Opcion
27
+ SUMAR +.");
28
[Link]("INGRESE EL PRIMER
29 NUMERO A SUMAR: ");

30 int n1 = [Link]();

31 [Link]("INGRESE EL SEGUNDO
NUMERO A SUMAR: ");
32
int n2 = [Link]();
33
int suma = n1 + n2;
34
[Link](" ---- LA SUMA DE LOS
35
NUMEROS INGRESADOS ES ---- : " + suma);
36
break;
37 case 'b':

38 [Link]("Selecciono la Opcion
- RESTAR -.");
39
[Link]("INGRESE EL PRIMER
40
NUMERO A RESTAR: ");
41
n1 = [Link]();
42
[Link]("INGRESE EL SEGUNDO
43 NUMERO A RESTAR: ");

44 n2 = [Link]();

45 int resta = n1 - n2;


46 [Link](" ---- LA RESTA DE LOS
NUMEROS INGRESADOS ES ---- : " + resta);
47
break;
48

49
case 'c':
50
[Link]("Selecciono la Opcion
51
* MULTIPLICAR *.");
52
[Link]("INGRESE EL PRIMER
53 NUMERO A MULTIPLICAR: ");

54 n1 = [Link]();
55 [Link]("INGRESE EL SEGUNDO
NUMERO A MULTIPLICAR: ");
56
n2 = [Link]();
57
int multiplicar = n1 * n2;
58
[Link](" ---- LA
59
MULTIPLICACION DE LOS NUMEROS INGRESADOS ES ---- : " +
60 multiplicar);

61 break;
62
63 case 'd':

64 [Link]("Selecciono la
Opcion / DIVIDIR /.");
65
[Link]("INGRESE EL PRIMER
66
NUMERO A DIVIDIR: ");
67
n1 = [Link]();
68
[Link]("INGRESE EL SEGUNDO
69 NUMERO A DIVIDIR: ");

70 n2 = [Link]();

71 if (n2 != 0) {
72 double dividir = (double) n1 / n2;

73 [Link](" ---- LA DIVISION


DE LOS NUMEROS INGRESADOS ES ---- : " + dividir);
74
} else {
75
[Link]("Error: No se puede
76
dividir entre 0.");
77
}
78
break;
79

80
case 's':
81
[Link]("Saliendo del
82 submenu de operaciones basicas...");

83 break;
84

85 default:
86 [Link]("Error!!, Opcion
Incorrecta.");
87
break;
88
}
89 } while (opcionBasica != 's');

90 break;

91

92 case '2':

93 char opcionAvanzada;

94 do {

95 [Link]("Ingrese la Opcion
deseada:\r\n"
96
+ " w Para POTENCIA\r\n"
97
+ " x Para RAIZ CUBICA\r\n"
98
+ " y Para FACTORIAL\r\n"
99
+ " z Para FIBONACCI\r\n"
10
0 + " e Para SALIR\r\n");

10 opcionAvanzada = [Link]().charAt(0);
1

10
switch (opcionAvanzada) {
2
case 'w':
10
3 [Link]("Selecciono la Opcion
POTENCIA.");
10
4 [Link]("INGRESE LA BASE: ");

10 int base = [Link]();


5
[Link]("INGRESE EL
10 EXPONENTE: ");
6
int exponente = [Link]();
10
int potencia = (int) [Link](base,
7
exponente);
10
[Link](" ---- EL RESULTADO
8
DE LA POTENCIA ES ---- : " + potencia);
10
break;
9

11 case 'x':
0
[Link]("Selecciono la Opcion
11 RAIZ CUBICA.");
1
[Link]("INGRESE EL NUMERO:
11 ");
2
int numero = [Link]();
11
double raizCubica = [Link](numero);
3
[Link](" ---- LA RAIZ CUBICA
11
DEL NUMERO INGRESADO ES ---- : " + raizCubica);
4
break;
11
5

11 case 'y':
6
[Link]("Selecciono la Opcion
11 FACTORIAL.");
7
[Link]("INGRESE EL NUMERO:
11 ");
8
int numFactorial = [Link]();
11
int factorial = 1;
9
for (int i = 1; i <= numFactorial; i++) {
12
0 factorial *= i;

12 }
1
[Link](" ---- EL FACTORIAL
12 DEL NUMERO INGRESADO ES ---- : " + factorial);
2
break;
12
3
case 'z':
12
4 [Link]("Selecciono la Opcion
FIBONACCI.");
12
5 [Link]("INGRESE LA CANTIDAD
DE TERMINOS: ");
12
6 int terminos = [Link]();

12 int a = 0,
7
b = 1,
12
fibonacci;
8
[Link]("Serie Fibonacci: " + a
12
+ " " + b);
9
for (int i = 2; i < terminos; i++) {
13
0 fibonacci = a + b;

13 [Link](" " + fibonacci);


1
a = b;
13
b = fibonacci;
2
}
13
3 [Link]();

13 break;
4

13
case 'e':
5
[Link]("Saliendo del
13
submenú de operaciones avanzadas...");
6
break;
13
7

13 default:
8
[Link]("Error!!, Opcion
13 Incorrecta.");
9
break;
14
}
0
} while (opcionAvanzada != 'e');
14
1 break;

14
2
case '0':
14
[Link]("Saliendo del Programa...");
3
break;
14
4

14 default:
5
[Link]("Opcion no valida.");
14
break;
6
}
14
7 } while (opcion != '0');

14 }
8
}
14
9

15
0

15
1

15
2

15
3

15
4

15
5

15
6

15
7

15
8

Correcciones y Mejoras:

1. Error de Sintaxis: Corregí errores de concatenación de cadenas y


de definición de variables.
2. Operaciones Faltantes: Implementé la división en el submenú
básico y las operaciones avanzadas (potencia, raíz cúbica,
factorial, y Fibonacci).
3. Salidas de Submenús: Añadí salidas para cada submenú ('s' y 'e'
para salir de básicos y avanzados, respectivamente).
4. Gestión de Errores: Añadí mensajes de error para opciones
inválidas y validación para evitar la división entre cero.

También podría gustarte