salve a tutti...vorrei chiedere un aiuto riguardo un esercizio in c++ che devo fare. si tratta di gestire una rubrica telefonica con una lista. tutto bene, se non fosse che non riesco a capire come poter gestire la modifica di una voce (nome o numero) e successivo riordino (alfabetico) della rubrica.
posto qui sotto l'esercizio.
codice:#include<iostream.h> struct nodo{ //creazione della struttura nodo char numero[11]; std::string nome; nodo *next; nodo *prec; }; nodo *testa=NULL; nodo *appoggio=NULL; nodo *appoggio2=NULL; std::string s; int cont=0,h=0,f=0; nodo *q=testa,*p=testa; void creanodo (nodo *testa); void instesta (); void insmezzo(); nodo* ricerca (std::string s) ; void cancella (std::string s); void modifica(std::string s); void ordina(); int main () { int scelta=0; char risp; cout<<"******MENU*****\n\n"; while(scelta!=5){ cout<<"1.inserimento voce in rubrica\n"; cout<<"2.cancellazione voce della rubrica\n"; cout<<"3.ricerca voce nella rubrica\n"; cout<<"4.modifica voce\n"; cout<<"5.esci\n\n"; cin>>scelta; cout<<"\n\n"; if(scelta==1) { system("cls"); cont++; cout<<"E' il primo inserimento?(s=si n=no) : "; cin>>risp; cout<<"\n\n"; if((risp!='s')&&(risp!='n')) exit; if(risp=='s'){ creanodo(testa); instesta(); } if(risp=='n'){ creanodo(testa); insmezzo(); } } if(scelta==2) { system("cls"); if(cont==0) cout<<"rubrica vuota\n\n"; else{ cont--; cout<<"inserisci il nome : "; cin>>s; cout<<"\n\n"; cancella(s);} } if(scelta==3) { system("cls"); if(testa==NULL) cout<<"rubrica vuota\n\n"; else{ cout<<"inserisci il nome : "; cin>>s; cout<<"\n\n"; ricerca(s); cout<<"\n\n"; } } if(scelta==4) { system("cls"); if(testa==NULL) cout<<"rubrica vuota\n\n"; else{ cout<<"inserisci il nome : "; cin>>s; cout<<"\n\n"; //modifica(); cout<<"\n\n"; } } } exit; return 0; } void creanodo (nodo *testa) //creazione nuova voce { appoggio=new(nodo); cout<<"\n\ninserisci nome: "; cin>>appoggio->nome; cout<<"\n"; cout<<"inserisci numero : "; fflush(stdin); cin.getline(appoggio->numero,11); cout<<"\n\n"; appoggio->next=NULL; } void instesta (){ //inserimento voce in testa appoggio->next=NULL; testa=appoggio; cout<<" **rubrica** \n\n"; cout<<" "<<testa->nome; cout<<" "; cout<<testa->numero<<"\n\n\n\n"; } void insmezzo(){ //inserimento voce ordinato p=testa;q=testa; while((q!=NULL)&&(q->nome<appoggio->nome)){ p=q; q=q->next;} if(p->nome<appoggio->nome){ appoggio->next=q; p->next=appoggio; } else{ if(p==q){ testa=appoggio; appoggio->next=p;} if(p!=q){ appoggio->next=q; p->next=appoggio; } } q=testa; cout<<" **rubrica** \n\n"; while(q!=NULL) { cout<<" "<<q->nome; cout<<" "; cout<<q->numero<<"\n"; q=q->next; } cout<<"\n\n\n\n"; } nodo *ricerca (std::string s) //ricerca voce in rubrica { f=0; q=testa;p=testa; while(q!=NULL ){ if(q->nome==s) { f=2; cout<<"al nome '"<<q->nome<<"' corrisponde il numero : "; cout<<q->numero; cout<<endl<<endl; p=q; } q=q->next;} if(f==0) cout<<"voce non trovata\n\n"; return p; } void cancella (std::string s){ //cancellazione voce h=0; p=testa; q=testa; while((q!=NULL)&&(q->nome!=s)){ p=q; q=q->next;h=2;} if(q==NULL) cout<<"voce inesistente\n\n"; else{ if(p!=q){ appoggio=q; p->next=q->next; cout<<"la voce cancellata e' : "; cout<<appoggio->nome<<" "<<appoggio->numero<<"\n\n"; delete appoggio; } else{ appoggio=testa; testa=q->next; cout<<"la voce cancellata e' : "; cout<<appoggio->nome<<" "<<appoggio->numero<<"\n\n"; delete appoggio;}} if(testa==NULL) cout<<"rubrica vuota"; else{ q=testa; cout<<" **rubrica** \n\n"; while(q!=NULL) { cout<<" "<<q->nome; cout<<" "; cout<<q->numero<<"\n"; q=q->next; }} cout<<"\n\n\n\n"; } void modifica(){ // come faccio?? }

Rispondi quotando

