Elenet.net
0 voti

#include <iostream>
using namespace std;

struct classe {
                string nome;
                int numero;
                classe * prossimo;
               };

int main(int argc, char **argv)
{
    classe * p1, * p2;
    
    p1 = new (classe);
    
    p1->prossimo = NULL;
    
    cout<<" \n inserisci nome della classe ";
    cin>>p1->nome;
    
    cout<<" \n inserisci numero della classe ";
    cin>>p1->numero;
    
    p2 = new (classe);
    
    p2->prossimo=p1;
    
    cout<<" \n inserisci nome dell'altra classe ";
    cin>>p2->nome;
    
    cout<<" \n inserisci numero dell'altra classe ";
    cin>>p2->numero;
    
    p1=p2;
    
    while (p1->prossimo != NULL)
    {
        cout<<" \n nome classe "<<p1->nome;
        cout<<" \n numero classe "<<p1->numero;
        
        p1=p1->prossimo;
    }
    
    return 0;
}

Quando eseguo questo programma, inserisco la prima classe, poi la seconda, 

per esempio prima : 3E  seconda : 4E  mi stampa 40, come mai ? c'è qualche errore?? grazie

quesito posto 26 Marzo 2017 in Classe terza da ChiaraCarli Corsista (49 punti)
  

1 Risposta

+1 voto
Risposta migliore

C'è qualche inesattezza che vedremo in laboratorio..

Il modo migliore per provare l'esattezza dell'esercizio è quello di isolare il codice che non ti è chiaro.

Provare a fare la stampa di ogni singola riga di codice e vedere come si comporta il programma

ad esempio

  cout<<" \n inserisci nome della classe ";
    cin>>p1->nome;

      QUI FAI UNA STAMPA   cout<<p1->nome;   per vedere se ci sono anomalie

   
    cout<<" \n inserisci numero della classe ";
    cin>>p1->numero;

QUI FAI UNA STAMPA   cout<<p1->numero;   per vedere se ci sono anomalie di inserimento

cout<<" \n inserisci nome dell'altra classe ";
    cin>>p2->nome;
   QUI FAI UNA STAMPA   cout<<p2->nome;   per vedere se ci sono anomalie
    cout<<" \n inserisci numero dell'altra classe ";
    cin>>p2->numero;

FAI la STAMPA   cout<<p2->numero;   per vedere se ci sono anomalie

anche qui controlla il codice per vedere se i dati inseriti sono corretti

quando assegni i puntatori    p1=p2;  devi controllare

cout<<p1->numero ;   

cout<<p1-> nome;

se sono stati inseriti gli ultimi elementi
   

    while (p1->prossimo != NULL)
    {
        cout<<" \n nome classe "<<p1->nome;
        cout<<" \n numero classe "<<p1->numero;
        
        p1=p1->prossimo;
    }

risposta inviata 27 Marzo 2017 da Laura Guccione Corsista (149 punti)
Selezionata 27 Marzo 2017 da ChiaraCarli

Domande correlate

+2 voti
2 risposte
quesito posto 18 Marzo 2017 in Classe terza da Paolo Migliarba (31 punti) | 200 visite
+1 voto
3 risposte
quesito posto 18 Marzo 2017 in Classe terza da Paolo Migliarba (31 punti) | 199 visite
+2 voti
1 risposta
quesito posto 15 Marzo 2017 in Classe terza da ChiaraCarli Corsista (49 punti) | 106 visite
778 domande
1,565 risposte
639 commenti
1,445 utenti