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 originalusing System;
namespace borrar2
{
class programa
{
static void Main()
{
float puntajetotal,
puntajeobtenido,
porcentajedeexigencia,
puntajecorte,
porcentajedeexigencia2,
formula1,
formula2;
char respuesta;
do // éste es el bucle do..while que evita que se cierre el programa inesperadamente
{
Console.ForegroundColor = ConsoleColor.White;
Console.Clear();
Console.WriteLine("Programa para calcular una nota.");
Console.WriteLine("Válido para Chile.");
Console.Write("Ingrese el puntaje total del certamen: ");
puntajetotal = Convert.ToSingle(Console.ReadLine());
Console.Write("Ingrese puntaje obtenido: ");
puntajeobtenido = Convert.ToSingle(Console.ReadLine());
Console.Write("Ingrese porcentaje de exigencia (%): ");
porcentajedeexigencia = Convert.ToSingle(Console.ReadLine());
while (porcentajedeexigencia <= 9)
{
Console.Write("Ingrese un número mayor que 9: ");
porcentajedeexigencia = Convert.ToSingle(Console.ReadLine());
}
porcentajedeexigencia2 = porcentajedeexigencia / 100;
puntajecorte = puntajetotal * porcentajedeexigencia2;
formula1 = (puntajeobtenido * 7) / puntajetotal;
formula2 = (puntajeobtenido * 4) / puntajecorte;
if (puntajeobtenido > puntajecorte)
Console.WriteLine("La calificación obtenida es: {0}", formula1);
else
if (puntajeobtenido <= puntajecorte)
Console.WriteLine("La calificación obtenida es: {0}", formula2);
//aquí dibujo la ventanita que tanto me gusta
Console.CursorTop = 10;
Console.CursorLeft = 15; Console.WriteLine("┌───────────────────────────────────────────────┐");
Console.CursorLeft = 15; Console.WriteLine("│ │");
Console.CursorLeft = 15; Console.WriteLine("│ ¿Desea calcular otra calificación? [S/N] │");
Console.CursorLeft = 15; Console.WriteLine("│ │");
Console.CursorLeft = 15; Console.WriteLine("└───────────────────────────────────────────────┘");
do // este bucle limita las teclas que puede pulsar el usuario a sólo la S o sólo la N
{
Console.CursorTop = 12;
Console.CursorLeft = 60;
respuesta = Convert.ToChar(Console.ReadKey().KeyChar.ToString().ToUpper());
} while (respuesta != 'N' && respuesta != 'S');
} while (respuesta == 'S');
} // static void Main
} // Class
} // 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!