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:
Ivanov Ivan: (7 + 9) / 2 = 8 \ge 8, el alumno es admitido;
Petrov Petr: 7 / 1 = 7 < 8, el alumno no es admitido;
Sidorov Sidor: (10 + 8) / 2 = 9 \ge 8, el alumno es admitido.
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]);