Структура. Расписание предметов
Снова структуры и снова я туплю, мне нужно определить, сколько пар в общем, и отдельно по видам занятий, в неделю проводится по определенной пользователем дисциплиной. Я попробовал для начала считать количество пар просто по имени дисциплины, но написал вообще бредовую формулу, может кто-то подсказать, хотя бы как считать количество пар.
#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> - Расписание на неделю: есть массив из шести таких расписаний
Исходя из этого и из того, какие средства вам доступны в процессе обучения, стройте логику кода под вашу задачу.