Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Un bucle infinito y ni la remota idea de porque!!

Estas en el tema de Un bucle infinito y ni la remota idea de porque!! en el foro de C/C++ en Foros del Web. Ok mi problema es el siguiente, estoy montando un pequeño proyecto para la universidad en c++, basicamente se trata de 2 listas multienlazadas que almacenan ...
  #1 (permalink)  
Antiguo 01/05/2011, 01:18
 
Fecha de Ingreso: mayo-2009
Mensajes: 4
Antigüedad: 14 años, 11 meses
Puntos: 0
Pregunta Un bucle infinito y ni la remota idea de porque!!

Ok mi problema es el siguiente, estoy montando un pequeño proyecto para la universidad en c++, basicamente se trata de 2 listas multienlazadas que almacenan deportes y atletas respectivamente, y los enlaces entre ellos se debe a que atleta practica X deporte y que deporte es practicado por X atletas. Por aqui todo bien, tengo mi estructura de datos creada y funciona a la perfección.

El problema surge cuando empiezo a llenar las listas leyendo un archivo de entrada. La lista de deportes se carga sin problemas, pero cuando voy a la lista de atletas, específicamente a la parte donde busco los deportes que practica y los enlazo a la lista de deportes, se produce un error no se de que tipo que me crea un ciclo infinito! Es algo sencillo en teoria, por cada atleta en el archivo, buscare entre otras cosas los deportes que practica, asi que por cada deporte practicado buscare en la lista de deportes para encontrar el nodo respectivo y enlazarlo al arreglo de deportes practicados del atleta actual. (Porque guardo la cantidad de deportes practicados en un arreglo).

Código C++:
Ver original
  1. int encontrados=0;
  2.         //While que recorre la lista de deportes para ubicar los nodos requeridos y enlazar los elementos pertinentes
  3.         lista_deportes.posicion= lista_deportes.l;
  4.         while ((lista_deportes.posicion!=NULL) && (encontrados!=practica))
  5.         {
  6.             cout<<" EN EL WHILE: ATLETAS "<<lista_deportes.posicion->contenido->getNumatletas()<<endl;
  7.             cout<<" EN EL WHILE: MEDALLAS "<<lista_deportes.posicion->contenido->getMedallas()<<endl;
  8.             cout<<" EN EL WHILE: ID "<<lista_deportes.posicion->contenido->Id<<endl;
  9.             //UNA SIMPLE INSTRUCCION DE ACCESO DA EL ERROR! (Agregando el atleta numero 6, cuando nos ubicamos en el deporte
  10.             //siguiente a futbol. ¿Memoria llena?
  11.             cout<<" EN EL WHILE: NOMBRE! "<<lista_deportes.posicion->contenido->getNombre()<<endl;
  12.  
  13.             //For que compara cada deporte con el arreglo de deportes practicados
  14.             for (int buscador=0; buscador<practica; buscador++)
  15.             {
  16.                 cout<<" A buscar: "<<Nombre_disciplina[buscador]<<endl;
  17.                 if (lista_deportes.posicion->contenido->getNombre()==Nombre_disciplina[buscador])
  18.                 {
  19.                     //Insertamos el deporte a la lista de deportes practicados
  20.                     atleta_aux.addDeporte (lista_deportes.posicion->contenido);
  21.                     //Insertamos el atleta a la lista de practicantes
  22.                     lista_deportes.posicion->contenido->addAtleta(&atleta_aux);
  23.  
  24.                     cout<<"Encontre a "<<lista_deportes.posicion->contenido->getNombre()<<endl;
  25.                     encontrados++;
  26.                 }
  27.             }
  28.  
  29.             lista_deportes.posicion= lista_deportes.posicion->next;
  30.         }
  31.         lista_atletas.AgregarNodo (atleta_aux);

Es como si al accesar a ese nodo, justo en ese campo (solo pasa cuando trato de obtener el nombre!) pasara algo con la memoria. Hablo de la parte donde comento que ese es la operacion que genera el error.

Cabe destacar, que el codigo funciona perfectamente para los primeros 5 atletas, e incluso logra ubicar los primeros 3 deportes que practica el 6to atleta, pero cuando va a buscar el 4to deporte cae en el ciclo infinito. La lista esta perfecta, no hay problemas con datos que no existen ya que he comprobado todo eso y todo esta en su lugar.

¿Alguien tiene alguna idea?

De antemano gracias por su tiempo y por leer esto!

Última edición por BlastDV; 01/05/2011 a las 20:24

Etiquetas: bucle, infinito, listas, multienlace, nodo, ciclos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:43.