Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: verakra en 25 Febrero 2020, 03:04 am



Título: Ayuda Con Este ERROR, GRAFOS
Publicado por: verakra en 25 Febrero 2020, 03:04 am
BUENO EXPLICO MI CASO, ESTOY INTENTANDO HACER UNA FUNCION QUE ME INSERTE UNA ARISTA  PARA HACER UN BFS ,ESTA MI FUNCION Y CUANDO LO LLAMO EN EL MAIN CON DO WHILE, LO QUE SUCEDE ES QUE CUANDO QUIERO INSERTAR UNA ARISTA DE UN VERTICE A OTRO , ME SALE QUE EL PROGRAMA DEJO FUNCIONAR, ENTONCES NOSE SE TENGO ALGUN ERROR AL CODIFICAR O UN ERROR LOGICO, POR FAVOR UN ILUMINADO QUE ME AYUDE A RESOLVER ESTE DILEMA

Código
  1. void Grafo::InsertarArista(Vertice *origen, Vertice *destino)
  2. {
  3. Arista *nueva = new Arista;
  4. nueva->sig=NULL;
  5. nueva ->ady=NULL;
  6.  
  7. Arista *aux;
  8. aux = origen->ady;
  9.  
  10. if(aux==NULL)
  11. {
  12. origen->ady = nueva;
  13. nueva->ady = destino;
  14. }
  15. else
  16. {
  17. while (aux !=NULL)
  18. {
  19. aux=aux->sig;
  20.  
  21.  }
  22.  
  23.  aux->sig = nueva;
  24.  nueva->ady=destino;
  25.  }
  26. }



Código
  1. case 2:
  2.        {
  3.            string origen, destino;
  4.            system("cls");
  5.            if(G.vacio())
  6.            {
  7.                cout<<"El grafo esta vacio"<<endl;
  8.            }
  9.            else
  10.            {
  11.                cout<<"Ingrese del nombre del vertice origen: ";
  12.                cin.ignore();
  13.                getline(cin, origen, '\n');
  14.                cout<<"Ingrese el nombre del vertice destino: ";
  15.                getline(cin, destino, '\n');
  16.                system("cls");
  17.  
  18.                if(G.GetVertice(origen) == NULL || G.GetVertice(destino) == NULL)
  19.                {
  20.                    cout<<"Uno de los vertices no es valido"<<endl;
  21.                }
  22.                else
  23.                {
  24.                    G.InsertarArista(G.GetVertice(origen), G.GetVertice(destino));//, peso);
  25.                }
  26.            }
  27.            cin.get();
  28.            cin.get();
  29.            break;
  30.        }


Título: Re: Ayuda Con Este ERROR, GRAFOS
Publicado por: K-YreX en 29 Febrero 2020, 21:55 pm
Antes de nada decir que hay un foro propio para Programación C/C++ y que no es necesario que escribas el mensaje en mayúsculas...

Dicho esto y sin conocer en profundidad tu implementación diría que el error puede estar en la línea 23 de la función InsertarArista() ya que en el <while()> continúas avanzando hasta que <aux> es NULL y cuando es NULL, intentas asignar a <sig>, <nueva>. Creo que el bucle debería ser <while(aux->sig != NULL)>