.NET 4.x Консольное приложение. Блокировка клавиш - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет,сразу к делу:
using System;
class Program
{
    static void Main()
    {
   Metka:
        char answer;
        do
        {
            Console.Clear();
            double x, x1, x2;
            Console.WriteLine("Введите a");
            double a = double.Parse(Console.ReadLine().Trim());
            Console.WriteLine("Введите b");
            double b = double.Parse(Console.ReadLine().Trim());
            Console.WriteLine("Введите c");
            double c = double.Parse(Console.ReadLine().Trim());
            double d = ((b * b) - (4 * a * c));
            Console.WriteLine("Дискриминант = " + d);
            if (d < 0)
            {
                Console.WriteLine("Нет корней");
            }
 
            if (d == 0)
            {
                x = (-b / 2 * a);
                Console.WriteLine("1 корень: x = " + Math.Round(x, 2));
            }
 
            if (d > 0)
            {
                double sqrtD = (double)System.Math.Sqrt(d);
                x1 = ((-b + sqrtD) / (2 * a));
                x2 = ((-b - sqrtD) / (2 * a));
                Console.Write("2 корня: x1 = " + Math.Round(x1, 2));
                Console.WriteLine(", x2= " + Math.Round(x2, 2));
            }
 
            Console.WriteLine("Press Enter to continue\nPress Esc to exit");
            answer = Console.ReadKey().KeyChar;
 
        }
        while (answer == 13);
        if (answer != 27)
        {
            goto Metka;
        }
 
    }
}
Сейчас это выглядит так. Хочу спросить,как можно сделать так,чтобы при нажатии сторонних клавиш(кроме Enter и Esc) ничего не срабатывало? Как видно сейчас,стоит обычная метка,но это не гуд и хотелось бы сделать все нормально. Как можно такое реализовать?

Решение задачи: «.NET 4.x Консольное приложение. Блокировка клавиш»

textual
Листинг программы
using System;
class Program
{
    static void Main()
    {
        while(true)
        {
            try                                                                 //Обычное выполнение программы.
            {
 
                Console.Clear();
                double x, x1, x2;
                Console.WriteLine("Введите a");
                double a = double.Parse(Console.ReadLine().Trim());             //Вводим значение a
                Console.WriteLine("Введите b");
                double b = double.Parse(Console.ReadLine().Trim());             //Вводим значение b
                Console.WriteLine("Введите c");
                double c = double.Parse(Console.ReadLine().Trim());             //Вводим значение c
               
                double d = ((b * b) - (4 * a * c));                             //Находим Дискриминант и выводим его не экран
                Console.WriteLine("Дискриминант = " + d);
               
                if (d < 0)                                                      //При Дискриминанте меньше нуля выводит "нет корней".
                {
                    Console.WriteLine("Нет корней");
                }
 
                if (d == 0)                                                     //При Дискриминанте равном нулю,считает единственный корень и выводит его.
                {
                    x = (-b / 2 * a);
                    Console.WriteLine("1 корень: x = " + Math.Round(x, 2));     //Операция Math.Round округляет значение аргумента с плавающей точкой до определенного кол-ва знаков после точки. 
                }
 
                if (d > 0)                                                      //При Дискриминанте больше нуля,считает и выводит оба корня уравнения.
                {
                    double sqrtD = (double)Math.Sqrt(d);                        //Вычисляет корень их Дискриминанта
                    x1 = ((-b + sqrtD) / (2 * a));
                    x2 = ((-b - sqrtD) / (2 * a));
                    Console.Write("2 корня: x1 = " + Math.Round(x1, 2));        
                    Console.WriteLine(", x2= " + Math.Round(x2, 2));
                }
 
                     Console.WriteLine("Для продолжения нажмите Ввод. Для выхода - Esc");
                 
 
                }
 
    
            catch (Exception ex)                                                //Выполнение программы при введении неверных символов(например,букв). Вывод ошибки и повтор программы сначала.
 
            {
                Console.WriteLine("ошибка. " + ex.Message);
            }
            
            ConsoleKey k = Console.ReadKey(true).Key;                           //Присвоение k определенного символьного значения(клавиши).
            
            while (k != ConsoleKey.Escape && k != ConsoleKey.Enter)             //тут даже и не знаю,как описать:D
            
            {
            
                k = Console.ReadKey(true).Key;
                
            }
            
            if (k == ConsoleKey.Escape) break;
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы