Advertisement
Guest User

Untitled

a guest
Feb 25th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.87 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. //класс обработки ошибок
  6. class Exception
  7. {
  8. protected:
  9. int num; //номер ошибки
  10. char* str; //строка для вывода информации об ошибке
  11. public:
  12. virtual void display() = 0;
  13. };
  14.  
  15. //класс для обработки ошибок только в классе Exception
  16. class OtherException: public Exception
  17. {
  18. public:
  19. OtherException(int num, char* str)
  20. {
  21. this->num = num;
  22. this->str = str;
  23. }
  24. void display()
  25. {
  26. cout << "Исключение иного характера №" << num << ":" << str << endl;
  27. }
  28. };
  29.  
  30. class Math
  31. {
  32. //класс для обработки ошибок только в классе Math
  33. class ExceptionMath : public Exception
  34. {
  35. public:
  36. ExceptionMath(int num, char* str)
  37. {
  38. this->num = num;
  39. this->str = str;
  40. }
  41. void display()
  42. {
  43. cout << "Математическое исключение №" << num << ":" << str << endl;
  44. }
  45. };
  46. public:
  47. float Division(float a, float b); //функция деления двух переменных
  48. float Multiplication(float a, float b); //функция умножения двух переменных
  49.  
  50. };
  51.  
  52. float Math::Division(float a, float b)
  53. {
  54. try
  55. {
  56. if (b == 0)
  57. {
  58. throw ExceptionMath(1, (char*) "Деление на ноль!");
  59. }
  60.  
  61. if (!(a) || !(b) || (cin.peek() != '\n'))
  62. {
  63. cin.clear();
  64. while (cin.get() != '\n');
  65. throw OtherException(2, (char*) "Неверно введены данные!");
  66. cout << "Введите число!" << endl;
  67. }
  68. return (a / b);
  69. }
  70. catch (ExceptionMath exp)
  71. {
  72. exp.display();
  73. return (float)NULL;
  74. }
  75. catch (OtherException exp)
  76. {
  77. exp.display();
  78. return (float)NULL;
  79. }
  80. }
  81.  
  82. float Math::Multiplication(float a, float b)
  83. {
  84. try
  85. {
  86. if (a == 1 || b==1)
  87. throw OtherException(3, (char*) "Умножение на единицу бессмысленно!");
  88. if (!(a) || !(b) || (cin.peek() != '\n'))
  89. {
  90. cin.clear();
  91. while (cin.get() != '\n');
  92. throw OtherException(2, (char*) "Неверно введены данные!");
  93. }
  94. return a * b;
  95. }
  96. catch (ExceptionMath exp)
  97. {
  98. exp.display();
  99. return (float)NULL;
  100. }
  101. catch (OtherException exp)
  102. {
  103. exp.display();
  104. return (float)NULL;
  105. }
  106. }
  107.  
  108. int menu()
  109. {
  110. int menu1 = 0;
  111. cout << "\nВыберите действие:"
  112. << endl << "1.Провести операции с числами ещё раз."
  113. << endl << "2.Завершить программу." << endl;
  114. cin >> menu1;
  115. return menu1;
  116. }
  117.  
  118. int main()
  119. {
  120. setlocale(LC_ALL, "Russian");
  121. int menuMenu1;
  122. float a, b;
  123. Math m;
  124. cout << "Введите числа для арифметических расчётов." << endl;
  125. cout << "а: ";
  126. cin >> a;
  127. cout << "b: ";
  128. cin >> b;
  129. cout << "Результат деления чисел:" << m.Division(a, b) << endl;
  130. cout << "Результат умножения чисел:" << m.Multiplication(a, b) << endl;
  131. do
  132. {
  133. menuMenu1 = menu();
  134. if (menuMenu1 > 2) //Проверка на ввод неверного пункта меню
  135. cout << "Вы выбрали неверный вариант\n" << endl;
  136. switch (menuMenu1) // Вызов функции, что отвечает за главное меню
  137. {
  138. case 1:
  139. {
  140. cout << "Введите числа для арифметических расчётов." << endl;
  141. cout << "а: ";
  142. cin >> a;
  143. cout << "b: ";
  144. cin >> b;
  145. cout << "Результат деления чисел:" << m.Division(a, b) << endl;
  146. cout << "Результат умножения чисел:" << m.Multiplication(a, b) << endl;
  147. break;
  148. }
  149. case 2:
  150. {
  151. exit(EXIT_SUCCESS);
  152. }
  153. }
  154. } while (menuMenu1 != 3);
  155. system("pause");
  156. return 0;
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement