Per ogni studente calcoliamo il punteggio medio — la somma dei suoi voti annuali, divisa per il numero di materie m_i. Lo studente può essere ammesso alla scuola se il suo punteggio medio non è inferiore al punteggio di ammissione .
Il valore di viene indicato solo nell'ultima riga dei dati di input, quindi prima leggiamo le descrizioni di tutti gli studenti e per ciascuno di essi salviamo cognome, nome e punteggio medio. Successivamente leggiamo e stampiamo quegli studenti il cui punteggio medio non è inferiore a . Scorrendo gli studenti nell'ordine in cui si susseguono nei dati di input, soddisfiamo automaticamente il requisito sull'ordine di output.
Esempio
Il punteggio di ammissione è k = 8. Calcoliamo il punteggio medio di ogni studente:
Ivanov Ivan: (7 + 9) / 2 = 8 \ge 8, lo studente viene ammesso;
Petrov Petr: 7 / 1 = 7 < 8, lo studente non viene ammesso;
Sidorov Sidor: (10 + 8) / 2 = 9 \ge 8, lo studente viene ammesso.
Alla scuola possono essere ammessi Ivanov Ivan e Sidorov Sidor — li stampiamo nell'ordine in cui si susseguono nei dati di input.
Implementazione dell'algoritmo
Dichiariamo gli array. La prima e la seconda parola della descrizione dell'-esimo studente (cognome e nome) le salviamo in e surn[i], e il suo punteggio medio — in .
#define MAX 10000
char name[MAX][21], surn[MAX][21];
double res[MAX];Leggiamo il numero di studenti .
scanf("%d", &n);Elaboriamo gli studenti uno alla volta. Per l'-esimo studente leggiamo cognome, nome e il numero di materie studiate .
for (i = 0; i < n; i++)
{
scanf("%s %s %d", &name[i], & surn[i], &m);Leggiamo gli voti annuali dello studente e accumuliamo la loro somma in .
res[i] = 0;
for (j = 0; j < m; j++)
{
scanf("%d", &x);
res[i] += x;
}Dividiamo la somma dei voti per il numero di materie — otteniamo in il punteggio medio dell'-esimo studente.
res[i] /= m;
}Leggiamo il punteggio di ammissione .
scanf("%d", &k);Stampiamo, nell'ordine in cui si susseguono nei dati di input, i cognomi e i nomi di quegli studenti il cui punteggio medio non è inferiore a .
for (i = 0; i < n; i++)
if (res[i] >= k) printf("%s %s\n", name[i], surn[i]);