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

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

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

Здравствуйте. У меня было задание написать программу вычисляющую корни квадратного уравнения. Также нужно было сделать проверку введенных пользователем данных. Сам код:
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace Prog
  7. {
  8. public class Resh
  9. {
  10. public static void Main(string[] args)
  11. {
  12. double a, b, c, d, x1, x2 = 0;
  13. string a1, b1, c1;
  14. Console.WriteLine ("Представьте квадратное уравнение в виде: A*x^2 + B*x + C = 0");
  15. Console.WriteLine ("Введите в програму числа 'A', 'B', 'C' в диапазоне от -17523 до +17523");
  16. try
  17. {
  18. Console.WriteLine ("введите параметр A");
  19. a1 = Console.ReadLine();
  20. a = Convert.ToDouble(a1);
  21. }
  22. catch (OverflowException)
  23. {
  24. Console.WriteLine ("Вы ввели число выходящие за диапазон");
  25. }
  26. catch (FormatException)
  27. {
  28. Console.WriteLine ("Вы ввели не число");
  29. }
  30. catch (Exception ex)
  31. {
  32. Console.WriteLine ("Непредвиденная ошибка");
  33. Console.WriteLine (ex.Message);
  34. }
  35. try
  36. {
  37. Console.WriteLine ("введите параметр B");
  38. b1 = Console.ReadLine();
  39. b = Convert.ToDouble(b1);
  40. }
  41. catch (OverflowException)
  42. {
  43. Console.WriteLine ("Вы ввели число выходящие за диапазон");
  44. }
  45. catch (FormatException)
  46. {
  47. Console.WriteLine ("Вы ввели не число");
  48. }
  49. catch (Exception ex)
  50. {
  51. Console.WriteLine ("Непредвиденная ошибка");
  52. Console.WriteLine (ex.Message);
  53. }
  54. try
  55. {
  56. Console.WriteLine ("введите параметр A");
  57. c1 = Console.ReadLine();
  58. c = Convert.ToDouble(c1);
  59. }
  60. catch (OverflowException)
  61. {
  62. Console.WriteLine ("Вы ввели число выходящие за диапазон");
  63. }
  64. catch (FormatException)
  65. {
  66. Console.WriteLine ("Вы ввели не число");
  67. }
  68. catch (Exception ex)
  69. {
  70. Console.WriteLine ("Непредвиденная ошибка");
  71. Console.WriteLine (ex.Message);
  72. }
  73.  
  74. d = (b * b) - (4 * a * c); // ошибка вот здесь
  75. if (a == 0)
  76. {
  77. x1 = x2 = -c / b;
  78. Console.WriteLine("один корень: " , x1);
  79. }
  80. else
  81. {
  82. if (d < 0)
  83. Console.WriteLine("корней нет");
  84. else
  85. {
  86. if (d == 0)
  87. {
  88. x1 = x2 = -b / (2 * a);
  89. Console.WriteLine("получаем полный квадрат, один корень: " , x1);
  90. }
  91. else
  92. {
  93. if (d > 0)
  94. {
  95. x1 = (-b - Math.Sqrt(d)) / (2 * a);
  96. x2 = (-b + Math.Sqrt(d)) / (2 * a);
  97. Console.WriteLine("два корня: ", x1 , " & " , x2);
  98. }
  99. }
  100. }
  101. }
  102. }
  103. }
  104. }
При попытке компиляции выдает ошибку "Use of unassigned local variable". Подскажите, как решить данную проблему? Так же вопрос, можно ли здесь:
Листинг программы
  1. catch (Exception ex)
  2. {
  3. Console.WriteLine ("Непредвиденная ошибка");
  4. Console.WriteLine (ex.Message);
  5. }
