#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;
}