Gestione prenotazione voli in c

di il
7 risposte

Gestione prenotazione voli in c

Buongiorno devo fare un progetto con i grafi per la prenotazione dei voli il mio problema è popolare il grafo...posto qui il codice:

#ifndef nodo_h
#define nodo_h
#define dim 50

typedef enum {false,true} boolean;

struct lista{
int nodo;
struct lista *succ;
};

struct nodo{
char *val;
int tipo;
boolean flag;
struct lista *inizio;
};

void inizializza(struct nodo *a[]);
void aggiungi_nodo(int tipo , char *v ,struct nodo *a[]);
void aggiungi_arco( int n1 , int n2 , struct nodo *grafo[]);
struct lista * inserisciInTesta(struct lista *inizio , int nodo);
void visitaInProfondita(int n , struct nodo *grafo[]);



#endif /* nodo_h */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "nodo.h"


#define dim 50

void inizializza(struct nodo *a[])
{
   int i;
   for(i=0 ; i<dim ; i++)
      a[i]=NULL;
}

void aggiungi_nodo(int tipo , char *v ,struct nodo *a[])
{
   int t=tipo-1;
   if(a[t]==NULL)
      a[t]=malloc(sizeof(struct nodo));

   a[t]->tipo=tipo;
   a[t]->val=v;
   a[t]->flag=false;
   a[t]->inizio=NULL;
}


void aggiungi_arco( int n1 , int n2 , struct nodo *grafo[])
{
   grafo[n1-1]->inizio=inserisciInTesta(grafo[n1-1]->inizio,n2);
   grafo[n2-1]->inizio=inserisciInTesta(grafo[n2-1]->inizio,n1);
}




struct lista *inserisciInTesta(struct lista *inizio , int nodo)
{
   struct lista *temp= malloc(sizeof(struct lista));
   temp->succ=inizio;
   temp->nodo=nodo;
   return temp;
}




void visitaInProfondita(int n , struct nodo *grafo[])
{
   struct lista *temp=grafo[n-1]->inizio;
   printf("\n    nodo: %d     città: %s" , n , grafo[n-1]->val);
   grafo[n-1]->flag=true;
   
   while(temp !=NULL)
   {
      if(grafo[(temp->nodo)-1]->flag ==false)
         visitaInProfondita(temp->nodo , grafo);
      temp=temp->succ;
   }
}

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "Graph.h"
#include "List.h"
#include "nodo.h"

#define dim 50



