Hola a ver si alguien puede ayudarme: en un programa que estoy haciendo y que debería mostrar por pantalla los datos de un alumno, a la primera vez que lo ejecuto sale perfecto pero a la segunda no muestra los trabajos, lo que significa que el puntero que apunta a los trabajos se pone a cero y al llamar a la función MostrarListaTrabajos como vale cero no entra la segunda vez en el bucle. ALguien sabe xk?¿Cómo se solucionaría?.
Por cierto la función BuscarAlumno te devuelve el puntero que señala a los datos del alumno y dentro hay un puntero que señala al primero de los trabajos.
Muchas gracias de antemano
Aquí pongo el código:
void EscribirFecha(Tpun pos)
{
cout << (pos -> trabajo -> fecha.ano) << "/" << (pos -> trabajo -> fecha.mes) << "/" << (pos -> trabajo -> fecha.dia) << endl;
}
//------------------------------------------------------------------------------
void EscribirTipo(Tpun pos)
{
switch ((pos -> trabajo -> tipo))
{
case problema: cout << "problema" << endl;
break;
case practica: cout << "practica" << endl;
break;
case examen: cout << "examen" << endl;
break;
}
}
//------------------------------------------------------------------------------
void MostrarListaTrabajos(Tpun pos)
{
unsigned int cont = 0;
while((pos -> trabajo) != NULL) // ALGO PASA CON EL PUNTERO!!!!!
{
cont = cont + 1;
cout << cont << ")" << endl;
cout << "Tipo de trabajo: ";
EscribirTipo(pos);
cout << "Fecha: ";
EscribirFecha(pos);
cout << "Calificacion: ";
cout << (pos -> trabajo -> calificacion) << endl;
cout << endl;
(pos -> trabajo) = (pos -> trabajo -> sig);
}
}
//------------------------------------------------------------------------------
void MostrarAlumno(Tclase &clase)
{
unsigned int identidad;
Tpun pos;
Tpun ante = NULL;// creo este puntero porque más adelante lo necesitaré en el procedimiento BuscarAlumno cuando lo use en BorrarAlumno
cout << "Introduzca DNI del alumno para mostrar los datos: ";
cin >> identidad;
cout << endl;
pos = BuscarAlumno(clase,identidad,ante);
if (pos != NULL)
{
cout << "Informacion del alumno: " << endl;
cout << endl;
cout << "DNI: ";
cout << (pos -> DNI) << endl;
cout << "Nombre: ";
cout << (pos -> nombre) << endl;
cout << endl;
cout << "Trabajos:" << endl;
cout << endl;
MostrarListaTrabajos(pos);
}
else
{
cout << "El alumno no se encuentra registrado en clase" << endl;
cout << endl;
}
}
//------------------------------------------------------------------------------
EDITADO: ya lo he resuelto, es que la lista se me quedaba colgada con nodos sueltos jeje
un saludo