Nota de corte#2691

Nota de corte (Editorial)

Para cada alumno calculemos la nota media — la suma de sus calificaciones anuales, dividida entre la cantidad de asignaturas m_i. El alumno puede ser admitido en la escuela si su nota media no es menor que el puntaje de corte .

El valor de se indica solo en la última línea de los datos de entrada, por lo que primero leeremos las descripciones de todos los alumnos y para cada uno de ellos guardaremos el apellido, el nombre y la nota media. Luego leeremos y mostraremos aquellos alumnos cuya nota media no sea menor que . Al recorrer a los alumnos en el orden en que aparecen en los datos de entrada, cumplimos automáticamente con el requisito sobre el orden de salida.

Ejemplo

El puntaje de corte es k = 8. Calculemos la nota media de cada alumno:

En la escuela pueden ser admitidos Ivanov Ivan y Sidorov Sidor — a ellos los mostramos en el orden en que aparecen en los datos de entrada.

Implementación del algoritmo

Declaremos los arreglos. La primera y la segunda palabra de la descripción del -ésimo alumno (el apellido y el nombre) las guardaremos en y surn[i], y su nota media — en .

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

Leemos la cantidad de alumnos .

scanf("%d", &n);

Procesamos a los alumnos uno por uno. Para el -ésimo alumno leemos el apellido, el nombre y la cantidad de asignaturas estudiadas .

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

Leemos las calificaciones anuales del alumno y acumulamos su suma en .

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

Dividimos la suma de las calificaciones entre la cantidad de asignaturas — en obtenemos la nota media del -ésimo alumno.

  res[i] /= m;
}

Leemos el puntaje de corte .

scanf("%d", &k);

Mostramos en el orden en que aparecen en los datos de entrada los apellidos y nombres de aquellos alumnos cuya nota media no sea menor que .

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