Richiamo di struttura in una funzione

di il
8 risposte

Richiamo di struttura in una funzione

Salve a tutti!

Trovo un po' di difficoltà in questo passaggio:

 Ho uno struct che ho precedentemente riempito in una funzione esterna al main, la funzione void "DatiCorsi" , e la voglio richiamare in un'altra funzione esterna per stamparne i dati inseriti…

In particolare: 

vorrei sapere come devo fare per richiamare lo struct, riempito nella funzione secondaria, nella nuova funzione "Visualizza" in modo da stampare i dati inseriti, che cosa inserire poi nel main per fare questo…Qualcuno mi può spiegare i passaggi?? 

Grazie mille!!!


struct Elemento
{
   char Docente[20];
   char Corso[20];
   char giorno1[5];
   char giorno2[5];
   char giorno3[5];

   struct Elemento* prossimo;
};
typedef struct Elemento Lista;
  Lista* lista= new Lista;

void DatiCorsi(struct Elemento* e)
{
   int risposta;
   cout<<"Quanti corsi si vogliono inserire?"<<endl;
   cin>>risposta;
   Lista* lista= new Lista;
   {
       Lista* l=lista;
       int i=1;
       while(i<=risposta)
       {
           
   cout<<"Inserisci il Nome del docente"<<endl;
cin>>l->Docente;
cout<<"Inserisci il Nome del corso"<<endl;
cin>>l->Corso;
cout<<"Inserisci i giorni della settimana in cui si svolge il corso"<<endl<< "abbreviati delle prime 3 lettere:"<<endl;
cin>>l->giorno1;
cin>>l->giorno2;
cin>>l->giorno3;
i++;
if(i<=risposta)
{
   l->prossimo = new Lista;
}
else
{
   l->prossimo =NULL;
}
   l = l->prossimo;
   
       }
   }
}

void Lettura()
{
Lista* l = lista;
while (l != NULL)
{
   cout<<""<<endl;
cout <<"Nome del docente: " <<l->Docente<<endl;
cout<<"Nome del corso: " <<l->Corso<<endl;
cout<<"Giorni della settimana: "<<endl;
cout<<l->giorno1<<endl;
cout<<l->giorno2<<endl;
cout<<l->giorno3<<endl;
l = l->prossimo;
}
}

//Come devo procedere?Mi dà errore in questo punto...


int main()
{
   struct Elemento s;
   DatiCorsi (&s);
 
   }

8 Risposte

  • Re: Richiamo di struttura in una funzione

    Puoi fare come per l'altra funzione

  • Re: Richiamo di struttura in una funzione

    27/06/2023 - oregon ha scritto:


    Puoi fare come per l'altra funzione

    Che cosa in particolare?  Ho provato aggiungendo nel main

    struct Elemento t;
       Lettura(&t);
    

    e aggiungendo struct Elemento* e come parametro della funzione Lettura

    Void Lettura(struct Elemento* e)

    ma nel momento della stampa dei dati, visualizzo tutti caratteri speciali e non quello che ho inserito…

    Scusami, è da poco che sto studiando questi argomenti….

    Grazie mille

  • Re: Richiamo di struttura in una funzione

    Semplicemente come nel main

    int main()
    {
       struct Elemento s;
       DatiCorsi (&s);
       Lettura (&s);
       }
  • Re: Richiamo di struttura in una funzione

    Grazie mille!!

    Mentre come parametro della funzione Lettura?

    se lascio

    void Lettura(struct Elemento* e)

    Continua a stamparmi dei caratteri speciali …non riesco a capire il problema :((

    Grazie ancora per la pazienza!!!

  • Re: Richiamo di struttura in una funzione

    E adesso cosa hai scritto nella funzione Lettura?

  • Re: Richiamo di struttura in una funzione

    27/06/2023 - oregon ha scritto:


    E adesso cosa hai scritto nella funzione Lettura?

    void Lettura(struct Elemento* e)
    {
       Lista* l=lista;
    while (l != NULL)
    {
       cout<<""<<endl;
    cout <<"Nome del docente: " <<l->Docente<<endl;
    cout<<"Nome del corso: " <<l->Corso<<endl;
    cout<<"Giorni della settimana: "<<endl;
    cout<<l->giorno1<<endl;
    cout<<l->giorno2<<endl;
    cout<<l->giorno3<<endl;
    l = l->prossimo;
    
    }
    }

    Ho scritto così in Lettura

    Mentre nel main

    int main()
    {
       struct Elemento s;
       DatiCorsi (&s);
       Lettura (&s);
       }

    Il programma compila, ma ogni volta stampa dei caratteri speciali a caso e non quelli che ho inserito io oppure non stampa proprio nulla…

    Non riesco a capire perché, secondo te ??

    Grazie

  • Re: Richiamo di struttura in una funzione

    Un attimo… ti hai fatto la new all'interno della prima funzione e amche fuori

     Nella funzione non devi usare la new

  • Re: Richiamo di struttura in una funzione

    27/06/2023 - oregon ha scritto:


    Un attimo… ti hai fatto la new all'interno della prima funzione e amche fuori

     Nella funzione non devi usare la new

    GRAZIE MILLE!!!!! 

    Stavo impazzendo, adesso funziona tutto alla perfezione!! 

    Buona giornata! :))

Devi accedere o registrarti per scrivere nel forum
8 risposte