Oppure

Loading
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?:(


#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
31/10/09 9:17
theprogrammer
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 31/10/09 9:18
aaa