Her öğrenci için ortalama puanı — yıllık notlarının toplamının ders sayısı m_i'ye bölümünü — hesaplayalım. Bir öğrenci, ortalama puanı geçme puanı 'den küçük değilse okula kabul edilebilir.
değeri yalnızca girdi verilerinin son satırında verildiğinden, önce tüm öğrencilerin açıklamalarını okuyup her biri için soyadını, adını ve ortalama puanını saklayacağız. Ardından 'yi okuyup ortalama puanı 'den küçük olmayan öğrencileri yazdıracağız. Öğrencileri girdi verilerindeki sıralarına göre gözden geçirerek, çıktı sırası hakkındaki gereksinimi otomatik olarak yerine getirmiş oluruz.
Örnek
Geçme puanı k = 8'e eşittir. Her öğrencinin ortalama puanını hesaplayalım:
Ivanov Ivan: (7 + 9) / 2 = 8 \ge 8, öğrenci kabul edilir;
Petrov Petr: 7 / 1 = 7 \lt 8, öğrenci kabul edilmez;
Sidorov Sidor: (10 + 8) / 2 = 9 \ge 8, öğrenci kabul edilir.
Okula Ivanov Ivan ve Sidorov Sidor kabul edilebilir — onları girdi verilerindeki sıralarına göre yazdırıyoruz.
Algoritmanın Gerçeklenmesi
Dizileri bildirelim. -inci öğrencinin açıklamasının birinci ve ikinci kelimesini (soyadı ve adını) ve surn[i]'de, ortalama puanını ise 'de saklayalım.
#define MAX 10000
char name[MAX][21], surn[MAX][21];
double res[MAX];Öğrenci sayısı 'yi okuyoruz.
scanf("%d", \&n);Öğrencileri sırayla işliyoruz. -inci öğrenci için soyadını, adını ve öğrenilen ders sayısı 'yi okuyoruz.
for (i = 0; i \lt n; i++)
{
scanf("%s %s %d", \&name[i], \& surn[i], \&m);Öğrencinin adet yıllık notunu okuyup toplamını 'de biriktiriyoruz.
res[i] = 0;
for (j = 0; j \lt m; j++)
{
scanf("%d", \&x);
res[i] += x;
}Not toplamını ders sayısına bölüyoruz — 'de -inci öğrencinin ortalama puanını elde ediyoruz.
res[i] /= m;
}Geçme puanı 'yi okuyoruz.
scanf("%d", \&k);Girdi verilerindeki sıralarına göre, ortalama puanı 'den küçük olmayan öğrencilerin soyadlarını ve adlarını yazdırıyoruz.
for (i = 0; i \lt n; i++)
if (res[i] \gt= k) printf("%s %s\n", name[i], surn[i]);