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
C/C++ - per stampare lista puntatori
Forum - C/C++ - per stampare lista puntatori

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
totipianurese (Member)
Pro


Messaggi: 168
Iscritto: 24/06/2008

Segnala al moderatore
Postato alle 19:03
Giovedì, 23/10/2008
Ciao raga, non so come fare per far stampare infine i nodi caricati:
Codice sorgente - presumibilmente C#

  1. #include <iostream>   //provaaaaaaaaaaaaaaa
  2. using namespace std;
  3. int i;
  4. int main()
  5. {
  6.     struct Alunno
  7.     {
  8.         string nome;
  9.         string cognome;
  10.         int eta;
  11.         struct Alunno *next;
  12.     };
  13.     Alunno pAlunno;
  14.     cout << "Inserisci il nome" << endl;
  15.     cin >> pAlunno.nome;
  16.     cout << "Inserisci il cognome" << endl;
  17.     cin >> pAlunno.cognome;
  18.     cout << "Inserisci l'eta'" << endl;
  19.     cin >> pAlunno.eta;
  20.     Alunno qAlunno;
  21.     i=1;
  22.     do
  23.     {
  24.     cout << "Inserisci il nome" << endl;
  25.     cin >> qAlunno.nome;
  26.     cout << "Inserisci il cognome" << endl;
  27.     cin >> qAlunno.cognome;
  28.     cout << "Inserisci l'eta'" << endl;
  29.     cin >> qAlunno.eta;
  30.     i++;  
  31.     }
  32.     while(i<3);
  33.     system("pause");
  34. }


Mi potete aiutare???:-?:-?

PM Quote
Avatar
totipianurese (Member)
Pro


Messaggi: 168
Iscritto: 24/06/2008

Segnala al moderatore
Postato alle 18:24
Venerdì, 24/10/2008
Sono arrivato a ciò, correggetemi se ho commesso qualke errore (cmq il programma si compila, io mi chiedo solo se ho creato così due nodi concatenati).
Codice sorgente - presumibilmente C#

  1. #include <iostream>   //provaaaaaaaaaaaaaaa
  2. using namespace std;
  3. int i;
  4. int main()
  5. {
  6.     struct Alunno
  7.     {
  8.         string nome;
  9.         string cognome;
  10.         int eta;
  11.         struct Alunno *next;
  12.     };
  13.     Alunno uno;
  14.     cout << "Inserisci il nome" << endl;
  15.     cin >> uno.nome;
  16.     cout << "Inserisci il cognome" << endl;
  17.     cin >> uno.cognome;
  18.     cout << "Inserisci l'eta'" << endl;
  19.     cin >> uno.eta;
  20.    
  21.     Alunno due;
  22.     cout << "Inserisci il nome" << endl;
  23.     cin >> due.nome;
  24.     cout << "Inserisci il cognome" << endl;
  25.     cin >> due.cognome;
  26.     cout << "Inserisci l'eta'" << endl;
  27.     cin >> due.eta;
  28.     uno.next =&due;
  29.     system("pause");
  30. }


PM Quote
Avatar
Lego86 (Member)
Rookie


Messaggi: 30
Iscritto: 04/10/2008

Segnala al moderatore
Postato alle 20:28
Venerdì, 14/11/2008
Ho esattamente lo stesso problema, il fatto è che i miei professori di informatica sono quasi ebeti, come se i puntatori li avessero fatti sempre e solo in pascal, ma poi in tutto il mondo ci sono esempi di 10000 strutture diverse trane le liste, e non so più dove sbattere la testa.. please aiuto!

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 20:56
Venerdì, 14/11/2008
Testo quotato

Postato originariamente da totipianurese:

Sono arrivato a ciò, correggetemi se ho commesso qualke errore (cmq il programma si compila, io mi chiedo solo se ho creato così due nodi concatenati).
Codice sorgente - presumibilmente C#

  1. #include <iostream>   //provaaaaaaaaaaaaaaa
  2. using namespace std;
  3. int i;
  4. int main()
  5. {
  6.     struct Alunno
  7.     {
  8.         string nome;
  9.         string cognome;
  10.         int eta;
  11.         struct Alunno *next;
  12.     };
  13.     Alunno uno;
  14.     cout << "Inserisci il nome" << endl;
  15.     cin >> uno.nome;
  16.     cout << "Inserisci il cognome" << endl;
  17.     cin >> uno.cognome;
  18.     cout << "Inserisci l'eta'" << endl;
  19.     cin >> uno.eta;
  20.    
  21.     Alunno due;
  22.     cout << "Inserisci il nome" << endl;
  23.     cin >> due.nome;
  24.     cout << "Inserisci il cognome" << endl;
  25.     cin >> due.cognome;
  26.     cout << "Inserisci l'eta'" << endl;
  27.     cin >> due.eta;
  28.     uno.next =&due;
  29.     system("pause");
  30. }




