Keçid balı#2691

Keçid balı (Həll təhlili)

Hər şagird üçün orta balı hesablayaq — onun illik qiymətlərinin cəmini fənlərin sayı m_i-yə bölərək. Şagird məktəbə qəbul oluna bilər, əgər onun orta balı keçid balı -dan az deyilsə.

dəyəri yalnız giriş məlumatlarının son sətrində verilir, ona görə əvvəlcə bütün şagirdlərin təsvirlərini oxuyaq və hər biri üçün soyadını, adını və orta balını yadda saxlayaq. Sonra -nı oxuyaq və orta balı -dan az olmayan şagirdləri çap edək. Şagirdləri giriş məlumatlarında olduqları ardıcıllıqla nəzərdən keçirərək, biz çıxışın sırası ilə bağlı tələbi avtomatik olaraq yerinə yetirmiş oluruq.

Misal

Keçid balı k = 8-dir. Hər şagirdin orta balını hesablayaq:

Məktəbə Ivanov Ivan və Sidorov Sidor qəbul oluna bilər — onları giriş məlumatlarında olduqları ardıcıllıqla çap edirik.

Alqoritmin reallaşdırılması

Massivləri elan edək. -ci şagirdin təsvirinin birinci və ikinci sözünü (soyadını və adını) və surn[i]-də, onun orta balını isə -də saxlayaq.

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

Şagirdlərin sayı -i oxuyuruq.

scanf("%d", &n);

Şagirdləri növbə ilə emal edirik. -ci şagird üçün soyadını, adını və öyrənilmiş fənlərin sayı -i oxuyuruq.

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

Şagirdin illik qiymətini oxuyuruq və onların cəmini -də toplayırıq.

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

Qiymətlərin cəmini fənlərin sayına bölürük — -də -ci şagirdin orta balını alırıq.

  res[i] /= m;
}

Keçid balı -nı oxuyuruq.

scanf("%d", &k);

Orta balı -dan az olmayan şagirdlərin soyad və adlarını giriş məlumatlarında olduqları ardıcıllıqla çap edirik.

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