Ayuda con este codigo c#

Iniciado por Fran2013, 7 Noviembre 2013, 22:26 PM

0 Miembros y 1 Visitante están viendo este tema.

Fran2013

Hola amigos de elhacker, me presento: soy Francisco...
quisiera pedirles ayuda con este codigo en c# ...

Código (csharp) [Seleccionar]

int horasD;
           int DiasT;
           int PagoH;
           int SemanasM;

           Console.Title = "Horas Pagas";

           Console.Write("Ingrese las horas al dia que trabaja: ");
           horasD = Console.Read();
           Console.WriteLine(" ");
           Console.Write("Ingrese el dinero que recibe por hora: ");
           PagoH = Console.Read();
           Console.WriteLine(" ");
           Console.Write("Ingrese los dias que trabaja por semana: ");
           DiasT = Console.Read();
           Console.WriteLine(" ");
           Console.Write("Ingrese las semanas que tiene este mes: ");
           SemanasM = Console.Read();
           
           int dinero_x_dia = horasD * PagoH;
           int dinero_x_semana = dinero_x_dia * DiasT;
           int total = dinero_x_semana * SemanasM;

           Console.WriteLine("Este mes vas a ganar " + total + " $");
           Console.ReadLine();



Lo que pasa es que al ejecutarlo solo me da a ingresar las horas y las semanas. Terminando mostrando una cifra disparatada... O aveces terminando el programa al ingresar las semanas ...  Cual sera el problema??? No lo preciso urgente ni nada, pero mi duda es porque pasa eso si aparentemente el codigo esta perfecto  :-( .


Ayuda  :huh:




Si tuviera el código fuente de tu amor, haría que amara al objeto "YO".

Mitsu

#1
En C# todo lo que se recibe por medio de Console.ReadLine() es un String. Si el objetivo es manipular datos numéricos, debes de convertir ese String al formato numérico que desees, sea int, double, float.

La conversión en C# a int se hace de la siguiente manera:

Código (=csharp) [Seleccionar]

// Console.ReadLine() capta todo en formato String
// Lo tenemos que convertir a int con Convert.ToInt32()
int horas = Convert.ToInt32(Console.ReadLine());


Para convertir lo ingresado a Double, se hace el mismo procedimiento, pero se cambia ToInt32 por ToDouble:

Código (=csharp) [Seleccionar]

// Console.ReadLine() capta todo en formato String
// Lo tenemos que convertir a double con Convert.ToDouble()
double pagoH = Convert.ToDouble(Console.ReadLine());


En resumen, tu código quedaría así:

Código (=csharp) [Seleccionar]

    static void main (String... args) {
            int horasD;
            int DiasT;
            int PagoH;
            int SemanasM;

            Console.Title = "Horas Pagas";

            Console.WriteLine("Ingrese las horas al dia que trabaja: ");
            horasD = Convert.ToInt32(Console.Read());
            Console.WriteLine("Ingrese el dinero que recibe por hora: ");
            PagoH = Convert.ToDouble(Console.Read());
            Console.WriteLine("Ingrese los dias que trabaja por semana: ");
            DiasT = Convert.ToInt32(Console.Read());
            Console.WriteLine("Ingrese las semanas que tiene este mes: ");
            SemanasM = Convert.ToInt32(Console.Read());
   
            double dinero_x_dia = horasD * PagoH;
            double dinero_x_semana = dinero_x_dia * DiasT;
            double total_mensual = dinero_x_semana * SemanasM;

            Console.WriteLine("Este mes vas a ganar " + total_mensual + " $");
            Console.ReadKey();

     }

Fran2013

Gracias M1t$u, el error estaba en la entrada de datos :).
El codigo no era un trabajo para el estudio ni nada , una simple prueba mia...
Esto demuestra que no siempre  la ventana de errores y advertencias tiene la razon  :¬¬ .

Saludos y gracias de nuevo ... 




Si tuviera el código fuente de tu amor, haría que amara al objeto "YO".

Mitsu

Jaja, Sería perfecto que los compiladores adviertan de estos pequeños errores.


Saludos.