C sharp - [DUDA] Menús C#

   
Vista:

[DUDA] Menús C#

Publicado por Alan (1 intervención) el 05/04/2016 20:12:31
Buenas gente, resulta que tengo el siguiente problema "Ingresar un valor en la variable "opción" y realizar la operación con la siguiente correspondencia: (1) determinar el mayor de los valores, (2) calcular el promedio de los valores, (3) calculas el producto de los valores (4) calcular la raíz cúbica de ambos valores y (5) salir del programa ". No vengo para que me hagan mi tarea, sólo vengo a pedir una mano. Soy medio nuevito en este mundo, les dejo el código del programa y gracias de antemano :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
using System;
 
namespace TP1_23
{
    class Program
    {
        static void Main(string[] args)
        {
            string opcion = string.Empty;
 
            do
            {
                Console.WriteLine("============================================");
                Console.WriteLine("                     MENU                   ");
                Console.WriteLine("============================================");
                Console.WriteLine("1) Determinar el mayor de los valores");
                Console.WriteLine("2) Calcular el promedio de los valores");
                Console.WriteLine("3) Calcular el producto de los valores");
                Console.WriteLine("4) Calcular la raíz cúbica de cada valor");
                Console.WriteLine("5) Salir del sistema");
 
                opcion = Console.ReadLine().ToUpper();
 
                double dValor1 = 0;
                double dValor2 = 0;
                double dRaizValor1;
                double dRaizValor2;
                double dRaizCub = 1 / 3;
 
                switch (opcion)
                {
                    case "1":
 
                        Console.WriteLine("Ingrese el primer valor : ");
                        while (!double.TryParse(Console.ReadLine(), out dValor1))
                        {
                            Console.WriteLine("Error de carga... Vuelva a intentarlo");
                            Console.WriteLine("Ingrese el primer valor : ");
                        }
 
                        Console.WriteLine("Ingrese el segundo valor : ");
                        while (!double.TryParse(Console.ReadLine(), out dValor2))
                        {
                            Console.WriteLine("Error de carga... Vuelva a intentarlo");
                            Console.WriteLine("Ingrese el segundo valor : ");
                        }
                        Console.Clear();
                        if (dValor1 > dValor2)
                        {
                            Console.WriteLine("El mayor es : " + dValor1);
                        }
                        else
                        {
                            Console.WriteLine("El mayor es : " + dValor2);
                        }
                        Console.ReadKey();
                        break;
 
                    case "2":
                        Console.WriteLine("Ingrese el primer valor : ");
                        while (!double.TryParse(Console.ReadLine(), out dValor1))
                        {
                            Console.WriteLine("Error de carga... Vuelva a intentarlo");
                            Console.WriteLine("Ingrese el primer valor : ");
                        }
 
                        Console.WriteLine("Ingrese el segundo valor : ");
                        while (!double.TryParse(Console.ReadLine(), out dValor2))
                        {
                            Console.WriteLine("Error de carga... Vuelva a intentarlo");
                            Console.WriteLine("Ingrese el segundo valor : ");
                        }
                        Console.Clear();
                        double suma = dValor1 + dValor2;
                        double promedio = (dValor1 + dValor2) / 2;
                        Console.WriteLine("El promedio es : " + promedio);
                        Console.ReadKey();
                        break;
 
                    case "3":
                        Console.WriteLine("Ingrese el primer valor : ");
                        while (!double.TryParse(Console.ReadLine(), out dValor1))
                        {
                            Console.WriteLine("Error de carga... Vuelva a intentarlo");
                            Console.WriteLine("Ingrese el primer valor : ");
                        }
 
                        Console.WriteLine("Ingrese el segundo valor : ");
                        while (!double.TryParse(Console.ReadLine(), out dValor2))
                        {
                            Console.WriteLine("Error de carga... Vuelva a intentarlo");
                            Console.WriteLine("Ingrese el segundo valor : ");
                        }
                        Console.Clear();
                        double producto = dValor1 * dValor2;
                        Console.WriteLine("El producto de ambas es igual a : " + producto);
                        Console.ReadKey();
                        break;
 
                    case "4":
                        Console.WriteLine("Ingrese el primer valor : ");
                        while (!double.TryParse(Console.ReadLine(), out dValor1))
                        {
                            Console.WriteLine("Error de carga... Vuelva a intentarlo");
                            Console.WriteLine("Ingrese el primer valor : ");
                        }
 
                        Console.WriteLine("Ingrese el segundo valor : ");
                        while (!double.TryParse(Console.ReadLine(), out dValor2))
                        {
                            Console.WriteLine("Error de carga... Vuelva a intentarlo");
                            Console.WriteLine("Ingrese el segundo valor : ");
                        }
                        Console.Clear();
                        dRaizValor1 = Math.Pow(dValor1, 1/3);
                        dRaizValor2 = Math.Pow(dValor2, 1/3);
 
                        Console.WriteLine("La raíz cúbica de {0} es : ", dRaizValor1);
                        Console.WriteLine("La raíz cúbica de {0} es : ", dRaizValor2);
                        break;
 
                    case "5":
                        Console.WriteLine("Saliendo del programa...");
                        break;
                    default:
                        Console.WriteLine("No se ha seleccionado una opción válida");
                        break;
                }
 
 
            } while (opcion != "5");
 
            Console.ReadKey();
        }
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

[DUDA] Menús C#

Publicado por Thanatos (8 intervenciones) el 06/04/2016 01:22:08
Parece que tu programa funciona, a excepción de la raíz cúbica. El problema se debe a la operación: 1 / 3, como ambos valores son enteros, el resultado que se obtiene también es un entero; en este caso el resultado es cero.

Para que el resultado sea de un tipo de dato que admite la parte decimal, debes realizar un casting al menos a uno de los valores. Podrías usar cualquiera de estas opciones:

1
dRaizValor1 = Math.Pow(dValor1, (double) 1 / (double) 3);

1
dRaizValor1 = Math.Pow(dValor1, (double) 1 /  3);

1
dRaizValor1 = Math.Pow(dValor1, 1 / (double) 3);


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
using System;
 
namespace TP1_23
{
    class Program
    {
        static void Main(string[] args)
        {
            string opcion = string.Empty;
 
            do
            {
                double valor1 = 0;
                double valor2 = 0;
 
                Console.Clear();
                MostrarMenu();
                opcion = Console.ReadLine();
 
                switch (opcion)
                {
                    case "1":
                        AsignarValores(ref valor1, ref valor2);
                        Console.Write("\nEl mayor es: ");
                        if (valor1 > valor2)
                            Console.WriteLine(valor1);
                        else
                            Console.WriteLine(valor2);
                        break;
                    case "2":
                        AsignarValores(ref valor1, ref valor2);
                        Console.WriteLine("\nEl promedio es: {0}", (valor1 + valor2) / 2);
                        break;
                    case "3":
                        AsignarValores(ref valor1, ref valor2);
                        Console.WriteLine("\nEl producto es: {0}", valor1 * valor2);
                        break;
                    case "4":
                        AsignarValores(ref valor1, ref valor2);
                        double raizValor1 = Math.Pow(valor1, (double) 1 / 3);
                        double raizValor2 = Math.Pow(valor2, (double) 1 / 3);
 
                        Console.WriteLine("\nLa raíz cúbica de {0} es: {1}", valor1, raizValor1);
                        Console.WriteLine("La raíz cúbica de {0} es: {1}", valor2, raizValor2);
                        break;
                    case "5":
                        Console.WriteLine("\nSaliendo del programa...");
                        break;
                    default:
                        Console.Write("\nNo se ha seleccionado una opción válida");
                        break;
                }
                Console.ReadKey(true);
            } while (opcion != "5");
        }
 
        private static void MostrarMenu()
        {
            Console.Write("{0}\n{1}\n{2}\n{3}\n{4}\n{5}\n{6}\n{7}\n{8}\n{9}",
                "================================================",
                "                     M E N U                     ",
                "================================================",
                "    1) Determinar el mayor de los valores",
                "    2) Calcular el promedio de los valores",
                "    3) Calcular el producto de los valores",
                "    4) Calcular la raíz cúbica de cada valor",
                "    5) Salir del sistema",
                "================================================",
                "opción = "
            );
        }
 
        private static void AsignarValores(ref double valor1, ref double valor2)
        {
            Console.Write("\nIngrese el primer valor: ");
            while (!double.TryParse(Console.ReadLine(), out valor1))
            {
                Console.WriteLine("\nSe esperaba un número. Vuelva a intentarlo");
                Console.Write("Ingrese el primer valor: ");
            }
 
            Console.Write("Ingrese el segundo valor: ");
            while (!double.TryParse(Console.ReadLine(), out valor2))
            {
                Console.WriteLine("\nSe esperaba un número. Vuelva a intentarlo");
                Console.Write("Ingrese el segundo valor: ");
            }
        }
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar