Вывести среднее значение оценок студента, у кого есть двойки - C (СИ)
Формулировка задачи:
ребят помогите не могу понять в чем проблема у меня. программа должна высчитывать среднее значение у кого есть хотя бы одна оценка 2. мало того не считает так еще и иероглифы какие то. помогите пожалуйста
Решение задачи: «Вывести среднее значение оценок студента, у кого есть двойки»
textual
Листинг программы
FILE *f; struct STUDENT tz; int i, k, s, j; char buff[36]; if ((f = fopen("ASDDSA.TXT", "r")) == NULL) { puts(" fale ASDDSA.TXT He Hau`geH"); return 0; } puts("\nFamiliya I.O. Sr. Ball Ocenki"); puts("---------------------------"); while (fgets(buff, sizeof(char) * 36, f) != NULL) { int flg = 0; for(int i=0; buff[i+1]!='\0'; i++){ if(buff[i]==' '){ flg++;} if(flg!=2){ tz.fio[i]=buff[i]; tz.fio[i+1]='\0';} if(flg==2){ tz.oc[i - strlen(tz.fio) - 1]=buff[i]; tz.oc[i - strlen(tz.fio)]='\0';} } for (i = 0, s = 0, k = 0; i < 5; i++) { if (tz.oc[i] == '2') s += tz.oc[i] - '0'; k++; } if (k != 0) { tz.fio[14] = '\0'; printf("%s %.1f \n", tz.fio, (float)s / 5); for (j = 0; j < 5; j++) printf(" %c", tz.oc[j]); printf("\n"); } } fclose(f); getch();
Объяснение кода листинга программы
Объяснение действий в коде:
- Открытие файла: В этом блоке кода используется функция
fopen()
для открытия файлаASDDSA.TXT
в режиме чтения. Если файл не может быть открыт, программа выводит сообщение об ошибке и завершает работу. - Вывод заголовка: В этом блоке кода выводится заголовок таблицы с помощью функции
puts()
. - Чтение данных из файла: В этом блоке кода используется цикл
while
, который продолжается до тех пор, пока функцияfgets()
не вернетNULL
, что происходит при достижении конца файла. Функцияfgets()
считывает строку из файла в буферbuff
. - Обработка данных: В этом блоке кода происходит обработка считанной строки. Сначала определяется количество пробелов в строке, затем оценки студента (в формате
22 21 20 19 18
) записываются в массивtz.oc
, а фамилия и инициалы студента (в форматеИванов И.О.
) записываются в массивtz.fio
. - Подсчет количества двоек: В этом блоке кода подсчитывается количество двоек в оценках студента.
- Вывод информации о студенте: Если количество двоек не равно нулю, то выводится фамилия и инициалы студента, а также среднее значение его оценок. После этого выводятся сами оценки студента.
- Закрытие файла: В этом блоке кода используется функция
fclose()
для закрытия файла. - Ожидание нажатия клавиши: В этом блоке кода программа ожидает, пока пользователь не нажмет клавишу, с помощью функции
getch()
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д