#include <stdio.h>
#include <stdlib.h>
struct Student {
char surname[100];
int group_num;
int grades[3];
};
float avg_grade(struct Student* students, int num_students, int group_num, int subject) {
float total = 0;
int counter = 0;
for (int i = 0; i < num_students; i++) {
if (students[i].group_num == group_num) {
total += students[i].grades[subject - 1];
counter++;
}
}
if (counter == 0) {
return 0.0;
}
return total / counter;
}
int main() {
int num_students = 3;
struct Student
* students
= (struct Student
*)malloc(sizeof(struct Student
) * num_students
);
if (students == NULL) {
printf("Помилка виділення пам'яті!\n"); return 1;
}
for (int i = 0; i < num_students; i++) {
printf("--- Студент %d ---\n", i
+ 1);
scanf(" %99s", students
[i
].
surname);
scanf("%d", &students
[i
].
group_num);
scanf("%d", &students
[i
].
grades[0]);
scanf("%d", &students
[i
].
grades[1]);
scanf("%d", &students
[i
].
grades[2]); }
printf("\n--- dict_of_grades (еквівалент) ---\n"); for (int i = 0; i < num_students; i++) {
students[i].surname,
students[i].grades[0],
students[i].grades[1],
students[i].grades[2]);
}
printf("\n--- dict_of_groups (еквівалент) ---\n"); for (int i = 0; i < num_students; i++) {
printf("Група %d: %s: [%d, %d, %d]\n", students[i].group_num,
students[i].surname,
students[i].grades[0],
students[i].grades[1],
students[i].grades[2]);
}
printf("\n--- Список боржників (оцінка < 3) ---\n"); int debtors_found = 0;
for (int i = 0; i < num_students; i++) {
if (students[i].grades[0] < 3 || students[i].grades[1] < 3 || students[i].grades[2] < 3) {
printf("%s (Група: %d)\n", students
[i
].
surname, students
[i
].
group_num); debtors_found = 1;
}
}
if (debtors_found == 0) {
}
float init_mean = -1.0;
char best_student[100];
best_student[0] = '\0';
for (int i = 0; i < num_students; i++) {
float mean = (float)(students[i].grades[0] + students[i].grades[1] + students[i].grades[2]) / 3.0;
if (mean > init_mean) {
init_mean = mean;
int j = 0;
while (students[i].surname[j] != '\0') {
best_student[j] = students[i].surname[j];
j++;
}
best_student[j] = '\0';
}
}
printf("\nНайкращий студент: %s (середній бал: %.2f)\n", best_student
, init_mean
);
int input_group;
int input_subject;
printf("\n--- Розрахунок середнього балу ---\n"); printf("Введіть номер групи: "); scanf("%d", &input_group
); printf("Введіть номер предмету (1-3): "); scanf("%d", &input_subject
);
float avg = avg_grade(students, num_students, input_group, input_subject);
printf("Середня оцінка з предмету %d у групі %d: %.2f\n", input_subject
, input_group
, avg
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+ICAgIAojaW5jbHVkZSA8c3RkbGliLmg+ICAgCgoKc3RydWN0IFN0dWRlbnQgewogICAgY2hhciBzdXJuYW1lWzEwMF07IAogICAgaW50IGdyb3VwX251bTsKICAgIGludCBncmFkZXNbM107ICAgICAKfTsKCgoKCmZsb2F0IGF2Z19ncmFkZShzdHJ1Y3QgU3R1ZGVudCogc3R1ZGVudHMsIGludCBudW1fc3R1ZGVudHMsIGludCBncm91cF9udW0sIGludCBzdWJqZWN0KSB7CiAgICBmbG9hdCB0b3RhbCA9IDA7CiAgICBpbnQgY291bnRlciA9IDA7CgogICAgCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bV9zdHVkZW50czsgaSsrKSB7CiAgICAgICAgCiAgICAgICAgaWYgKHN0dWRlbnRzW2ldLmdyb3VwX251bSA9PSBncm91cF9udW0pIHsKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICB0b3RhbCArPSBzdHVkZW50c1tpXS5ncmFkZXNbc3ViamVjdCAtIDFdOwogICAgICAgICAgICBjb3VudGVyKys7CiAgICAgICAgfQogICAgfQoKICAgIAogICAgaWYgKGNvdW50ZXIgPT0gMCkgewogICAgICAgIHJldHVybiAwLjA7CiAgICB9CgogICAgcmV0dXJuIHRvdGFsIC8gY291bnRlcjsKfQoKaW50IG1haW4oKSB7CiAgICAKICAgIGludCBudW1fc3R1ZGVudHMgPSAzOwogICAgCiAgICAKICAgIHN0cnVjdCBTdHVkZW50KiBzdHVkZW50cyA9IChzdHJ1Y3QgU3R1ZGVudCopbWFsbG9jKHNpemVvZihzdHJ1Y3QgU3R1ZGVudCkgKiBudW1fc3R1ZGVudHMpOwoKICAgIAogICAgaWYgKHN0dWRlbnRzID09IE5VTEwpIHsKICAgICAgICBwcmludGYoItCf0L7QvNC40LvQutCwINCy0LjQtNGW0LvQtdC90L3RjyDQv9Cw0Lwn0Y/RgtGWIVxuIik7CiAgICAgICAgcmV0dXJuIDE7IAogICAgfQoKICAgIAogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fc3R1ZGVudHM7IGkrKykgewogICAgICAgIHByaW50ZigiLS0tINCh0YLRg9C00LXQvdGCICVkIC0tLVxuIiwgaSArIDEpOwogICAgICAgIAogICAgICAgIHByaW50Zigi0JLQstC10LTRltGC0Ywg0L/RgNGW0LfQstC40YnQtTogIik7CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgc2NhbmYoIiAlOTlzIiwgc3R1ZGVudHNbaV0uc3VybmFtZSk7IAoKICAgICAgICBwcmludGYoItCd0L7QvNC10YAg0LPRgNGD0L/QuDogIik7CiAgICAgICAgc2NhbmYoIiVkIiwgJnN0dWRlbnRzW2ldLmdyb3VwX251bSk7CgogICAgICAgIHByaW50Zigi0J7RhtGW0L3QutCwIDE6ICIpOwogICAgICAgIHNjYW5mKCIlZCIsICZzdHVkZW50c1tpXS5ncmFkZXNbMF0pOwoKICAgICAgICBwcmludGYoItCe0YbRltC90LrQsCAyOiAiKTsKICAgICAgICBzY2FuZigiJWQiLCAmc3R1ZGVudHNbaV0uZ3JhZGVzWzFdKTsKCiAgICAgICAgcHJpbnRmKCLQntGG0ZbQvdC60LAgMzogIik7CiAgICAgICAgc2NhbmYoIiVkIiwgJnN0dWRlbnRzW2ldLmdyYWRlc1syXSk7CiAgICB9CgogICAgCiAgICAKICAgIAogICAgcHJpbnRmKCJcbi0tLSBkaWN0X29mX2dyYWRlcyAo0LXQutCy0ZbQstCw0LvQtdC90YIpIC0tLVxuIik7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bV9zdHVkZW50czsgaSsrKSB7CiAgICAgICAgcHJpbnRmKCIlczogWyVkLCAlZCwgJWRdXG4iLCAKICAgICAgICAgICAgc3R1ZGVudHNbaV0uc3VybmFtZSwgCiAgICAgICAgICAgIHN0dWRlbnRzW2ldLmdyYWRlc1swXSwgCiAgICAgICAgICAgIHN0dWRlbnRzW2ldLmdyYWRlc1sxXSwgCiAgICAgICAgICAgIHN0dWRlbnRzW2ldLmdyYWRlc1syXSk7CiAgICB9CgogICAgCiAgICAKICAgIHByaW50ZigiXG4tLS0gZGljdF9vZl9ncm91cHMgKNC10LrQstGW0LLQsNC70LXQvdGCKSAtLS1cbiIpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fc3R1ZGVudHM7IGkrKykgewogICAgICAgIHByaW50Zigi0JPRgNGD0L/QsCAlZDogJXM6IFslZCwgJWQsICVkXVxuIiwgCiAgICAgICAgICAgIHN0dWRlbnRzW2ldLmdyb3VwX251bSwKICAgICAgICAgICAgc3R1ZGVudHNbaV0uc3VybmFtZSwgCiAgICAgICAgICAgIHN0dWRlbnRzW2ldLmdyYWRlc1swXSwgCiAgICAgICAgICAgIHN0dWRlbnRzW2ldLmdyYWRlc1sxXSwgCiAgICAgICAgICAgIHN0dWRlbnRzW2ldLmdyYWRlc1syXSk7CiAgICB9CgogICAgCiAgICBwcmludGYoIlxuLS0tINCh0L/QuNGB0L7QuiDQsdC+0YDQttC90LjQutGW0LIgKNC+0YbRltC90LrQsCA8IDMpIC0tLVxuIik7CiAgICBpbnQgZGVidG9yc19mb3VuZCA9IDA7IAogICAgCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bV9zdHVkZW50czsgaSsrKSB7CiAgICAgICAgCiAgICAgICAgaWYgKHN0dWRlbnRzW2ldLmdyYWRlc1swXSA8IDMgfHwgc3R1ZGVudHNbaV0uZ3JhZGVzWzFdIDwgMyB8fCBzdHVkZW50c1tpXS5ncmFkZXNbMl0gPCAzKSB7CiAgICAgICAgICAgIHByaW50ZigiJXMgKNCT0YDRg9C/0LA6ICVkKVxuIiwgc3R1ZGVudHNbaV0uc3VybmFtZSwgc3R1ZGVudHNbaV0uZ3JvdXBfbnVtKTsKICAgICAgICAgICAgZGVidG9yc19mb3VuZCA9IDE7IAogICAgICAgIH0KICAgIH0KCiAgICBpZiAoZGVidG9yc19mb3VuZCA9PSAwKSB7CiAgICAgICAgcHJpbnRmKCLQkdC+0YDQttC90LjQutGW0LIg0L3QtdC80LDRlCFcbiIpOwogICAgfQoKICAgIAogICAgZmxvYXQgaW5pdF9tZWFuID0gLTEuMDsKICAgIGNoYXIgYmVzdF9zdHVkZW50WzEwMF07CiAgICBiZXN0X3N0dWRlbnRbMF0gPSAnXDAnOyAKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bV9zdHVkZW50czsgaSsrKSB7CiAgICAgICAgCiAgICAgICAgZmxvYXQgbWVhbiA9IChmbG9hdCkoc3R1ZGVudHNbaV0uZ3JhZGVzWzBdICsgc3R1ZGVudHNbaV0uZ3JhZGVzWzFdICsgc3R1ZGVudHNbaV0uZ3JhZGVzWzJdKSAvIDMuMDsKICAgICAgICAKICAgICAgICBpZiAobWVhbiA+IGluaXRfbWVhbikgewogICAgICAgICAgICBpbml0X21lYW4gPSBtZWFuOwogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIGludCBqID0gMDsKICAgICAgICAgICAgd2hpbGUgKHN0dWRlbnRzW2ldLnN1cm5hbWVbal0gIT0gJ1wwJykgewogICAgICAgICAgICAgICAgYmVzdF9zdHVkZW50W2pdID0gc3R1ZGVudHNbaV0uc3VybmFtZVtqXTsKICAgICAgICAgICAgICAgIGorKzsKICAgICAgICAgICAgfQogICAgICAgICAgICBiZXN0X3N0dWRlbnRbal0gPSAnXDAnOyAKICAgICAgICB9CiAgICB9CgogICAgcHJpbnRmKCJcbtCd0LDQudC60YDQsNGJ0LjQuSDRgdGC0YPQtNC10L3RgjogJXMgKNGB0LXRgNC10LTQvdGW0Lkg0LHQsNC7OiAlLjJmKVxuIiwgYmVzdF9zdHVkZW50LCBpbml0X21lYW4pOwoKICAgIAogICAgCiAgICBpbnQgaW5wdXRfZ3JvdXA7CiAgICBpbnQgaW5wdXRfc3ViamVjdDsKCiAgICBwcmludGYoIlxuLS0tINCg0L7Qt9GA0LDRhdGD0L3QvtC6INGB0LXRgNC10LTQvdGM0L7Qs9C+INCx0LDQu9GDIC0tLVxuIik7CiAgICBwcmludGYoItCS0LLQtdC00ZbRgtGMINC90L7QvNC10YAg0LPRgNGD0L/QuDogIik7CiAgICBzY2FuZigiJWQiLCAmaW5wdXRfZ3JvdXApOwogICAgcHJpbnRmKCLQktCy0LXQtNGW0YLRjCDQvdC+0LzQtdGAINC/0YDQtdC00LzQtdGC0YMgKDEtMyk6ICIpOwogICAgc2NhbmYoIiVkIiwgJmlucHV0X3N1YmplY3QpOwoKICAgIGZsb2F0IGF2ZyA9IGF2Z19ncmFkZShzdHVkZW50cywgbnVtX3N0dWRlbnRzLCBpbnB1dF9ncm91cCwgaW5wdXRfc3ViamVjdCk7CiAgICBwcmludGYoItCh0LXRgNC10LTQvdGPINC+0YbRltC90LrQsCDQtyDQv9GA0LXQtNC80LXRgtGDICVkINGDINCz0YDRg9C/0ZYgJWQ6ICUuMmZcbiIsIGlucHV0X3N1YmplY3QsIGlucHV0X2dyb3VwLCBhdmcpOwoKICAgIAogICAgCiAgICBmcmVlKHN0dWRlbnRzKTsKCiAgICByZXR1cm4gMDsgCn0=