Прохідний бал#2691

Прохідний бал (Розбір)

Для кожного учня обчислимо середній бал — суму його річних оцінок, поділену на кількість предметів m_i. Учень може бути прийнятий до школи, якщо його середній бал не менший за прохідний бал .

Значення задається лише в останньому рядку вхідних даних, тому спочатку прочитаємо описи всіх учнів і для кожного з них збережемо прізвище, ім'я та середній бал. Потім прочитаємо і виведемо тих учнів, чий середній бал не менший за . Перебираючи учнів у порядку їх слідування у вхідних даних, ми автоматично виконуємо вимогу щодо порядку виведення.

Приклад

Прохідний бал дорівнює k = 8. Обчислимо середній бал кожного учня:

До школи можуть бути прийняті Ivanov Ivan та Sidorov Sidor — їх і виводимо в порядку слідування у вхідних даних.

Реалізація алгоритму

Оголосимо масиви. Перше і друге слово опису -го учня (прізвище та ім'я) збережемо у та surn[i], а його середній бал — у .

#define MAX 10000
char name[MAX][21], surn[MAX][21];
double res[MAX];

Читаємо кількість учнів .

scanf("%d", &n);

Обробляємо учнів по черзі. Для -го учня читаємо прізвище, ім'я та кількість вивчених предметів .

for (i = 0; i < n; i++)
{
  scanf("%s %s %d", &name[i], & surn[i], &m);

Читаємо річних оцінок учня і накопичуємо їх суму в .

  res[i] = 0;
  for (j = 0; j < m; j++)
  {
    scanf("%d", &x);
    res[i] += x;
  }

Ділимо суму оцінок на кількість предметів — у отримуємо середній бал -го учня.

  res[i] /= m;
}

Читаємо прохідний бал .

scanf("%d", &k);

Виводимо в порядку слідування у вхідних даних прізвища та імена тих учнів, чий середній бал не менший за .

for (i = 0; i < n; i++)
  if (res[i] >= k) printf("%s %s\n", name[i], surn[i]);