Сделать вывод типа исключения по другому? Просто брал из старых тем, может сейчас что изменилось. Также, если можно, подскажите, как вынести код решения в отдельный класс или другой файл .cs?

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

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ConsoleApplication16
  8. {
  9.     class Program
  10.     {
  11.         public static void Main(string[] args)
  12.         {
  13.             int y = 0;
  14.             string y1;
  15.  
  16.             do
  17.             {
  18.                 Kalk urav = new Kalk();
  19.                 Console.WriteLine(urav.RKU());
  20.  
  21.                 Console.WriteLine("Удачного дня!");
  22.  
  23.                 for (; ; )
  24.                 {
  25.  
  26.                     Console.WriteLine("Если хотите решить ещё одно уравнение, введите '1'.");
  27.                     y1 = Console.ReadLine();
  28.  
  29.                     try
  30.                     {
  31.                         y = Convert.ToInt32(y1);
  32.                         break;
  33.                     }
  34.                     catch (FormatException)
  35.                     {
  36.                         Console.WriteLine("Вы ввели не число");
  37.                     }
  38.                     catch (Exception ex)
  39.                     {
  40.                         Console.WriteLine("Непредвиденная ошибка");
  41.                         Console.WriteLine(ex.Message);
  42.                     }
  43.                 }
  44.  
  45.             } while (y == 1);
  46.         }
  47.     }
  48.  
  49.     public class Kalk
  50.     {
  51.         double a, b, c;
  52.  
  53.         public Kalk()
  54.         {
  55.             Vvod();
  56.         }
  57.  
  58.         public void Vvod()
  59.         {
  60.             string a1, b1, c1;
  61.             Console.WriteLine("Представьте квадратное уравнение в виде: A*x^2 + B*x + C = 0");
  62.             Console.WriteLine("Введите в програму числа 'A', 'B', 'C' в диапазоне от -17523 до +17523");
  63.  
  64.             for (; ; )
  65.             {
  66.  
  67.                 try
  68.                 {
  69.                     Console.WriteLine("введите параметр A");
  70.                     a1 = Console.ReadLine();
  71.                     a = Convert.ToDouble(a1);
  72.                     break;
  73.                 }
  74.                 catch (OverflowException)
  75.                 {
  76.                     Console.WriteLine("Вы ввели число выходящие за диапазон");
  77.                 }
  78.                 catch (FormatException)
  79.                 {
  80.                     Console.WriteLine("Вы ввели не число");
  81.                 }
  82.                 catch (Exception ex)
  83.                 {
  84.                     Console.WriteLine("Непредвиденная ошибка");
  85.                     Console.WriteLine(ex.Message);
  86.                 }
  87.             }
  88.  
  89.             for (; ; )
  90.             {
  91.  
  92.                 try
  93.                 {
  94.                     Console.WriteLine("введите параметр B");
  95.                     b1 = Console.ReadLine();
  96.                     b = Convert.ToDouble(b1);
  97.                     break;
  98.                 }
  99.                 catch (OverflowException)
  100.                 {
  101.                     Console.WriteLine("Вы ввели число выходящие за диапазон");
  102.                 }
  103.                 catch (FormatException)
  104.                 {
  105.                     Console.WriteLine("Вы ввели не число");
  106.                 }
  107.                 catch (Exception ex)
  108.                 {
  109.                     Console.WriteLine("Непредвиденная ошибка");
  110.                     Console.WriteLine(ex.Message);
  111.                 }
  112.             }
  113.  
  114.             for (; ; )
  115.             {
  116.  
  117.                 try
  118.                 {
  119.                     Console.WriteLine("введите параметр C");
  120.                     c1 = Console.ReadLine();
  121.                     c = Convert.ToDouble(c1);
  122.                     break;
  123.                 }
  124.                 catch (OverflowException)
  125.                 {
  126.                     Console.WriteLine("Вы ввели число выходящие за диапазон");
  127.                 }
  128.                 catch (FormatException)
  129.                 {
  130.                     Console.WriteLine("Вы ввели не число");
  131.                 }
  132.                 catch (Exception ex)
  133.                 {
  134.                     Console.WriteLine("Непредвиденная ошибка");
  135.                     Console.WriteLine(ex.Message);
  136.                 }
  137.             }
  138.         }
  139.  
  140.         public string RKU()
  141.         {
  142.             double d = 0.0, x1 = 0.0, x2 = 0.0;
  143.             string otv = "Нет решения!";
  144.  
  145.             try
  146.             {
  147.  
  148.                 d = (b * b) - (4 * a * c);
  149.  
  150.                 if (a == 0)
  151.                 {
  152.                     x1 = x2 = -c / b;
  153.                     otv = "Корень только один:" + x1;
  154.                 }
  155.                 else
  156.                 {
  157.                     if (d < 0)
  158.                         otv = "Корней нет.";
  159.                     else
  160.                     {
  161.                         if (d == 0)
  162.                         {
  163.                             x1 = x2 = -b / (2 * a);
  164.                             otv = "Уравнение представляет собой полный квадрат. Корень один: " + x1;
  165.                         }
  166.                         else
  167.                         {
  168.                                 x1 = (-b - Math.Sqrt(d)) / (2 * a);
  169.                                 x2 = (-b + Math.Sqrt(d)) / (2 * a);
  170.                                 otv = "У данного уравнения два корня: " + x1 + "  и  " + x2;
  171.                            
  172.                         }
  173.                     }
  174.                 }
  175.                 return otv;
  176.             }
  177.             catch
  178.             {
  179.                 Console.WriteLine("Непредвиденная ошибка. Попробуйте снова.");
  180.                 return otv;
  181.             }
  182.         }
  183.     }
  184. }

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


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

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

8   голосов , оценка 3.875 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы