Определить среднюю оценку ученика и всего класса - C (СИ)

Узнай цену своей работы

Формулировка задачи:

известны оценки каждого из 20-ти учеников по 12 предметам. Определить среднюю оценку ученика и всего класса. Вывести фамилии учеников чья средняя оценка выше средней по классу. Решить через структуры.

Решение задачи: «Определить среднюю оценку ученика и всего класса»

textual
Листинг программы
  1. #include <stdio.h>
  2. #define NUM 20 /* количество студентов */
  3. #define PREDM 12 /* количество предметов */
  4. typedef struct /* структура для ученика */
  5. {
  6.     char name [16]; /*поле под имя ученика*/
  7.     int ball[PREDM]; /*массив оценок*/
  8.     int avr; /*поле под средний балл*/
  9. }Student;
  10.  
  11. int main(void)
  12. {
  13.     Student s[NUM]={0};
  14.     int i,j; /*переменные-счетчики*/
  15.     int cavr=0;  /*переменная под среднюю класса*/
  16.     for (i=0;i<NUM;i++) /*заполняем сведения*/
  17.     {
  18.         printf("%s","Please enter name:");
  19.         fflush(stdin);
  20.         gets(s[i].name);
  21.         for (j=0;j<PREDM;j++)
  22.         {
  23.             printf("%s#%d:","Exam",j+1);
  24.             scanf("%d",&s[i].ball[j]);
  25.             s[i].avr+=s[i].ball[j];
  26.         }
  27.         s[i].avr/=PREDM; /*нашли среднее ученика*/
  28.         cavr+=s[i].avr; /*добавили к общеклассной сумме*/
  29.     }
  30.     cavr/=NUM; /* нашли среднее класса */
  31.     printf("Average of class: %d\n",cavr);
  32.     for (i=0;i<NUM;i++) /* ищем успевающих */
  33.     {
  34.         if(s[i].avr > cavr)
  35.             printf("Name: %s | Average: %d",s[i].name,s[i].avr);
  36.     }
  37.     return 0;
  38. }

Объяснение кода листинга программы

  1. Объявление переменных и структур — NUM (количество студентов) — PREDM (количество предметов) — Student (структура для ученика, содержит имя ученика и массив оценок)
  2. Создание массива структур Student — s[NUM]={0} (инициализация всех элементов массива структур Student нулями)
  3. Ввод данных — for (i=0;i<NUM;i++) (счетчик для прохождения по всем студентам) — printf(%s,Please enter name:); (вывод приглашения для ввода имени студента) — fflush(stdin); (очистка буфера ввода) — gets(s[i].name); (ввод имени студента) — for (j=0;j<PREDM;j++) (счетчик для прохождения по всем предметам) — printf(%s#%d:,Exam,j+1); (вывод приглашения для ввода оценки по предмету) — scanf(%d,&s[i].ball[j]); (ввод оценки по предмету) — s[i].avr+=s[i].ball[j]; (сумма всех оценок студента)
  4. Вычисление среднего значения студента и класса — s[i].avr/=PREDM; (среднее значение студента) — cavr+=s[i].avr; (добавление среднего значения студента к общеклассной сумме) — cavr/=NUM; (среднее значение класса)
  5. Поиск студентов, успевающих больше среднего класса — for (i=0;i<NUM;i++) (счетчик для прохождения по всем студентам) — if(s[i].avr > cavr) (условие для вывода имени студента и его среднего значения, если они больше среднего класса) — printf(Name: %s | Average: %d,s[i].name,s[i].avr);
  6. Вывод результатов — printf(Average of class: %d\n,cavr); (среднее значение класса) — for (i=0;i<NUM;i++) (счетчик для прохождения по всем студентам) — if(s[i].avr > cavr) (условие для вывода имени студента и его среднего значения, если они больше среднего класса) — printf(Name: %s | Average: %d,s[i].name,s[i].avr); (вывод имени студента и его среднего значения, если они больше среднего класса)
  7. Завершение программы — return 0; (завершение работы программы)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы