Не работает программа, исключения - C#

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

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

Всем привет, очень нужна помощь в доработке программы. Код
Листинг программы
  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. int k;//для кол-ва членов ряда
  6. double x;//значение переменной х
  7. WordsinstedNumber z = new WordsinstedNumber();
  8. Console.Write("Введите значение переменной x: ");
  9. do
  10. {
  11. x = double.Parse(Console.ReadLine());
  12. z.NumberX(x);//проверка числа
  13. } while (x == 0);
  14. Console.Write("Введите количество членов ряда k: ");
  15. do
  16. {
  17. k = int.Parse(Console.ReadLine());
  18. z.NumberK(k);//проверка числа
  19. } while (k < 1);
  20. z.Raschet(k, x);
  21. Console.ReadKey();
  22. }
  23. }
  24.  
  25. public class WordsinstedNumber: Exception
  26. {
  27. /// <summary>
  28. /// проверка на корректность ввода значения
  29. /// </summary>
  30. /// <param name="x">проверяемое число</param>
  31. public void NumberK(int x)
  32. {
  33. int i = 0;
  34. try
  35. {
  36. if (i != Convert.ToInt32(x)) throw new WordsinstedNumber();
  37. }
  38. catch (WordsinstedNumber)
  39. {
  40. Console.WriteLine("Введите значение сново.");
  41. }
  42. }
  43. /// <summary>
  44. /// проверка на равенство нулю
  45. /// </summary>
  46. /// <param name="x">проверяемое число</param>
  47. public void NumberX(double x)
  48. {
  49. double i = 0;
  50. try
  51. {
  52. if (x == 0) throw new DivideByZeroException();// исключение при попытке деления на 0
  53. if ( i != Convert.ToDouble(x)) throw new WordsinstedNumber();
  54. }
  55. catch (DivideByZeroException ex)
  56. {
  57. Console.WriteLine("Exception: " + ex.GetType().Name + " " + ex.Message);
  58. Console.WriteLine("Введите число сново.");
  59. }
  60. catch (WordsinstedNumber ex)
  61. {
  62. Console.WriteLine("Exception: " + ex.GetType().Name + " " + ex.Message);
  63. Console.WriteLine("Вы ввели буквы. Введите число заново.");
  64. }
  65. }
  66. /// <summary>
  67. /// расчет исходного ряда
  68. /// </summary>
  69. /// <param name="k">кол-во членов ряда</param>
  70. /// <param name="x">значение переменной</param>
  71. public void Raschet(int k, double x)
  72. {
  73. int l;
  74. double sum = 0;
  75. //расчет ряда
  76. bool flag = false;
  77. do
  78. {
  79. try
  80. {
  81. Console.Write("Введите длину массива l: ");
  82. while (!int.TryParse(Console.ReadLine(), out l))
  83. {
  84. Console.WriteLine("Введите число.");
  85. }
  86. double[] mass = new double[l];
  87. for (int i = 1; i <= k; i++)
  88. {
  89. sum += Math.Pow(-1, i + 1) / (2 * x - 1);
  90. mass[i - 1] += sum;
  91. }
  92. flag = false;
  93. }
  94. catch (IndexOutOfRangeException) // исключение - индекс за пределами массива
  95. {
  96. Console.WriteLine("Выход за пределы границы массива. Введите длину массива l сново.");
  97. flag = true;
  98. }
  99. } while (flag);
  100. Console.WriteLine("Результат:\t" + sum);
  101. }
  102. }
При работе возникает сбой, нужно чтобы при вводе (букв или другом некорректном вводе) обрабатывалось исключение. P.S. С классами работаю совсем недавно, как сделать чтобы результат из catch (вывод сообщений) выводился в классе Program. Заранее спасибо.

Решение задачи: «Не работает программа, исключения»

textual
Листинг программы
  1.     class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             int k;//для кол-ва членов ряда
  6.             double x;//значение переменной х
  7.  
  8.             try
  9.             {
  10.                 WordsinstedNumber z = new WordsinstedNumber();
  11.  
  12.                 Console.Write("Введите значение переменной x: ");
  13.  
  14.                 do
  15.                 {
  16.                     x = double.Parse(Console.ReadLine());
  17.                     z.NumberX(x);//проверка числа
  18.                 } while (x == 0);
  19.  
  20.                 Console.Write("Введите количество членов ряда k: ");
  21.  
  22.                 do
  23.                 {
  24.                     k = int.Parse(Console.ReadLine());
  25.                     z.NumberK(k);//проверка числа
  26.                 } while (k < 1);
  27.                 z.Raschet(k, x);
  28.                 Console.ReadKey();
  29.             }
  30.             catch(ArgumentException)
  31.             {
  32.                 Console.WriteLine("не корректно введено какоето поле");
  33.             }
  34.             catch(Exception e)
  35.             {
  36.                 Console.WriteLine(e.Message);
  37.             }
  38.         }
  39.     }

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


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

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

11   голосов , оценка 3.545 из 5

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

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

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