Денис Деев
Профи
(531)
2 недели назад
```
#include <stdio.h>
#include <string.h>
#define MAX_DISCIPLINES 75
struct Discipline {
char name[50];
int course;
int semester;
int lectures;
int practices;
int labs;
int self_study;
int total_hours;
char report_form[10];
};
void calculateTotalHours(struct Discipline* d) {
d->total_hours = d->lectures + d->practices + d->labs + d->self_study;
}
void sortByName(struct Discipline* disciplines, int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - 1; j++) {
if (strcmp(disciplines[j].name, disciplines[j + 1].name) > 0) {
struct Discipline temp = disciplines[j];
disciplines[j] = disciplines[j + 1];
disciplines[j + 1] = temp;
}
}
}
}
void sortBySemester(struct Discipline* disciplines, int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - 1; j++) {
if (disciplines[j].semester > disciplines[j + 1].semester) {
struct Discipline temp = disciplines[j];
disciplines[j] = disciplines[j + 1];
disciplines[j + 1] = temp;
}
}
}
}
void findDisciplinesByCourse(struct Discipline* disciplines, int size, int course) {
printf("Disciplines for course %d:\n", course);
for (int i = 0; i < size; i++) {
if (disciplines[i].course == course) {
printf("%s\n", disciplines[i].name);
}
}
}
void findDisciplinesBySemester(struct Discipline* disciplines, int size, int semester) {
printf("Disciplines for semester %d:\n", semester);
for (int i = 0; i < size; i++) {
if (disciplines[i].semester == semester) {
printf("%s\n", disciplines[i].name);
}
}
}
int main() {
struct Discipline disciplines[MAX_DISCIPLINES];
// Заполнение данных о дисциплинах
// Пример заполнения данных для 3-х дисциплин
strcpy(disciplines[0].name, "Mathematics");
disciplines[0].course = 1;
disciplines[0].semester = 1;
disciplines[0].lectures = 20;
disciplines[0].practices = 10;
disciplines[0].labs = 5;
disciplines[0].self_study = 15;
calculateTotalHours(&disciplines[0]);
strcpy(disciplines[0].report_form, "exam");
strcpy(disciplines[1].name, "Physics");
disciplines[1].course = 1;
disciplines[1].semester = 2;
disciplines[1].lectures = 25;
disciplines[1].practices = 15;
disciplines[1].labs = 10;
disciplines[1].self_study = 20;
calculateTotalHours(&disciplines[1]);
strcpy(disciplines[1].report_form, "exam");
strcpy(disciplines[2].name, "Programming");
disciplines[2].course = 2;
disciplines[2].semester = 1;
disciplines[2].lectures = 30;
disciplines[2].practices = 20;
disciplines[2].labs = 15;
disciplines[2].self_study = 25;
calculateTotalHours(&disciplines[2]);
strcpy(disciplines[2].report_form, "exam");
// Вызов функций для сортировки и поиска дисциплин
sortByName(disciplines, 3);
sortBySemester(disciplines, 3);
findDisciplinesByCourse(disciplines, 3, 1);
findDisciplinesBySemester(disciplines, 3, 1);
return 0;
}
```