Ошибка в программе для решения уравнений - C#
Формулировка задачи:
Здравствуйте.
У меня было задание написать программу вычисляющую корни квадратного уравнения. Также нужно было сделать проверку введенных пользователем данных.
Сам код:
При попытке компиляции выдает ошибку "Use of unassigned local variable". Подскажите, как решить данную проблему?
Так же вопрос, можно ли здесь:
Сделать вывод типа исключения по другому? Просто брал из старых тем, может сейчас что изменилось.
Также, если можно, подскажите, как вынести код решения в отдельный класс или другой файл .cs?
Листинг программы
- 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);
- }
- }
- }
- }
- }
- }
- }
Листинг программы
- catch (Exception ex)
- {
- Console.WriteLine ("Непредвиденная ошибка");
- Console.WriteLine (ex.Message);
- }
Решение задачи: «Ошибка в программе для решения уравнений»
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;
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д