Punteggio di ammissione#2691

Punteggio di ammissione (Editoriale)

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:

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]);