Задать вопрос
@iddmitriykozyrev

Кодревью c# консольного аппа?

Оцените небольшое консольное приложение на C# по нахождению дискриминанта и корней.

Помогите,пожалуйста, с обработкой исключения для переменных a,b,c через try-catch.

критика принимается,но не грубая. Все-таки программирую второй день после школьного pascal

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace uravnenie1
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                Console.WriteLine("Введите квадратное уравнение:");
                Console.WriteLine("Введите a,b,c:");
                
                double a = Convert.ToDouble(Console.ReadLine());
                double b = Convert.ToDouble(Console.ReadLine());
                double c = Convert.ToDouble(Console.ReadLine());

                double D = (double)(Math.Pow(b, 2)) - 4 * a * c;
                Console.WriteLine("квадратное выражение : " + a + "x^2+" + b + "x+" + c);
                Console.WriteLine("D=" + D);

                double x1;
                if (D > 0)
                {
                    double x2;
                    x1 = ((-b + (Math.Sqrt(D))) / (2 * a));
                    x2 = ((-b - (Math.Sqrt(D))) / (2 * a));
                    Console.WriteLine("X1=" + x1);
                    Console.WriteLine("X2=" + x2);
                }
                else if (D == 0)
                {
                    x1 = -b / (2 * a);
                    Console.WriteLine("X=" + x1);
                }
                else if (D < 0)
                {
                    Console.WriteLine("Действительных корней нет");
                }
                string exit = Console.ReadLine();
                if (exit == "exit")
                    break;
            }
        }
    }
}
  • Вопрос задан
  • 271 просмотр
Подписаться 2 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
@OwDafuq
Ошибки, которые бросаются в глаза (некоторые из них притянуты за уши(!)):
1. Сразу конвертируем данные из строки в числа:
double a = Convert.ToDouble(Console.ReadLine());
Сломает вашу программу полностью, если написать в консоль символ, либо вообще ничего не писать.
Используйте double.TryParse
2. Используйте интерполяцию строк:
Console.WriteLine($"квадратное выражение: {a} + x^2 + {b} + x + {c}");

3. Лишние скобки:
x1 = ((-b + (Math.Sqrt(D))) / (2 * a));
Для чего?
4. Лишние переменные для чего? Посчитали и выводим на консоль результат, ЕСЛИ дальше результат не нужен для вычислений:
Console.WriteLine($"X1 = {(-b + (Math.Sqrt(D))) / (2 * a)}");
Console.WriteLine($"X2 = {(-b - (Math.Sqrt(D))) / (2 * a)}");

5. Для выхода не обязательно объявлять переменную:
if (Console.ReadLine() == "exit")
	break;
Ответ написан
@Koshelev
Помогите,пожалуйста, с обработкой исключения для переменных a,b,c через try-catch.

Обработка исключений - дорогое удовольствие. В данном случае их не нужно использовать.
Лучше, как написал LiptonOlolo, используй double.TryParse.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы