Ошибка в программе для решения уравнений - C#

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

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

Здравствуйте. У меня было задание написать программу вычисляющую корни квадратного уравнения. Также нужно было сделать проверку введенных пользователем данных. Сам код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Prog
{
    public class Resh
    {
         public static void Main(string[] args)
        {
            double a, b, c, d, x1, x2 = 0;
            string a1, b1, c1;
 
            Console.WriteLine ("Представьте квадратное уравнение в виде: A*x^2 + B*x + C = 0");
            Console.WriteLine ("Введите в програму числа 'A', 'B', 'C' в диапазоне от -17523 до +17523");
 
            try
            {
                Console.WriteLine ("введите параметр A");
                a1 = Console.ReadLine();
                a = Convert.ToDouble(a1);
            }
            catch (OverflowException)
            {
                Console.WriteLine ("Вы ввели число выходящие за диапазон");
            }
            catch (FormatException)
            {
                Console.WriteLine ("Вы ввели не число");
            }
            catch (Exception ex)
            {
                Console.WriteLine ("Непредвиденная ошибка");
                Console.WriteLine (ex.Message);
            }
 
            try
            {
                Console.WriteLine ("введите параметр B");
                b1 = Console.ReadLine();
                b = Convert.ToDouble(b1);
            }
            catch (OverflowException)
            {
                Console.WriteLine ("Вы ввели число выходящие за диапазон");
            }
            catch (FormatException)
            {
                Console.WriteLine ("Вы ввели не число");
            }
            catch (Exception ex)
            {
                Console.WriteLine ("Непредвиденная ошибка");
                Console.WriteLine (ex.Message);
            }
 
            try
            {
                Console.WriteLine ("введите параметр A");
                c1 = Console.ReadLine();
                c = Convert.ToDouble(c1);
            }
            catch (OverflowException)
            {
                Console.WriteLine ("Вы ввели число выходящие за диапазон");
            }
            catch (FormatException)
            {
                Console.WriteLine ("Вы ввели не число");
            }
            catch (Exception ex)
            {
                Console.WriteLine ("Непредвиденная ошибка");
                Console.WriteLine (ex.Message);
            }

            d = (b * b) - (4 * a * c); // ошибка вот здесь
 
            if (a == 0)
            {
                x1 = x2 = -c / b;
                Console.WriteLine("один корень: " , x1);
            }
            else
            {
                if (d < 0)
                    Console.WriteLine("корней нет");
                else
                {
                    if (d == 0)
                    {
                        x1 = x2 = -b / (2 * a);
                        Console.WriteLine("получаем полный квадрат, один корень: " , x1);
                    }
                    else
                    {
                        if (d > 0)
                        {
                            x1 = (-b - Math.Sqrt(d)) / (2 * a);
                            x2 = (-b + Math.Sqrt(d)) / (2 * a);
                            Console.WriteLine("два корня: ", x1 , " & " , x2);
                        }
                    }
                }
 
            }
        }
    }
}
При попытке компиляции выдает ошибку "Use of unassigned local variable". Подскажите, как решить данную проблему? Так же вопрос, можно ли здесь:
            catch (Exception ex)
            {
                Console.WriteLine ("Непредвиденная ошибка");
                Console.WriteLine (ex.Message);
            }
Сделать вывод типа исключения по другому? Просто брал из старых тем, может сейчас что изменилось. Также, если можно, подскажите, как вынести код решения в отдельный класс или другой файл .cs?

Решение задачи: «Ошибка в программе для решения уравнений»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication16
{
    class Program
    {
        public static void Main(string[] args)
        {
            int y = 0;
            string y1;
 
            do
            {
                Kalk urav = new Kalk();
                Console.WriteLine(urav.RKU());
 
                Console.WriteLine("Удачного дня!");
 
                for (; ; )
                {
 
                    Console.WriteLine("Если хотите решить ещё одно уравнение, введите '1'.");
                    y1 = Console.ReadLine();
 
                    try
                    {
                        y = Convert.ToInt32(y1);
                        break;
                    }
                    catch (FormatException)
                    {
                        Console.WriteLine("Вы ввели не число");
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("Непредвиденная ошибка");
                        Console.WriteLine(ex.Message);
                    }
                }
 
            } while (y == 1);
        }
    }
 
    public class Kalk
    {
        double a, b, c;
 
        public Kalk()
        {
            Vvod();
        }
 
        public void Vvod()
        {
            string a1, b1, c1;
            Console.WriteLine("Представьте квадратное уравнение в виде: A*x^2 + B*x + C = 0");
            Console.WriteLine("Введите в програму числа 'A', 'B', 'C' в диапазоне от -17523 до +17523");
 
            for (; ; )
            {
 
                try
                {
                    Console.WriteLine("введите параметр A");
                    a1 = Console.ReadLine();
                    a = Convert.ToDouble(a1);
                    break;
                }
                catch (OverflowException)
                {
                    Console.WriteLine("Вы ввели число выходящие за диапазон");
                }
                catch (FormatException)
                {
                    Console.WriteLine("Вы ввели не число");
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Непредвиденная ошибка");
                    Console.WriteLine(ex.Message);
                }
            }
 
            for (; ; )
            {
 
                try
                {
                    Console.WriteLine("введите параметр B");
                    b1 = Console.ReadLine();
                    b = Convert.ToDouble(b1);
                    break;
                }
                catch (OverflowException)
                {
                    Console.WriteLine("Вы ввели число выходящие за диапазон");
                }
                catch (FormatException)
                {
                    Console.WriteLine("Вы ввели не число");
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Непредвиденная ошибка");
                    Console.WriteLine(ex.Message);
                }
            }
 
            for (; ; )
            {
 
                try
                {
                    Console.WriteLine("введите параметр C");
                    c1 = Console.ReadLine();
                    c = Convert.ToDouble(c1);
                    break;
                }
                catch (OverflowException)
                {
                    Console.WriteLine("Вы ввели число выходящие за диапазон");
                }
                catch (FormatException)
                {
                    Console.WriteLine("Вы ввели не число");
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Непредвиденная ошибка");
                    Console.WriteLine(ex.Message);
                }
            }
        }
 
        public string RKU()
        {
            double d = 0.0, x1 = 0.0, x2 = 0.0;
            string otv = "Нет решения!";
 
            try
            {
 
                d = (b * b) - (4 * a * c);
 
                if (a == 0)
                {
                    x1 = x2 = -c / b;
                    otv = "Корень только один:" + x1;
                }
                else
                {
                    if (d < 0)
                        otv = "Корней нет.";
                    else
                    {
                        if (d == 0)
                        {
                            x1 = x2 = -b / (2 * a);
                            otv = "Уравнение представляет собой полный квадрат. Корень один: " + x1;
                        }
                        else
                        {
                                x1 = (-b - Math.Sqrt(d)) / (2 * a);
                                x2 = (-b + Math.Sqrt(d)) / (2 * a);
                                otv = "У данного уравнения два корня: " + x1 + "  и  " + x2;
                            
                        }
                    }
                }
                return otv;
            }
            catch
            {
                Console.WriteLine("Непредвиденная ошибка. Попробуйте снова.");
                return otv;
            }
        }
    }
}

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


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

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

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