nel codice che hai scritto tu è praticamente inutile nella struct dichiarare
struct Alunno *next;

PM Quote
Avatar
Lego86 (Member)
Rookie


Messaggi: 30
Iscritto: 04/10/2008

Segnala al moderatore
Postato alle 13:24
Lunedì, 17/11/2008
Capito, ma è mai possibile che in tutto il sito (o direi addirittura in tutta internet) non ci sia un esempio di lista a puntatori in c++? Please se le sapete fare caricatene uno!

Ultima modifica effettuata da Lego86 il 17/11/2008 alle 13:24
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 16:25
Domenica, 23/11/2008
Testo quotato

Postato originariamente da Lego86:

Capito, ma è mai possibile che in tutto il sito (o direi addirittura in tutta internet) non ci sia un esempio di lista a puntatori in c++? Please se le sapete fare caricatene uno!



devi usare un puntatore a puntatore:

Codice sorgente - presumibilmente C++

  1. #define NUM_ELE 10 // numero dei puntatori dell'array
  2. int **array;
  3. *array=(int *)malloc(NUM_ELE);
  4. for (int i=0;i<NUM_ELE;i++) {
  5.     array[i]=(int *)malloc(sizeof(int));
  6. }
  7. [...]
  8. for (int i=0;i<NUM_ELE;i++) {
  9.     free(array[i]);
  10. }
  11. free(array);


Ultima modifica effettuata da il 23/11/2008 alle 16:26
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 0:07
Martedì, 25/11/2008
Non ho ben capito ancora cosa volete capire... la domanda iniziale del topic era "come stampare la lista", ma vedo che c'è un po' di confusione anche su altre cose... cosa dovete fare? Una lista collegata (linked list, ugh che brutto dirlo in italiano) di alunni?

Ultima modifica effettuata da pierotofy il 25/11/2008 alle 0:08


Il mio blog: https://piero.dev
PM Quote
Avatar
totipianurese (Member)
Pro


Messaggi: 168
Iscritto: 24/06/2008

Segnala al moderatore
Postato alle 10:54
Martedì, 25/11/2008
Si, dovrei creare e stampare una lista collegata di N alunni.
Ecco il nuovo CODICE, però ci sono degli errori.

Codice sorgente - presumibilmente C#

  1. #include <iostream>  
  2. using namespace std;
  3. int *x,i,k,y;
  4. int main()
  5. {
  6.     i=0;
  7.     y=1;
  8.     struct lista
  9.     {
  10.         string nome;
  11.         string cognome;
  12.         int eta;
  13.         struct lista *punt;
  14.     };
  15.     cout << "Inserisci il numero di nodi da creare (min 3) = ";
  16.     cin >>k;
  17.     lista p;
  18.     cout <<y<< ") Inserisci il nome = ";
  19.     cin >> p.nome;
  20.     cout <<y<< ") Inserisci il cognome = ";
  21.     cin >> p.cognome;
  22.     cout <<y<< ") Inserisci l'eta = ";
  23.     cin >> p.eta;
  24.    
  25.     lista q;
  26.     p.punt =&q;
  27.     y++;
  28.     cout <<y<< ") Inserisci il nome = ";
  29.     cin >> q.nome;
  30.     cout <<y<< ") Inserisci il cognome = ";
  31.     cin >> q.cognome;
  32.     cout <<y<< ") Inserisci l'eta = ";
  33.     cin >> q.eta;
  34.     x=q.punt;     //qui c'è l'errore
  35.    
  36.     do
  37.     {
  38.     lista r;
  39.     r=&x;       //qui c'è l'errore
  40.     x=r.punt;  // qui c'è l'errore
  41.     y++;
  42.     cout <<y<< ") Inserisci il nome = ";
  43.     cin >> r.nome;
  44.     cout <<y<< ") Inserisci il cognome = ";
  45.     cin >> r.cognome;
  46.     cout <<y<< ") Inserisci l'eta = ";
  47.     cin >> r.eta;        
  48.     }
  49.     while(y+1<k);
  50.    
  51.     cout<<"STAMPA:"<<endl;
  52.     while (p.punt!=NULL)
  53.     {
  54.      cout<<p.nome<<endl;  
  55.      cout<<p.cognome<<endl;
  56.      cout<<p.eta<<endl;  
  57.      p=*p.punt;
  58.     }
  59.  
  60.     system("pause");
  61. }


