AYUDA c++ con puntero(RESUELTO, cierren el post)

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?. [mamaaaaa] [mamaaaaa]
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 [tadoramo]

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
Buenas, lo puedes hacer tu mismo con la opción que hay abajo a la derecha. ;)

SAludos
1 respuesta