Buenos dias,
En un proyecto de la universidad donde se debe imprimir una lista con todas las asignaturas almacenadas en un fichero, el programa solo me imprime la primera y no sigue imprimiendo el resto. No sé a que es debido. Os pongo el codigo::
Codigo desde donde se llama a la función de imprimir
/**
*Imprimirá el listado de todas las asignaturas
*/
void imprimirAsignaturas(){
vector <Asignatura> asignaturas = persistencia.getAsignaturas();
for (int i=0;i<asignaturas.size();i++)
{
asignaturas.print();
}
}
Codigo de persistencia.GetAsignaturas
/**
* Obtiene todos las asignaturas almacenados en la base de datos.
* Si no encuentra asignaturas devuelve una lista vacia.
*/
vector<Asignatura> Persistencia::getAsignaturas() {
string linea;
ifstream infile;
// Abrir y recorrer el fichero para obtener los datos
infile.open("asignaturas");
vector<Asignatura> asignaturas;
int i = 0;
while (!infile.eof()) {
Asignatura asignatura;
getline(infile, linea);
if (linea.length() > 0) {
vector<string> atributos;
atributos = split(linea, "###");
int referencia;
referencia = atoi(atributos[0].c_str());
asignatura.setReferencia(referencia);
asignatura.setNombre(atributos[1].c_str());
int aforo;
aforo = atoi(atributos[2].c_str());
asignatura.setAforo(aforo);
int AlumnosMatriculados;
AlumnosMatriculados = atoi(atributos[3].c_str());
asignatura.setAlumnosMatriculados(AlumnosMatriculados);
int curso;
curso = atoi(atributos[4].c_str());
asignatura.setCurso(curso);
int creditos;
creditos = atoi(atributos[5].c_str());
asignatura.setCreditos(creditos);
// Se inserta cada uno de los ejemplares en la lista.
asignaturas.push_back(asignatura);
}
i++;
infile.close();
return asignaturas;
}
}
Gracias por la ayuda, espero su respuesta
Un saludo
En un proyecto de la universidad donde se debe imprimir una lista con todas las asignaturas almacenadas en un fichero, el programa solo me imprime la primera y no sigue imprimiendo el resto. No sé a que es debido. Os pongo el codigo::
Codigo desde donde se llama a la función de imprimir
/**
*Imprimirá el listado de todas las asignaturas
*/
void imprimirAsignaturas(){
vector <Asignatura> asignaturas = persistencia.getAsignaturas();
for (int i=0;i<asignaturas.size();i++)
{
asignaturas.print();
}
}
Codigo de persistencia.GetAsignaturas
/**
* Obtiene todos las asignaturas almacenados en la base de datos.
* Si no encuentra asignaturas devuelve una lista vacia.
*/
vector<Asignatura> Persistencia::getAsignaturas() {
string linea;
ifstream infile;
// Abrir y recorrer el fichero para obtener los datos
infile.open("asignaturas");
vector<Asignatura> asignaturas;
int i = 0;
while (!infile.eof()) {
Asignatura asignatura;
getline(infile, linea);
if (linea.length() > 0) {
vector<string> atributos;
atributos = split(linea, "###");
int referencia;
referencia = atoi(atributos[0].c_str());
asignatura.setReferencia(referencia);
asignatura.setNombre(atributos[1].c_str());
int aforo;
aforo = atoi(atributos[2].c_str());
asignatura.setAforo(aforo);
int AlumnosMatriculados;
AlumnosMatriculados = atoi(atributos[3].c_str());
asignatura.setAlumnosMatriculados(AlumnosMatriculados);
int curso;
curso = atoi(atributos[4].c_str());
asignatura.setCurso(curso);
int creditos;
creditos = atoi(atributos[5].c_str());
asignatura.setCreditos(creditos);
// Se inserta cada uno de los ejemplares en la lista.
asignaturas.push_back(asignatura);
}
i++;
infile.close();
return asignaturas;
}
}
Gracias por la ayuda, espero su respuesta
Un saludo