Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЯП5 / ЯП5

.cpp
Скачиваний:
1
Добавлен:
22.04.2023
Размер:
2.68 Кб
Скачать
#include <iostream>
using namespace std;
class DivideException
{
public: 
    DivideException(string message) : message {message}{}
    string getMessage()
    {
        return message;
    }
private:
    string message;
};
class Divide
{
public : 
    Divide(double delimoe, double delitel)
    {
        if (delitel == 0)
        {
            throw DivideException{ "Error! Делить на ноль нельзя!" };
        }   
        else
        {
            chastnoe = delimoe / delitel;
        }
        this->delimoe = delimoe;
        this->delitel = delitel;
    }    
    void printing()
    {
        cout << "Делимое - " << delimoe << "   Делитель - " << delitel<<endl;
        cout << "Частное - " << chastnoe << endl;
    }
private:
     double delimoe;
     double delitel;
     double chastnoe;
};
double JustDivide(double delimoe, double delitel)
{
    return delimoe / delitel;
}
double DivideMeyer()
{    
    double a, b, c;
    int count = 1;
    bool success = true;
    bool Danser = false;
    do
    {
        cout << "Введите делимое - " ;
        cin >> a ;
        cout << "\n";
        cout << "Введите делитель - ";
        cin >> b;
        cout << endl;
        try
        {
            if (b == 0)
            {
                throw exception ("Не дели на ноль!");
            }            
            c = a / b;
            cout << "Результат деления - " << c << endl;
            success = true;
        }
        catch (exception message)
        {
            if (count == 3)
            {
                cout << "Попытки закончились " << endl;
                exit(0);
            }
            if (count != 3)
            {
                cout << "У вас осталось " << 3-count << " попытки" << endl;
            }            
            count++;
            success = false;           
            cout << "Попытка номер " << count << " из 3х" << endl;
        }
    } while (success = true );
    return c;
}
int main()
{
    setlocale(LC_ALL, "Russian");
    try
    {
        cout << "Данные на вход 100 и 2 " << endl;
        Divide normal { 100 , 2 };
        normal.printing();
        cout << "Данные на вход 100 и 0 " << endl;
        Divide unnormal{ 100 , 0 };
        unnormal.printing();
    }
    catch (DivideException ex)
    {
        cout << ex.getMessage() << endl;
    }
    cout << "\n";
    cout << "Мейер" << endl;
    DivideMeyer();    
}