Распечатать фамилии учеников, которые не получили ни одной 3-ки за последнюю четверть - C (СИ)
Формулировка задачи:
Распечатать фамилии тех учеников, которые не получили ни одной 3-ки за последнюю четверть. В каких класах учатся эти ученики? Каков их средний балл?
Решение задачи: «Распечатать фамилии учеников, которые не получили ни одной 3-ки за последнюю четверть»
textual
Листинг программы
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
char fam[30],klass[3];
int ball[4];
int i,j,c3;
float sred;
FILE *f=fopen("data.txt","rt");
if (f==NULL) {
printf ("\nCan't open file data.txt in current folder!");
fflush(stdin); getchar(); return 1;
}
for (i=0; i<5; i++) {
fscanf (f,"%s %s",fam,klass);
c3=0;
sred=0;
for (j=0; j<4; j++) {
fscanf (f,"%d",&ball[j]);
if (ball[j]==3) c3++;
sred+=ball[j];
}
fscanf (f,"\n");
if (c3==0) printf ("\n%s %s %.2f",fam,klass,sred/4);
}
fclose(f);
fflush(stdin); getchar(); return 0;
}
Объяснение кода листинга программы
- Подключаются необходимые библиотеки
- Объявляются переменные: fam[30] - массив для хранения фамилий учеников, klass[3] - массив для хранения класса учеников, ball[4] - массив для хранения оценок учеников, i, j, c3 - счётчики для циклов, sred - переменная для хранения средней оценки, f - указатель на файл
- Проверяется успешность открытия файла
data.txtв режиме чтения. Если файл не открылся, выводится сообщение об ошибке и программа завершается. - Происходит чтение данных из файла
data.txt. В каждой итерации цикла считываются фамилия, класс и оценки ученика. - Переменная c3 инициализируется нулём и используется для подсчёта количества оценок 3.
- Переменная sred инициализируется нулём и используется для хранения суммы оценок ученика.
- Если в массиве оценок есть оценка 3, то к переменной c3 прибавляется единица.
- Сумма оценок ученика добавляется к переменной sred.
- После каждой итерации цикла считывается символ новой строки.
- Если в массиве оценок ни разу не встречалась оценка 3, то выводится фамилия, класс и средняя оценка ученика.
- После окончания чтения файла, закрывается указатель на файл.
- Программа завершается.