Загрузка данных


#include <iostream>
#include <vector>
#include <string>
#include <set>

// Структура для хранения сведений об ученике
struct Student {
    std::string firstName; // имя
    std::string lastName;  // фамилия
    int grade;             // год обучения (цифра)
    char letter;           // буква класса
};

// Вспомогательная функция: получить номер класса (год)
int getGradeNumber(const Student& s) {
    return s.grade;
}

// Вспомогательная функция: получить букву класса
char getGradeLetter(const Student& s) {
    return s.letter;
}

int main() {
    // Пример таблицы f
    std::vector<Student> f = {
        {"Иван",   "Иванов",   9, 'а'},
        {"Петр",   "Петров",   9, 'б'},
        {"Сергей", "Иванов",   9, 'б'},  // однофамилец Иванова из 9а, параллельный класс 9б
        {"Анна",   "Сидорова", 9, 'а'},
        {"Ольга",  "Кузнецова",10, 'а'},
        {"Дмитрий","Смирнов",  10, 'б'},
        {"Елена",  "Смирнова", 10, 'а'},
        {"Алексей","Попов",    11, 'а'},
        {"Мария",  "Попова",   11, 'а'}  // однофамильцы, но в одном классе (не параллельные)
    };

    bool found = false;

    // Перебираем все пары учеников
    for (size_t i = 0; i < f.size(); ++i) {
        for (size_t j = i + 1; j < f.size(); ++j) {
            // Проверяем: одинаковая фамилия, одинаковый год обучения,
            // но разные буквы (т.е. параллельные классы)
            if (f[i].lastName == f[j].lastName &&
                f[i].grade == f[j].grade &&
                f[i].letter != f[j].letter) {
                found = true;
                std::cout << "Найдены однофамильцы в параллельных классах:" << std::endl;
                std::cout << "  " << f[i].lastName << " " << f[i].firstName
                          << " (" << f[i].grade << f[i].letter << ")" << std::endl;
                std::cout << "  " << f[j].lastName << " " << f[j].firstName
                          << " (" << f[j].grade << f[j].letter << ")" << std::endl;
            }
        }
    }

    if (!found) {
        std::cout << "Однофамильцев в параллельных классах не найдено." << std::endl;
    }

    return 0;
}