int main() {
    int scelta;
    int sceltaUt;
    int sceltaAmministratore;
    char email;
    char pwd;
   // Graph G = NULL;
    char emailAmministratore;
    char pwdAmministratore;
    char deleteDestinazione;
    struct nodo *grafo[dim];
    char citta;
   // int n = 0,
    int num;
    
    while((scelta = menu())){
    switch (scelta) /* Creo uno switch con 5 case, uno per ogni possibile scelta */
    {
    
    case 1:
            printf("Inserisci email: ");
            scanf("%s", &emailAmministratore);
                       
            printf("Inserisci password(max 7 caratteri): ");
            scanf("%s", &pwdAmministratore);
           
            while((sceltaAmministratore = menuAmministratore())){
                    switch (sceltaAmministratore) {
                   case 1: //stampa archivio
                            inizializza(grafo);

                               aggiungi_nodo(1,"Napoli",grafo);
                               aggiungi_nodo(2,"Milano",grafo);
                               aggiungi_nodo(3,"Genova",grafo);
                               aggiungi_nodo(4,"Firenze",grafo);
                               aggiungi_nodo(5,"Roma",grafo);
                               aggiungi_nodo(6,"Torino",grafo);
                               aggiungi_nodo(7,"Venezia",grafo);
                               aggiungi_nodo(8,"Palermo",grafo);
                               aggiungi_nodo(9,"Bari",grafo);
                               aggiungi_nodo(10,"Perugia",grafo);
                               aggiungi_nodo(11,"Parma",grafo);
                               aggiungi_nodo(12,"Reggio Calabria",grafo);
                               aggiungi_nodo(13,"Trento",grafo);
                               aggiungi_nodo(14,"Aosta",grafo);
                               aggiungi_nodo(15,"Ancona",grafo);
                               aggiungi_nodo(16,"Pescara",grafo);
                               aggiungi_nodo(17,"Potenza",grafo);
                               aggiungi_nodo(18,"Catania",grafo);
                               aggiungi_nodo(19,"Reggio Emilia",grafo);
                               aggiungi_nodo(20,"Cagliari",grafo);


                               aggiungi_arco(1,2,grafo);
                               aggiungi_arco(1,3,grafo);
                               aggiungi_arco(1,4,grafo);
                               aggiungi_arco(3,4,grafo);
                               aggiungi_arco(2,3,grafo);
                               aggiungi_arco(1,5,grafo);
                               aggiungi_arco(5,6,grafo);
                               aggiungi_arco(5,8,grafo);
                               aggiungi_arco(6,7,grafo);
                               aggiungi_arco(7,8,grafo);
                               aggiungi_arco(3,9,grafo);
                               aggiungi_arco(2,10,grafo);
                               aggiungi_arco(9,11,grafo);
                               aggiungi_arco(6,11,grafo);
                               aggiungi_arco(11,12,grafo);
                               aggiungi_arco(12,4,grafo);
                               aggiungi_arco(2,13,grafo);
                               aggiungi_arco(13,9,grafo);
                               aggiungi_arco(14,8,grafo);
                               aggiungi_arco(7,15,grafo);
                               aggiungi_arco(15,16,grafo);
                               aggiungi_arco(6,17,grafo);
                               aggiungi_arco(17,18,grafo);
                               aggiungi_arco(18,19,grafo);
                               aggiungi_arco(13,19,grafo);
                               aggiungi_arco(19,20,grafo);
                               aggiungi_arco(20,2,grafo);
                               
                               
                               visitaInProfondita(1,grafo);
                               printf("\n\n");
                  
                  break;
                 
                        case 2: //inserisci
                            
                            printf("Inserisci nuemro destinazione:\n");
                            scanf("%d", &num);
                            
                            printf("Inserisci città:\n");
                            scanf("%s", &citta);
 
                            
                break;
                      case 3://elimina tratta e destinazione
                           printf("Inserisci destinazione da eliminare: ");
                           scanf("%s", &deleteDestinazione);
                           
                          break;
                  }
              }
            return 0;
            
         break;

     case 2:
              while((sceltaUt = menuUtente())){
                  switch (sceltaUt) {
                    case 1:
                      
                      printf("Inserisci l'email: ");
                      scanf ("%s", &email);
                      
                      printf("Inserisci password(max 7 caratteri): ");
                      scanf("%s", &pwd);
                      
                      printf("\niscrizione effettuata con successo");

                   
                      break;
                   case 2:
                     printf("Inserisci l'email: ");
                     scanf ("%s", &email);
             
                     printf("Inserisci password(max 7 caratteri): ");
                     scanf("%s", &pwd);
            
                      printf("accesso effettuata con successo");
            
                break;
        
                  }
              }
           return 0;
   case 3: /*Se l'utente vuole uscire */

      printf("Grazie per aver scelto il servizio di gestione prenotazione voli, torna a trovarci!\n");

      return 0;

       break;

    default: /*Se l'utente sbaglia ad inserire il numero*/
    printf("Questo tasto non consente di effetuare scelte! Riprova!\n");

       break;

          } /*Fine switch*/
    } /*Fine do*/
  return 0;
} /*Fine main*/

Il problema è che io voglio stampare le città senza fare la visita in profonditi...potete aiutarmi a risolvere questo problema?
Grazie in anticipo

7 Risposte

  • Re: Gestione prenotazione voli in c

    Spiegati meglio, come li vorresti stampare?
  • Re: Gestione prenotazione voli in c

    orion99 ha scritto:


    Spiegati meglio, come li vorresti stampare?
    L'idea è quella di creare il grafo è stamparlo con lista di adiacenza..in realtà avevo pensato anche di utilizzare un file e poi popolare il grafo ma mi da abbastanza problemi...come ho fatto sopra funziona correttamente ma fa una visita in profondità che a me non serve
  • Re: Gestione prenotazione voli in c

    Ma lo hai capito che qui il CROSSPOSTING è vietato?
    "forum.tomshw.it/threads/realizzare-la-prenotazione-di-voli-con-grafi.819733/#post-7637840"

    Ci prendi in giro?
  • Re: Gestione prenotazione voli in c

    oregon ha scritto:


    Ma lo hai capito che qui il CROSSPOSTING è vietato?

    "forum.tomshw.it/threads/realizzare-la-prenotazione-di-voli-con-grafi.819733/#post-7637840"

    Ci prendi in giro?
    Elimino quello
  • Re: Gestione prenotazione voli in c

    Ok, sono qui in attesa di un tuo messaggio che conferma l'eliminazione di situazioni di cross posting
  • Re: Gestione prenotazione voli in c

    Toki ha scritto:


    Ok, sono qui in attesa di un tuo messaggio che conferma l'eliminazione di situazioni di cross posting
    Non riesco a chiudere li vabbè continuo qui e lì lascio perdere
  • Re: Gestione prenotazione voli in c

    A questo punto chiudo il thread per cross posting.
Devi accedere o registrarti per scrivere nel forum
7 risposte