Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- using namespace std;
- //класс обработки ошибок
- class Exception
- {
- protected:
- int num; //номер ошибки
- char* str; //строка для вывода информации об ошибке
- public:
- virtual void display() = 0;
- };
- //класс для обработки ошибок только в классе Exception
- class OtherException: public Exception
- {
- public:
- OtherException(int num, char* str)
- {
- this->num = num;
- this->str = str;
- }
- void display()
- {
- cout << "Исключение иного характера №" << num << ":" << str << endl;
- }
- };
- class Math
- {
- //класс для обработки ошибок только в классе Math
- class ExceptionMath : public Exception
- {
- public:
- ExceptionMath(int num, char* str)
- {
- this->num = num;
- this->str = str;
- }
- void display()
- {
- cout << "Математическое исключение №" << num << ":" << str << endl;
- }
- };
- public:
- float Division(float a, float b); //функция деления двух переменных
- float Multiplication(float a, float b); //функция умножения двух переменных
- };
- float Math::Division(float a, float b)
- {
- try
- {
- if (b == 0)
- {
- throw ExceptionMath(1, (char*) "Деление на ноль!");
- }
- if (!(a) || !(b) || (cin.peek() != '\n'))
- {
- cin.clear();
- while (cin.get() != '\n');
- throw OtherException(2, (char*) "Неверно введены данные!");
- cout << "Введите число!" << endl;
- }
- return (a / b);
- }
- catch (ExceptionMath exp)
- {
- exp.display();
- return (float)NULL;
- }
- catch (OtherException exp)
- {
- exp.display();
- return (float)NULL;
- }
- }
- float Math::Multiplication(float a, float b)
- {
- try
- {
- if (a == 1 || b==1)
- throw OtherException(3, (char*) "Умножение на единицу бессмысленно!");
- if (!(a) || !(b) || (cin.peek() != '\n'))
- {
- cin.clear();
- while (cin.get() != '\n');
- throw OtherException(2, (char*) "Неверно введены данные!");
- }
- return a * b;
- }
- catch (ExceptionMath exp)
- {
- exp.display();
- return (float)NULL;
- }
- catch (OtherException exp)
- {
- exp.display();
- return (float)NULL;
- }
- }
- int menu()
- {
- int menu1 = 0;
- cout << "\nВыберите действие:"
- << endl << "1.Провести операции с числами ещё раз."
- << endl << "2.Завершить программу." << endl;
- cin >> menu1;
- return menu1;
- }
- int main()
- {
- setlocale(LC_ALL, "Russian");
- int menuMenu1;
- float a, b;
- Math m;
- cout << "Введите числа для арифметических расчётов." << endl;
- cout << "а: ";
- cin >> a;
- cout << "b: ";
- cin >> b;
- cout << "Результат деления чисел:" << m.Division(a, b) << endl;
- cout << "Результат умножения чисел:" << m.Multiplication(a, b) << endl;
- do
- {
- menuMenu1 = menu();
- if (menuMenu1 > 2) //Проверка на ввод неверного пункта меню
- cout << "Вы выбрали неверный вариант\n" << endl;
- switch (menuMenu1) // Вызов функции, что отвечает за главное меню
- {
- case 1:
- {
- cout << "Введите числа для арифметических расчётов." << endl;
- cout << "а: ";
- cin >> a;
- cout << "b: ";
- cin >> b;
- cout << "Результат деления чисел:" << m.Division(a, b) << endl;
- cout << "Результат умножения чисел:" << m.Multiplication(a, b) << endl;
- break;
- }
- case 2:
- {
- exit(EXIT_SUCCESS);
- }
- }
- } while (menuMenu1 != 3);
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement