Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программирование на языке СИ.

Виктория Иванова Ученик (123), открыт 2 недели назад
написать программу на языке C. Задан учебный план, в котором для каждой дисциплины указано ее наименование, номера курса и семестра, количество часов за семестр (лекций, практик, лабораторных и самостоятельной работ, общий объем часов), форма отчета (зачет или экзамен). Обеспечить вычисление нагрузки (суммарного объема часов) за весь период обучения, сортировку учебного плана по наименованиям дисциплин и по семестрам, поиск всех дисциплин на заданном курсе или в заданном семестре. Максимальное количество записей - не менее 75.
2 ответа
Василий Полубнев Просветленный (22367) 2 недели назад
А что именно Вам не понятно в задании?
Back EndПрофи (544) 2 недели назад
Пишу с другого акка. На этом лимиты. Мне просто неохота делать
Василий Полубнев Просветленный (22367) Back End, Ну, мне тоже. :-) Удачи!
Денис Деев Профи (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;
}
```
Похожие вопросы