Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/01/2016, 11:41
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 3 meses
Puntos: 204
Respuesta: Validar mayor nota de N notas ingresadas

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 original
  1. struct Datos
  2. {
  3.   std::string nombre;
  4.   std::string cedula;
  5. };
  6.  
  7. std::vector<Datos> alumnos; // para almacenar los nombres con la nota más alta
  8. int nota; // para almacenar la nota más alta

En el caso de no poder usar contenedores pero si punteros...
Código C++:
Ver original
  1. struct Datos
  2. {
  3.   std::string nombre;
  4.   std::string cedula;
  5. };
  6.  
  7. Datos* alumnos; // para almacenar los nombres con la nota más alta
  8. int numAlumnos; // Por comodidad, indica cuantos nombres hay en el array.
  9. 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.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.