30/10/09 18:04
matteog
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?
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.
#include "stdafx.h" #include <iostream> using namespace std; #include <string> struct alunno { char nome [20]; char cognome[20]; char luogonascita[20]; char datanascita[20]; char classe[20]; int matricola; int n; alunno *succ; }; alunno *testa; alunno *inizio; int flag3=0; void scrivi_coda(int flag3); void presenta_menu(); void push(alunno *testa); int pop(); void svuota_coda(); int coda_vuota(int flag3); void main() { int scelta,ns,flag,flag2; flag2=0; do { presenta_menu(); cin>>scelta; cout<<endl; switch(scelta) { case(1): char vett[10],vett1[10],vett2[10],vett3[10],vett4[10],vett5[10]; int num; cout<<"inserisci il nome inserire:"<<endl; cin>>vett; cout<<"inserisci il cognome"<<endl; cin>>vett1; cout<<"inserisci la classe"<<endl; cin>>vett2; cout<<"inserisci luogo di nascita"<<endl; cin>>vett3; cout<<"inserisci data di nascita"<<endl; cin>>vett4; cout<<"inserisci matricola"<<endl; cin>>num; if(flag3==0) { testa=new alunno; strcpy(testa->nome,vett); strcpy(testa->cognome,vett1); strcpy(testa->classe,vett2); strcpy(testa->luogonascita,vett3); strcpy(testa->datanascita,vett4); inizio=testa; flag3++; push(testa); system("cls"); } break; /*case 2: if(flag==0) { system("cls"); cout<<"nessun elemento inserito"<<endl; cout<<endl; } else { flag=pop(); system("cls"); cout<<flag<<endl; flag3--; cout<<endl; } break;*/ case 3: scrivi_coda(flag3); break; case 4: system("cls"); svuota_coda(); cout<<endl; break; case 5: flag2=1; break; default: cout<<"numero inseriro non corretto"<<endl; } } while(flag2==0); system("pause"); } void push(alunno *testa) { alunno *nuovo; nuovo=new alunno; testa->succ=nuovo; testa=nuovo; } /*int pop() { alunno *appoggio; int a; a=inizio->n; appoggio=inizio->succ; delete(inizio); inizio=appoggio; return a; }*/ void svuota_coda() { alunno *appoggio; int flag=coda_vuota(flag3); if (flag!=1) { for(int i=0;i<=flag3-1;i++) { appoggio=inizio->succ; delete (inizio); inizio=appoggio; } } cout<<"lista vuota"<<endl; flag3=0; } int coda_vuota(int flag3) { int s=0; if(flag3==0) { s=1; } return(s); } void presenta_menu() { cout<<"cosa vuoi fare"<<endl; cout<<"1_inserire uno studente"<<endl; cout<<"2_eliminare uno studente"<<endl; cout<<"3_visualizza tutti i dati contenuti "<<endl; cout<<"4_svuotare la lista "<<endl; cout<<"5_per uscire"<<endl; cout<<endl<<endl; } void scrivi_coda(int flag3) { alunno *appoggio; int i,flag=coda_vuota(flag3); system("cls"); if(flag!=1) { for(appoggio=inizio,i=0;i<=flag3-1;i++,appoggio=appoggio->succ) { cout<<appoggio->nome<<endl; cout<<appoggio->cognome<<endl; cout<<appoggio->classe<<endl; cout<<appoggio->datanascita<<endl; cout<<appoggio->luogonascita<<endl; cout<<appoggio->matricola<<endl; } } else { cout<<"la lista non contiene elementi"<<endl; cout<<endl<<endl; } }
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 30/10/09 22:36
aaa