Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - problemi nella lista
Forum - C/C++ - problemi nella lista

Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 19:04
Venerdì, 30/10/2009
ciao a tutti stò facendo una lista mediante la quale gestire un numero illimitato di studenti ma ho un problema nell'inserimento,infatti quando inserisco uno studente è come se non creasse il nuovo nodo mi sapete dire dove è l'errore nell'inserimento?:(

Codice sorgente - presumibilmente C++

  1. #include "stdafx.h"
  2. #include <iostream>
  3. using namespace std;
  4. #include <string>
  5.  
  6. struct alunno
  7. {
  8.  char nome [20];
  9.  char cognome[20];
  10.  char luogonascita[20];
  11.  char datanascita[20];
  12.  char classe[20];
  13.  int matricola;
  14.  int n;
  15.  alunno *succ;
  16. };
  17. alunno *testa;
  18. alunno *inizio;
  19. int flag3=0;
  20. void scrivi_coda(int flag3);
  21. void presenta_menu();
  22. void push(alunno *testa);
  23. int pop();
  24. void svuota_coda();
  25. int coda_vuota(int flag3);
  26. void main()
  27. {
  28.         int scelta,ns,flag,flag2;
  29.         flag2=0;
  30.         do
  31.         {
  32.                
  33.                 presenta_menu();
  34.                 cin>>scelta;
  35.                 cout<<endl;
  36.                 switch(scelta)
  37.                 {
  38.                 case(1):
  39.                         char vett[10],vett1[10],vett2[10],vett3[10],vett4[10],vett5[10];
  40.                         int num;
  41.                         cout<<"inserisci il nome inserire:"<<endl;
  42.                         cin>>vett;
  43.                         cout<<"inserisci il cognome"<<endl;
  44.                         cin>>vett1;
  45.                         cout<<"inserisci la classe"<<endl;
  46.                         cin>>vett2;
  47.                         cout<<"inserisci luogo di nascita"<<endl;
  48.                         cin>>vett3;
  49.                         cout<<"inserisci data di nascita"<<endl;
  50.                         cin>>vett4;
  51.                         cout<<"inserisci matricola"<<endl;
  52.                         cin>>num;
  53.                         if(flag3==0)
  54.                         {
  55.                                 testa=new alunno;
  56.                                 strcpy(testa->nome,vett);
  57.                                 strcpy(testa->cognome,vett1);
  58.                                 strcpy(testa->classe,vett2);
  59.                                 strcpy(testa->luogonascita,vett3);
  60.                                 strcpy(testa->datanascita,vett4);
  61.                                 inizio=testa;
  62.                                 flag3++;
  63.                                 push(testa);
  64.                         system("cls");
  65.                         }
  66.                         break;
  67.                 /*case 2:
  68.                         if(flag==0)
  69.                         {
  70.                                 system("cls");
  71.                                 cout<<"nessun elemento inserito"<<endl;
  72.                                 cout<<endl;
  73.                         }
  74.                         else
  75.                         {
  76.                                 flag=pop();
  77.                                 system("cls");
  78.                                 cout<<flag<<endl;
  79.                                 flag3--;
  80.                                 cout<<endl;
  81.                         }
  82.                         break;*/
  83.                 case 3:
  84.                         scrivi_coda(flag3);
  85.                         break;
  86.                 case 4:
  87.                         system("cls");
  88.                         svuota_coda();
  89.                         cout<<endl;
  90.                         break;
  91.                 case 5:
  92.                         flag2=1;
  93.                         break;
  94.                 default:
  95.                         cout<<"numero inseriro non corretto"<<endl;
  96.                 }
  97.  
  98.         }
  99.         while(flag2==0);
  100. system("pause");
  101. }
  102.  
  103.  
  104.  
  105.  
  106. void push(alunno *testa)
  107. {
  108.         alunno *nuovo;
  109.         nuovo=new alunno;
  110.         testa->succ=nuovo;
  111.         testa=nuovo;
  112. }
  113. /*int pop()
  114. {
  115.         alunno *appoggio;
  116.         int a;
  117.         a=inizio->n;
  118.         appoggio=inizio->succ;
  119.         delete(inizio);
  120.         inizio=appoggio;
  121.         return a;
  122. }*/
  123. void svuota_coda()
  124. {
  125.         alunno *appoggio;
  126.         int flag=coda_vuota(flag3);
  127.         if (flag!=1)
  128.         {
  129.                 for(int i=0;i<=flag3-1;i++)
  130.                 {
  131.                         appoggio=inizio->succ;
  132.                         delete (inizio);
  133.             inizio=appoggio;
  134.                 }
  135.         }
  136.         cout<<"lista vuota"<<endl;
  137.         flag3=0;
  138. }
  139.  
  140. int coda_vuota(int flag3)
  141. {
  142.         int s=0;
  143.         if(flag3==0)
  144.         {
  145.                 s=1;
  146.         }
  147.         return(s);
  148. }
  149.  
  150. void presenta_menu()
  151. {
  152.         cout<<"cosa vuoi fare"<<endl;
  153.         cout<<"1_inserire uno studente"<<endl;
  154.     cout<<"2_eliminare uno studente"<<endl;
  155.         cout<<"3_visualizza tutti i dati contenuti "<<endl;
  156.         cout<<"4_svuotare la lista "<<endl;
  157.         cout<<"5_per uscire"<<endl;
  158.         cout<<endl<<endl;
  159. }
  160. void scrivi_coda(int flag3)
  161. {
  162.         alunno *appoggio;
  163.         int i,flag=coda_vuota(flag3);
  164.  
  165.         system("cls");
  166.         if(flag!=1)
  167.         {
  168.                 for(appoggio=inizio,i=0;i<=flag3-1;i++,appoggio=appoggio->succ)
  169.                 {
  170.                         cout<<appoggio->nome<<endl;
  171. cout<<appoggio->cognome<<endl;
  172. cout<<appoggio->classe<<endl;
  173. cout<<appoggio->datanascita<<endl;
  174. cout<<appoggio->luogonascita<<endl;
  175. cout<<appoggio->matricola<<endl;
  176.                 }
  177.         }
  178.         else
  179.         {
  180.                 cout<<"la lista non contiene elementi"<<endl;
  181.                 cout<<endl<<endl;
  182.         }
  183. }



mille grazie a tutti

EDIT by HeDo: Per rendere più leggibile il codice racchiudilo tra i tag code, ora ci ho pensato io, ma la prossima volta più attenzione.

Ultima modifica effettuata da HeDo il 30/10/2009 alle 23:36


matteog
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 10:17
Sabato, 31/10/2009
Il primo lo inserisce, anche se manca l'informazione sulla matricola perche' manca la

riga testa->matricola=num;

Ma qual e' il codice per l'inserimento, dopo il primo elemento, che non funziona ?

Non c'e' proprio il codice !

Ultima modifica effettuata da theprogrammer il 31/10/2009 alle 10:18


- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote