Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Algoritmi - problema grafi
Forum - Algoritmi - problema grafi

Avatar
Dice (Normal User)
Expert


Messaggi: 238
Iscritto: 26/11/2011

Segnala al moderatore
Postato alle 16:56
Mercoledì, 22/08/2012
Ho un problema nel creare un grafo:

io ho un file impostato così:

Parigi  Roma   500 2.5


La prima è la città di partenza, la seconda è la città di arrivo, il pimo numero è il costo del volo, il secondo numero è la durata del volo.
Riesco a leggere tutti i valori del file, però non riesco a fare in modo che questi valori  vengano inseriti nel grafo, cioè nelle due struct del grafo :(
(sapendo che uso la lista di adiacenza)

come si può risolvere ?

PM Quote
Avatar
XBarboX (Member)
Guru


Messaggi: 945
Iscritto: 31/12/2008

Segnala al moderatore
Postato alle 17:12
Mercoledì, 22/08/2012
Posta il codice e riusciremo a capire gli errori :k:

PM Quote
Avatar
Dice (Normal User)
Expert


Messaggi: 238
Iscritto: 26/11/2011

Segnala al moderatore
Postato alle 17:17
Mercoledì, 22/08/2012
Codice sorgente - presumibilmente C

  1. typedef struct nodo_grafo
  2. {
  3.         char aeroporto[LUNGHEZZA_STRINGA_AEROPORTO];
  4.         struct nodo_grafo *nodo_succ_p;
  5. } nodo_grafo_t;
  6.  
  7. typedef struct arco_grafo
  8. {
  9.         int costo;
  10.         double durata;
  11.         struct arco_grafo *arco_succ_p;
  12.         struct nodo_grafo *nodo_adiac_p;
  13. } arco_grafo_t;
  14.  
  15. int main(void)
  16. {
  17.       [...]     /*altre variabili e acquisisco il file*/
  18.       arco_grafo_t *nuovo_arco;
  19.       nodo_grafo_t *grafo,
  20.                             *nuovo_grafo;
  21.  
  22.       nuovo_grafo = (nodo_grafo_t *)malloc(sizeof(nodo_grafo_t));
  23.                         nuovo_arco = (arco_grafo_t *)malloc(sizeof(arco_grafo_t));
  24.                         strncpy(nuovo_grafo->aeroporto, citta_part, sizeof(nuovo_grafo->aeroporto));
  25.                         strncpy(nuovo_arco->nodo_adiac_p->aeroporto, citta_arr, sizeof(nuovo_arco->nodo_adiac_p));
  26.                         nuovo_arco->costo = costo;
  27.                         nuovo_arco->durata = durata;
  28.                         nuovo_arco->arco_succ_p = nuovo_arco;
  29.                         grafo = nuovo_grafo;
  30.       [...]
  31. return(0);
  32. }


Ultima modifica effettuata da Dice il 22/08/2012 alle 17:18
PM Quote
Avatar
XBarboX (Member)
Guru


Messaggi: 945
Iscritto: 31/12/2008

Segnala al moderatore
Postato alle 21:10
Mercoledì, 22/08/2012
Purtroppo io il C non lo conosco bene ma posso darti uno spunto su come salvare il grafo con pseudo codice

struct arco
{
int citta_partenza;
int citta_arrivo;
int costo;
double durata;
}

struct nodo
{
NomeCitta stringa;
arco CittaCollegate[100];
int numero_citta_collegate;
}

nodo grafo[100];


Praticamente crei un vettore di nodi. Ogni città avrà un "ID"
Per esempio...
grafo[1].NomeCitta = "Roma";
grafo[1].CittaCollegate[0] = new arco("Roma","Parigi",500,2.5); //Aggiungo un arco che parte da roma fino a parigi che costa 500 e dura 2.5
grafo[1].numero_citta_collegate++;

PM Quote