PDA

View Full Version : [C++]problema con la terminaizone di un programma


drunkenpenguin
31-08-2010, 13:50
In poche parole vorrei scrivere un programma che svolge varie operazioni a seconda della scelta fatta con switch.
Il problema è che, una volta terminata la funzione scelta con switch, il programma termina senza poter fare ulteriori scelte.

Come posso far rieseguire la scelta finché non si vuole uscire?

posto il codice nel caso possa servire a qualcosa:
#include <iostream>

using namespace std;

struct puffo{
char nome[10];
char professione[15];
puffo *prox;
};

void ins(puffo *&testa);

void cerca(puffo *&testa);

void puffiamo(puffo *&testa);


int main(){
int x;
puffo *inizio=NULL;

cout<<"Ciao, benvenuto in Puffolandia, cosa vuoi fare?"<<endl;
cout<<"1.Inserire un puffo"<<endl<<"2.Cercare un puffo"<<endl;
cout<<"3.Puffarsi la puffetta..."<<endl;

cin>>x;
if((x>4)||(x<1)) {
cout<<"vai alla puffoscuola a imparare i numeri puffostolto"<<endl;
return 0;
}

switch(x){
case 1:
ins(inizio);
break;
case 2: //MI SA' CHE PROBLEMA E
cerca(inizio); //SOLUZIONE STANNO DA
break; //QUESTE PARTI, POSSIBILE?
case 3:
puffiamo(inizio);
break;
case 4:
cout<<"un bona dai puffi"<<endl;

}




}

void ins(puffo *&testa){
puffo *tmp, *tmp2;
tmp2=testa;
tmp = new puffo;
cout<<"inserire il nome del puffo:"<<endl;
cin>>tmp->nome;
cout<<"inserire la professione del puffo:"<<endl;
cin>>tmp->professione;
tmp->prox=NULL;

if(testa==NULL) testa=tmp;
else{
while(tmp2->prox!=NULL) tmp2=tmp2->prox;
tmp2->prox=tmp;
}
}


void cerca(puffo *&testa){
char n[10];
cout<<"inserire il nome del puffo da cercare"<<endl;
cin>>n;
puffo *Tmp;
Tmp=testa;
while((Tmp->nome) != n) Tmp=Tmp->prox;
if((Tmp->prox==NULL)&&(Tmp->nome!=n))cout<<"il puffo che stai cercando non puffa nella lista"<<endl;
else cout<<"il puffo "<<n<<"di lavoro fa': "<<endl<<Tmp->professione<<"."<<endl;
}

void puffiamo(puffo *&testa){
char *puffetta = "puffetta";
puffo *puf;
puf=testa;
while(puf->nome!=puffetta)puf=puf->prox;
if((puf->prox==NULL)&&(puf->nome!=puffetta))cout<<"e oggi si rimane senza chiavare...puffetta non c'e'..."<<endl;
else cout<<"AAAHHHHH, OOOHHHH, UUUUUHHHHHHH"<<endl;
}

shinya
31-08-2010, 14:07
Come posso far rieseguire la scelta finché non si vuole uscire?
Con un puffociclo!

...
do {
cin >> x;
...
... puffandezze varie ...
...
} while (x != 4);

drunkenpenguin
31-08-2010, 14:12
arcipuffolina...è quello che pensavo anche io...però mi rimane dentro le funzioni inserisci/ricerca/puffiamo e non ne esce...

avevo scritto cosìdo{
cin>>x;
if((x>4)||(x<1)) {
cout<<"vai alla puffoscuola a imparare i numeri puffostolto"<<endl;
return 0;
}


switch(x){
case 1:
ins(inizio);
break;
case 2:
cerca(inizio);
break;
case 3:
puffiamo(inizio);
break;



}
}while(x!=4);
cout<<"un bona dai puffi"<<endl;
return 0;

Opcode
31-08-2010, 17:14
Con un puffociclo!

...
do {
cin >> x;
...
... puffandezze varie ...
...
} while (x != 4);

Posso ammirarti?
è la risposta più simpatica che mi sarei mai aspettato di vedere qui :D

By the way, scusate per l'ot ma non riuscivo a trattenermi.