Cuando dices que no puedes usar
Array te refieres a que no puedes usar contenedores de la STL o a que no puedes usar punteros?
Si puedes usar contenedores yo usaría los siguiente:
Código C++:
Ver originalstruct Datos
{
std::string nombre;
std::string cedula;
};
std::vector<Datos> alumnos; // para almacenar los nombres con la nota más alta
int nota; // para almacenar la nota más alta
En el caso de no poder usar contenedores pero si punteros...
Código C++:
Ver originalstruct Datos
{
std::string nombre;
std::string cedula;
};
Datos* alumnos; // para almacenar los nombres con la nota más alta
int numAlumnos; // Por comodidad, indica cuantos nombres hay en el array.
int nota; // Para almacenar la nota más alta
Como te tienen que indicar el número de notas, puedes usar ese número para inicializar el array
alumnos, ya que ese es el peor caso posible (todas las notas iguales).
La idea entonces del algoritmo puede ser:
Si la nota actual es mayor que
nota: Actualizas
nota y vacías
alumnos. En el caso del contenedor puedes usar
clear() y en el del array,
numAlumnos=0.
Si la nota actual es igual a
nota, almacenas el nombre en
alumnos. En el caso del contenedor puedes usar
push_back() y, en el caso del array... bueno, parto de que sabes hacerlo... e incrementas
numAlumnos.
Si la nota actual es inferior a
nota no haces absolutamente nada.
¿Por qué en el caso de los contenedores no tengo
numAlumnos? Por varias razones:
- El contenedor tiene un método llamado push_back, que introduce un elemento al final de la lista.
- El contenedor tiene un método size(), que me indica el número de elementos de la lista.
Estos motivos hacen que el uso de la variable sea totalmente prescinsible.
Total, que una vez has pedido todas las notas, únicamente te habrás quedado con la nota más alta y con todos aquellos alumnos que comparten dicha nota, con un simple bucle deberías ser capaz de componer el string de salida.
Un saludo.