Выводится список студентов каждого факультета и курса, но сообщения дублируются C++
Всем привет! Написал программу, описывающую класс Student. Она выводит список студентов для каждого факультета и курса, но сообщения дублируются в случае, если, например, два студента относятся к одному факультету. То же самое происходит и с двумя или более студентами, которые учатся, например, на 2 курсе. Что может быть не так?
Кусочек кода (полную версию кода можно скачать здесь через Google Drive)
// Список студентов для каждого факультета и курса
void list_of_faculties_and_course(Student spisok[], int n)
{
vector<string> faculties; // должно быть ["IT", "Micro", "Music"] без дублей
int idx = 0;
faculties.push_back("-");
int last_idx = faculties.size() - 1;
bool flag = false;
string target = spisok[idx].get_faculty();
for (int i = 0; i < n; i++)
{
if (spisok[i].get_faculty() != target)
idx = i;
target = spisok[idx].get_faculty();
faculties.push_back("-");
last_idx = faculties.size() - 1;
for (int j = 0; j < n; j++)
{
if (target == spisok[j].get_faculty() && flag == false)
{
if (faculties[last_idx] != target)
{
faculties[last_idx] = target;
}
flag = true;
}
if (j == n - 1)
flag = false;
}
}
for (int i = 0; i < faculties.size(); i++)
{
cout << "На факультете " << faculties[i] << " числятся следующие студенты:";
for (int j = 0; j < n; j++)
{
if (spisok[j].get_faculty() == faculties[i])
cout << endl << spisok[j].get_fullname() << endl;
}
}
for (int i = 1; i < 5; i++)
{
for (int j = 0; j < n; j++)
{
if (i == spisok[j].get_course())
{
cout << "На " << spisok[j].get_course() << " курсе числятся следующие студенты:\n";
cout << spisok[j].get_fullname() << endl;
}
}
}
}
Ожидаемый вывод
На факультете Information Technology числятся следующие студенты:
Ivanov Ivan Ivanovich
На факультете Microbiology числятся следующие студенты: (это сообщение не должно дублироваться 2 раза)
Alexandrov Alexandr Alexandrovich
Petrov Petr Petrovich
На факультете Music числятся следующие студенты:
Vadimov Vadim Vadimovich
На 2 курсе числятся следующие студенты:
Alexandrov Alexandr Alexandrovich
На 3 курсе числятся следующие студенты:
Petrov Petr Petrovich
На 4 курсе числятся следующие студенты:
Ivanov Ivan Ivanovich
Vadimov Vadim Vadimovich
Какой результат программа выводит на самом деле
