Piccole modifiche che fanno la diferenza.
1. Impara ad usare il debug.
2. Impara ad usare while-do. Il tuo programma va in crash per colpa del do-while del tipo.
3. Impara ad usare i code tags come da regolamento
4. Leggere il regolamento prima di scrivere. (Anche se questo è il punto 1 in realtà)
# include <iostream>
# include <fstream>
# include <string>
using namespace std;
struct lista{
int mat;
lista*succ;
};
lista* testa;
void inizializza()
{
testa=NULL;
}
bool listavuota()
{
return (testa == NULL);
}
void inserisci()
{
int mat,ri;
ofstream file("temp.txt");
do{
cout<<"dimmi la matricola da inserire"<<endl;
cin>>mat;
file<<mat<<endl;
cout<<"digita 0 per continuare a inserire matricole"<<endl;
cin>>ri;
}while(ri==0);
file.close();
}
void crealista()
{
int mat;
lista *nuovo;
lista *temp;
lista *prec;
ifstream file("temp.txt");
while(file>>mat)
{
nuovo=new lista;
cout<< "matricola:"<<mat<<endl;
nuovo->mat=mat;
nuovo->succ=NULL;
if(testa==NULL) testa=nuovo;
else
{
if(testa->mat >= nuovo->mat)
{
temp=testa;
testa=nuovo;
testa->succ=temp;
}
else
{
temp=testa;
while(temp!=NULL && nuovo->mat>=temp->mat)
{
prec=temp;
temp=temp->succ;
}
nuovo->succ=temp;
prec->succ=nuovo;
}
}
}
}
void visualizza()
{
lista *g;
g=testa;
while(g != NULL)
{
cout<<g->mat<<endl;
g=g->succ;
}
}
int ricmat()
{
int mat = 0;
cout<<"dammi la matricola da ricercare"<<endl;
cin>>mat;
lista *p;
p=testa;
while(p!=NULL)
{
cout<<p->mat<<endl;
if(p->mat==mat) cout<<"la matricola e' presente"<<endl;
else p=p->succ;
}
return mat;
}
int main()
{
int scelta,risp;
do
{
cout<<"________________________________________"<<endl;
cout<<"GESTIONE MATRICOLE UNIVERSITARIE"<<endl;
cout<<" 1. inserire matricole nel file"<<endl;
cout<<" 2. crea la lista "<<endl;
cout<<" 3. ricercare una matricola"<<endl;
cout<<" 4. visualizzare la lista"<<endl;
cout<<" scegli l'operazione"<<endl;
cin>>scelta;
cout<<"__________________________________________"<<endl;
switch(scelta)
{
case 1:inserisci();
break;
case 2:crealista();
break;
case 3:ricmat();
break;
case 4:visualizza();
break;
}
cout<<"digita 0 per ritornare al menu\' principale"<<endl;
cin>>risp;
}while(risp==0);
system ("pause");
}