Oppure

Loading
23/10/08 17:03
totipianurese
Ciao raga, non so come fare per far stampare infine i nodi caricati:
#include <iostream>   //provaaaaaaaaaaaaaaa
using namespace std;
int i;
int main()
{ 
    struct Alunno 
    { 
        string nome; 
        string cognome; 
        int eta; 
        struct Alunno *next;
    };
    Alunno pAlunno; 
    cout << "Inserisci il nome" << endl; 
    cin >> pAlunno.nome; 
    cout << "Inserisci il cognome" << endl; 
    cin >> pAlunno.cognome; 
    cout << "Inserisci l'eta'" << endl; 
    cin >> pAlunno.eta;
    Alunno qAlunno;
    i=1;
    do
    {
    cout << "Inserisci il nome" << endl; 
    cin >> qAlunno.nome; 
    cout << "Inserisci il cognome" << endl; 
    cin >> qAlunno.cognome; 
    cout << "Inserisci l'eta'" << endl; 
    cin >> qAlunno.eta; 
    i++;   
    }
    while(i<3);
    system("pause"); 
}

Mi potete aiutare???:-?:-?
aaa
24/10/08 16:24
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).
#include <iostream>   //provaaaaaaaaaaaaaaa
using namespace std;
int i;
int main()
{ 
    struct Alunno 
    { 
        string nome; 
        string cognome; 
        int eta; 
        struct Alunno *next;
    };
    Alunno uno; 
    cout << "Inserisci il nome" << endl; 
    cin >> uno.nome; 
    cout << "Inserisci il cognome" << endl; 
    cin >> uno.cognome; 
    cout << "Inserisci l'eta'" << endl; 
    cin >> uno.eta;
    
    Alunno due;
    cout << "Inserisci il nome" << endl; 
    cin >> due.nome; 
    cout << "Inserisci il cognome" << endl; 
    cin >> due.cognome; 
    cout << "Inserisci l'eta'" << endl; 
    cin >> due.eta;
    uno.next =&due;
    system("pause"); 
}
aaa
14/11/08 19:28
Lego86
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!
aaa
14/11/08 19:56
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).
#include <iostream>   //provaaaaaaaaaaaaaaa
using namespace std;
int i;
int main()
{ 
    struct Alunno 
    { 
        string nome; 
        string cognome; 
        int eta; 
        struct Alunno *next;
    };
    Alunno uno; 
    cout << "Inserisci il nome" << endl; 
    cin >> uno.nome; 
    cout << "Inserisci il cognome" << endl; 
    cin >> uno.cognome; 
    cout << "Inserisci l'eta'" << endl; 
    cin >> uno.eta;
    
    Alunno due;
    cout << "Inserisci il nome" << endl; 
    cin >> due.nome; 
    cout << "Inserisci il cognome" << endl; 
    cin >> due.cognome; 
    cout << "Inserisci l'eta'" << endl; 
    cin >> due.eta;
    uno.next =&due;
    system("pause"); 
}


nel codice che hai scritto tu è praticamente inutile nella struct dichiarare
struct Alunno *next;
17/11/08 12:24
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!
Ultima modifica effettuata da Lego86 17/11/08 12:24
aaa
23/11/08 15:25
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:

#define NUM_ELE 10 // numero dei puntatori dell'array
int **array;
*array=(int *)malloc(NUM_ELE);
for (int i=0;i<NUM_ELE;i++) {
    array[i]=(int *)malloc(sizeof(int));
}
[...]
for (int i=0;i<NUM_ELE;i++) {
    free(array[i]);
}
free(array);
Ultima modifica effettuata da 23/11/08 15:26
24/11/08 23:07
pierotofy
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 24/11/08 23:08
Il mio blog: piero.dev
25/11/08 9:54
totipianurese
Si, dovrei creare e stampare una lista collegata di N alunni.
Ecco il nuovo CODICE, però ci sono degli errori.

#include <iostream>   
using namespace std;
int *x,i,k,y;
int main()
{ 
    i=0;
    y=1;
    struct lista 
    { 
        string nome; 
        string cognome; 
        int eta; 
        struct lista *punt;
    };
    cout << "Inserisci il numero di nodi da creare (min 3) = ";
    cin >>k;
    lista p; 
    cout <<y<< ") Inserisci il nome = "; 
    cin >> p.nome; 
    cout <<y<< ") Inserisci il cognome = "; 
    cin >> p.cognome; 
    cout <<y<< ") Inserisci l'eta = "; 
    cin >> p.eta;
    
    lista q;
    p.punt =&q;
    y++;
    cout <<y<< ") Inserisci il nome = "; 
    cin >> q.nome; 
    cout <<y<< ") Inserisci il cognome = "; 
    cin >> q.cognome; 
    cout <<y<< ") Inserisci l'eta = "; 
    cin >> q.eta;
    x=q.punt;     //qui c'è l'errore
    
    do
    {
    lista r;
    r=&x;       //qui c'è l'errore
    x=r.punt;  // qui c'è l'errore
    y++;
    cout <<y<< ") Inserisci il nome = "; 
    cin >> r.nome; 
    cout <<y<< ") Inserisci il cognome = "; 
    cin >> r.cognome; 
    cout <<y<< ") Inserisci l'eta = "; 
    cin >> r.eta;         
    }
    while(y+1<k);
    
    cout<<"STAMPA:"<<endl;
    while (p.punt!=NULL)
    {
     cout<<p.nome<<endl;   
     cout<<p.cognome<<endl;
     cout<<p.eta<<endl;  
     p=*p.punt;
    }

    system("pause"); 
}
Ultima modifica effettuata da totipianurese 25/11/08 10:02
aaa