.NET 4.x Консольное приложение. Блокировка клавиш - C#
Формулировка задачи:
Всем привет,сразу к делу:
Сейчас это выглядит так. Хочу спросить,как можно сделать так,чтобы при нажатии сторонних клавиш(кроме Enter и Esc) ничего не срабатывало? Как видно сейчас,стоит обычная метка,но это не гуд и хотелось бы сделать все нормально. Как можно такое реализовать?
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; } } }
Решение задачи: «.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; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д