Ошибка в программе для решения уравнений - 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; } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д