Ultima modifica effettuata da totipianurese il 25/11/2008 alle 11:02
PM Quote
Avatar
gioser (Normal User)
Pro


Messaggi: 111
Iscritto: 03/10/2008

Segnala al moderatore
Postato alle 12:52
Martedì, 25/11/2008
C'erano un po' di errori... :)
questo dovrebbe funzionare

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. struct lista
  6. {
  7.     string nome;
  8.     string cognome;
  9.     int eta;
  10.     lista *punt;
  11. };
  12.  
  13.  
  14. int main()
  15. {
  16.     lista *pl;
  17.     lista **x;
  18.     int i,k,y;
  19.  
  20.     i=0;
  21.     y=1;
  22.  
  23.     cout << "Inserisci il numero di nodi da creare (min 3) = ";
  24.     cin >>k;
  25.     lista p;
  26.     cout <<y<< ") Inserisci il nome = ";
  27.     cin >> p.nome;
  28.     cout <<y<< ") Inserisci il cognome = ";
  29.     cin >> p.cognome;
  30.     cout <<y<< ") Inserisci l'eta = ";
  31.     cin >> p.eta;
  32.  
  33.     lista q;
  34.     p.punt =&q;
  35.     y++;
  36.     cout <<y<< ") Inserisci il nome = ";
  37.     cin >> q.nome;
  38.     cout <<y<< ") Inserisci il cognome = ";
  39.     cin >> q.cognome;
  40.     cout <<y<< ") Inserisci l'eta = ";
  41.     cin >> q.eta;
  42.     x=&q.punt;     //qui c'è l'errore
  43.  
  44.     do
  45.     {
  46.         lista *r = new lista;
  47.         r->punt = NULL;
  48.         *x=r;      
  49.         x = &r->punt;  
  50.         y++;
  51.         cout <<y<< ") Inserisci il nome = ";
  52.         cin >> r->nome;
  53.         cout <<y<< ") Inserisci il cognome = ";
  54.         cin >> r->cognome;
  55.         cout <<y<< ") Inserisci l'eta = ";
  56.         cin >> r->eta;        
  57.     }
  58.     while(y+1<k);
  59.  
  60.     cout<<"STAMPA:"<<endl;
  61.  
  62.    
  63.     for (pl = &p; pl!=NULL; pl = pl->punt)
  64.     {
  65.         cout<<pl->nome<<endl;  
  66.         cout<<pl->cognome<<endl;
  67.         cout<<pl->eta<<endl;  
  68.     }
  69.  
  70.     system("pause");
  71. }



Questo è un pò più ordinato

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. struct lista
  6. {
  7.     string nome;
  8.     string cognome;
  9.     int eta;
  10.     lista *next;
  11. };
  12.  
  13. void leggi_nodo(int y, lista *r)
  14. {
  15.     cout <<y<< ") Inserisci il nome = ";
  16.     cin >> r->nome;
  17.     cout <<y<< ") Inserisci il cognome = ";
  18.     cin >> r->cognome;
  19.     cout <<y<< ") Inserisci l'eta = ";
  20.     cin >> r->eta;        
  21. }
  22.  
  23. void stampa_nodo(lista *pl)
  24. {
  25.     cout<<pl->nome<<endl;  
  26.     cout<<pl->cognome<<endl;
  27.     cout<<pl->eta<<endl;  
  28. }
  29.  
  30. int main()
  31. {
  32.     lista *pl = NULL; // elemento corrente della lista
  33.     lista *head = NULL; // primo elemento della lista
  34.     lista *tail = NULL; // ultimo elemento della lista
  35.     int i = 0;
  36.     int k = 0;
  37.     int y = 0;
  38.  
  39.     cout << "Inserisci il numero di nodi da creare (min 1) = ";
  40.     cin >>k;
  41.    
  42.     for (y = 1; y <= k; ++y)
  43.     {
  44.         pl = new lista;
  45.         pl->next = NULL;
  46.         if (y == 1)
  47.             head = pl;
  48.         else
  49.             tail->next = pl;
  50.         leggi_nodo(y, pl);
  51.         tail = pl;
  52.     }
  53.  
  54.     cout<<"STAMPA:"<<endl;
  55.    
  56.     for (pl = head; pl != NULL; pl = pl->next)
  57.     {
  58.         stampa_nodo(pl);
  59.     }
  60.  
  61.     for (pl = head; pl != NULL;)
  62.     {
  63.         lista *r = pl;
  64.         pl = pl->next;
  65.         delete r;
  66.     }
  67.  
  68.     system("pause");
  69. }


Ultima modifica effettuata da gioser il 25/11/2008 alle 13:47
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo