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

class Event {
protected:
    string date;
    string personName;
public:
    Event(const string& d, const string& name) : date(d), personName(name) {}
    virtual void print_res() const = 0; // Чисто виртуальная функция
    virtual ~Event() {}
};

class Test : public Event {
    string subject;
    bool passed;
public:
    Test(const string& d, const string& name, const string& subj, bool pass)
        : Event(d, name), subject(subj), passed(pass) {}
    
    void print_res() const override {
        cout << "Зачёт по " << subject << " (" << date << "), студент: " << personName
             << ", Результат: " << (passed ? "СДАЛ" : "НЕ СДАЛ") << endl;
    }
};

class Exam : public Event {
    string subject;
    int grade;
public:
    Exam(const string& d, const string& name, const string& subj, int gr)
        : Event(d, name), subject(subj), grade(gr) {}
    
    void print_res() const override {
        cout << "Экзамен по " << subject << " (" << date << "), студент: " << personName
             << ", Оценка: " << grade << endl;
    }
};

int main() {
    setlocale(LC_ALL, "ru_RU.UTF-8");
    
    vector<Event*> session;
    
    session.push_back(new Test("01.06.2023", "Иванов И.И.", "Физическая культура", true));
    session.push_back(new Exam("05.06.2023", "Иванов И.И.", "Математика", 4));
    session.push_back(new Test("02.06.2023", "Петрова А.С.", "Иностранный язык", true));
    session.push_back(new Exam("06.06.2023", "Петрова А.С.", "Программирование", 5));
    session.push_back(new Exam("07.06.2023", "Сидоров П.К.", "Физика", 3));
    
    cout << "Сессия:" << endl;
    cout << "========" << endl;
    
    for (Event* event : session) {
        event->print_res();
    }
    
    // Освобождение памяти
    for (Event* event : session) {
        delete event;
    }
    
    return 0;
}
Соседние файлы в папке Лаба6