es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Utilizar vector o mapa para la entrada de una clase de estudiantes?

Estoy escribiendo un código para almacenar información de la entrada del usuario, con dos cadenas diferentes y un carácter. El programa debe tomar entradas sobre estudiantes hasta que el usuario ingrese “stop” como nombre de curso, y luego pedir un nuevo estudiante. Todos los objetos se imprimen con un bucle iterador “for” cuando el nombre del estudiante ingresado es “stop”.

Al principio, creé una clase así:

class Student{
public:
  string Name;
  string Course;
  char Grade;
};

¿Se puede utilizar un vector para todas las entradas?

He intentado usar un mapa, pero no estoy seguro de cómo usarlo.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, un vector se puede utilizar para almacenar todas las entradas.

    Aquí hay un ejemplo de implementación usando un std::vector:

    #include <iostream>
    #include <vector>
    
    class Estudiante {
    public:
      std::string Nombre;
      std::string Curso;
      char Calificación;
    };
    
    int main() {
      std::vector<estudiante> estudiantes;
      while(true){
        Estudiante e;
        std::cout << "Ingrese el nombre del estudiante: ";
        std::cin >> e.Nombre;
        std::cout << "Ingrese el nombre del curso o 'stop' para finalizar: ";
        std::cin >> e.Curso;
        if(e.Curso == "stop"){
          break;
        }
        std::cout << "Ingrese la calificación del estudiante: ";
        std::cin >> e.Calificación;
        estudiantes.push_back(e);
      }
    
      for(auto it = estudiantes.begin(); it != estudiantes.end(); it++){
        if(it->Nombre == "stop"){
          std::cout << "Fin de los estudiantes" << std::endl;
          break;
        }
        std::cout << "El estudiante " << it->Nombre << " está inscrito en " << it->Curso << " y tiene una calificación de " << it->Calificación << std::endl;
      }
    
      return 0;
    }
    

    En esta implementación, los objetos Estudiante se almacenan en un std::vector<estudiante> llamado estudiantes. La entrada del usuario se maneja mediante un bucle while(true) que crea un nuevo objeto Estudiante e y rellena sus campos con las entradas del usuario. Si el usuario ingresa “stop” como nombre del curso, el bucle se rompe y el programa imprime todos los objetos Estudiante almacenados en estudiantes con un bucle for que utiliza un iterador.

    En cuanto al uso de un std::map, es posible utilizar un map<string, estudiante=""> para almacenar los objetos Estudiante con sus nombres como claves. Sin embargo, la estructura de datos map se utiliza típicamente cuando se necesitan pares clave-valor para una búsqueda eficiente basada en la clave. En este caso, parece que un vector es suficiente para almacenar los objetos Estudiante en el orden en el que se ingresan.</string,>

Comments are closed.