Ver Mensaje Individual
  #2 (permalink)  
Antiguo 08/06/2014, 17:30
javidotnet
 
Fecha de Ingreso: mayo-2013
Ubicación: Chaco, Argentina
Mensajes: 45
Antigüedad: 11 años
Puntos: 3
Sonrisa Respuesta: Duda en C#. Programa para calcular calificaciones.

Hola wind7, el código está bien, por lo que debería funcionar correctamente. Tal vez lo que esté pasando sea que el usuario teclea varias veces la tecla ENTER o si no se pulsan dos o más teclas al mismo tiempoo la otra es que la tecla ENTER se encuentra averiada y al pulsarla, en lugar de mandar una pulsación envía dos o más y por eso sale del programa. En todo caso se podría resolver, envolviendo todo el código cun un bucle do..while, para hacerlo cíclico. Ejemplo:
Código C#:
Ver original
  1. using System;
  2. namespace borrar2
  3. {
  4.     class programa
  5.     {
  6.         static void Main()
  7.         {
  8.             float puntajetotal,
  9.                     puntajeobtenido,
  10.                     porcentajedeexigencia,
  11.                     puntajecorte,
  12.                     porcentajedeexigencia2,
  13.                     formula1,
  14.                     formula2;
  15.  
  16.             char respuesta;
  17.  
  18.             do // éste es el bucle do..while que evita que se cierre el programa inesperadamente
  19.             {
  20.                 Console.ForegroundColor = ConsoleColor.White;
  21.                 Console.Clear();
  22.                 Console.WriteLine("Programa para calcular una nota.");
  23.                 Console.WriteLine("Válido para Chile.");
  24.                 Console.Write("Ingrese el puntaje total del certamen: ");
  25.                 puntajetotal = Convert.ToSingle(Console.ReadLine());
  26.  
  27.                 Console.Write("Ingrese puntaje obtenido: ");
  28.                 puntajeobtenido = Convert.ToSingle(Console.ReadLine());
  29.  
  30.                 Console.Write("Ingrese porcentaje de exigencia (%): ");
  31.                 porcentajedeexigencia = Convert.ToSingle(Console.ReadLine());
  32.                 while (porcentajedeexigencia <= 9)
  33.                 {
  34.                     Console.Write("Ingrese un número mayor que 9: ");
  35.                     porcentajedeexigencia = Convert.ToSingle(Console.ReadLine());
  36.                 }
  37.  
  38.                 porcentajedeexigencia2 = porcentajedeexigencia / 100;
  39.                 puntajecorte = puntajetotal * porcentajedeexigencia2;
  40.  
  41.                 formula1 = (puntajeobtenido * 7) / puntajetotal;
  42.                 formula2 = (puntajeobtenido * 4) / puntajecorte;
  43.  
  44.                 if (puntajeobtenido > puntajecorte)
  45.  
  46.                     Console.WriteLine("La calificación obtenida es: {0}", formula1);
  47.  
  48.                 else
  49.                     if (puntajeobtenido <= puntajecorte)
  50.                         Console.WriteLine("La calificación obtenida es: {0}", formula2);
  51. //aquí dibujo la ventanita que tanto me gusta
  52.                 Console.CursorTop = 10;
  53.                 Console.CursorLeft = 15; Console.WriteLine("┌───────────────────────────────────────────────┐");
  54.                 Console.CursorLeft = 15; Console.WriteLine("│                                               │");
  55.                 Console.CursorLeft = 15; Console.WriteLine("│  ¿Desea calcular otra calificación? [S/N]     │");
  56.                 Console.CursorLeft = 15; Console.WriteLine("│                                               │");
  57.                 Console.CursorLeft = 15; Console.WriteLine("└───────────────────────────────────────────────┘");
  58.  
  59.                 do // este bucle limita las teclas que puede pulsar el usuario a sólo la S o sólo la N
  60.                 {
  61.                     Console.CursorTop = 12;
  62.                     Console.CursorLeft = 60;
  63.                     respuesta = Convert.ToChar(Console.ReadKey().KeyChar.ToString().ToUpper());
  64.  
  65.                 } while (respuesta != 'N' && respuesta != 'S');
  66.  
  67.             } while (respuesta == 'S');
  68.         } // static void Main
  69.     } // Class
  70. } // namespace
Cuando uso consola me gustan usar ventanitas, pero si no te gusta podés quitarla, lo importante es que conserves el bucle do..while que envuelve el código para que no se cierre el programita por un error de tipeo.

¡Saludos cordiales desde Argentina!