Структура. Расписание предметов

Снова структуры и снова я туплю, мне нужно определить, сколько пар в общем, и отдельно по видам занятий, в неделю проводится по определенной пользователем дисциплиной. Я попробовал для начала считать количество пар просто по имени дисциплины, но написал вообще бредовую формулу, может кто-то подсказать, хотя бы как считать количество пар.

#include <iostream>
    #include <windows.h>
    using namespace std;
    struct Predmet
    {
    public:
        string name_dis;
        int sum;
        int sum2;
    }predmeti[20];
    
    struct schedule
    {
    public:
        string name_dis;
        Predmet* name_dis_par;
        string time;
        int group;
        string prepod;
        int aud;
        string vid;
    }univer[20];
    
    
    void input(int index) {
        cout<<"Введите название "<<index+1<<" дисциплины: "<<endl;
        cin.ignore();
        getline(cin, univer[index].name_dis);
        cout<<"Введите вид занятия "<<index+1<<" дисциплины: "<< endl;
        cin.ignore();
        cin>>univer[index].vid;
        cout<<"Введите время проведения "<<index+1<<" дисциплины: "<< endl;
        cin.ignore();
        getline(cin, univer[index].time);
        cout<<"Введите номер группы во время "<<index+1<<" дисциплины: "<< endl;
        cin.ignore();
        cin>>univer[index].group;
        cout<<"Введите ФИО преподавателя "<<index+1<<" дисциплины: "<< endl;
        cin.ignore();
        cin>>univer[index].prepod;
        cout<<"Введите номер аудитории "<<index+1<<" дисциплины: "<< endl;
        cin.ignore();
        cin>>univer[index].aud;
    }
    
    Predmet* find(int count, string& value) {
        for (int i = 0; i < count; i++)
            if (predmeti[i].name_dis == value)
                return &predmeti[i];
        return 0;
    }
    
    int main()
    {
        SetConsoleOutputCP(1251);
        SetConsoleCP(1251);
        int i, n1,n2,n3,n4,n5, j = 1, m;
        string day;
        cout<<"Понедельник "<<endl;
        cout<<"Введите количество предметов "<<endl;
            cin>>n1;
        for (i = 0, m = 0; i < n1; i++) {
            input(i);
        }
        cout<<"Вторник "<<endl;
        cout<<"Введите количество предметов "<<endl;
        cin>>n2;
        for (i = 0, m = 0; i < n2; i++) {
            input(i);
        }
        cout<<"Среда "<<endl;
        cout<<"Введите количество предметов "<<endl;
        cin>>n3;
        for (i = 0, m = 0; i < n3; i++) {
            input(i);
        }
        cout<<"Четверг "<<endl;
        cout<<"Введите количество предметов "<<endl;
        cin>>n4;
        for (i = 0, m = 0; i < n4; i++) {
            input(i);
        }
        cout<<"Пятница "<<endl;
        cout<<"Введите количество предметов "<<endl;
        cin>>n5;
        for (i = 0, m = 0; i < n5; i++) {
            input(i);
        }
            cout<<"Введите название дисциплины, количество пар которой найти: "<< endl;
            cin.ignore();
            string name_dis_par;
            getline(cin, name_dis_par);
            for (i = 0, m = 0; i < n1; i++) {
            Predmet* ot = find(m, name_dis_par);
            if (ot == 0 && m <= 20) {
                predmeti[m].name_dis=name_dis_par;
                predmeti[m].sum=0, predmeti[m].sum2=0;
                ot=&predmeti[m++];
            }
            univer[i].name_dis_par = ot;
            }
        for (j=1, i=0; i<n1; i++) {
         for (j=1, i=0; i<n2; i++) {
            for (j=1, i=0; i<n3; i++) {
             for (j=1, i=0; i<n4; i++) {
              for (j=1, i=0; i<n5; i++) {
            univer[i].name_dis_par->sum+=m;
              }}}}}
    
        for (i=0; i<m; i++) {
            cout<<endl;
            cout<<"Имя дисциплины: "<<predmeti[i].name_dis<<endl;
    
            cout<<"Количество пар "<<predmeti[i].sum<<endl;
        }
    }

Ответы (1 шт):

Автор решения: AR Hovsepyan
  • Виды занятий: enum Type{lec, lab, pr}
  • Название занятий: std::string name
  • Расписание одного дня: есть последовательность записей названия и вида. То есть, например массив std::pair<std::string, Type>
  • Расписание на неделю: есть массив из шести таких расписаний

Исходя из этого и из того, какие средства вам доступны в процессе обучения, стройте логику кода под вашу задачу.

→ Ссылка