Добавил:
Рад, если кому-то помог Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
01.11.2025
Размер:
1.65 Кб
Скачать
#include <iostream>
#include <stdexcept>
#include <random>
#include <locale>
using namespace std;

class WrongWay : public exception {
public:
    const char* what() const noexcept override {
        return "Не переведена стрелка";
    }
};

class PowerFailure : public exception {
public:
    const char* what() const noexcept override {
        return "Сбой электричества";
    }
};

class Elephants : public exception {
public:
    const char* what() const noexcept override {
        return "Слоны переходят дорогу";
    }
};

class Stop : public exception {
public:
    const char* what() const noexcept override {
        return "Нажат стоп-кран";
    }
};

class Train {
    random_device rd;
    mt19937 gen;
    uniform_int_distribution<> dis;
    
public:
    Train() : gen(rd()), dis(0, 4) {}
    
    void go() {
        int result = dis(gen);
        
        switch(result) {
            case 0:
                throw WrongWay();
            case 1:
                throw PowerFailure();
            case 2:
                throw Elephants();
            case 3:
                throw Stop();
            case 4:
                cout << "Поезд успешно доехал до станции!" << endl;
                break;
        }
    }
};

int main() {
    setlocale(LC_ALL, "ru_RU.UTF-8");
    
    Train train1;
    
    try {
        train1.go();
    } catch(exception& ex) {
        cerr << "Остановка поезда: " << ex.what() << endl;
    }
    
    return 0;
}
Соседние файлы в папке Лаба7