Ciao ragazzi, Vi dico subito che non sono molto esperto con il C o il C++ , diciamo che sono quasi alle prime armi.
Ho scritto un programma che tramite una funzione menù consente di scegliere fra 6 opzioni e per ogni opzione ho scritto una funzione con uno switch(scelta).
Il programma funziona correttamente e avevo previsto un do-while per ripetere il programma da capo nel caso sia necessario . La condizione del do-while la inserivo sempre come int cioè facevo una scanf che permetteva di inserire i valori 0 o 1 rispettivamente per terminare il programma o ripartire da capo. In questo modo funziona ma se voglio sostituire la i valori 0 o 1 con 'S' o 'N' (char) il programma mi ripete sempre "reinserisci la scelta" (indifferentemente dal valore che immetto) . Come posso fare per far si che funzioni con S o N ?
Siccome non credo di essermi spiegato molto bene , vi incollo di seguito il programma principale che contiene (nelle ultime righe) la condizione del do-while .
codice:
main(){ int scelta,scelta2=0,scelta3=0;
char flag;
do{
system("cls");
scelta=menu();
switch(scelta){
case(1):
numeri_primi();
break;
case(2):
numeri_perfetti();
break;
case(3):
numeri_abbondanti();
break;
case(4):
numeri_amici();
break;
case(5):
do{ numeri_coprimi();
do{
printf("Ricominciare ? [1=Si][0=No]: ");
scanf("%d",&scelta2);}
while((scelta2<0)||(scelta2>1));}
while(scelta2==1);
break;
case(6):
do{ numeri_felici();
do{
printf("ricominciare ? [S/N]: ");
scanf("%d",&scelta3);}
while((scelta3<0)||(scelta3>1));}
while(scelta3==1);
break;}
do{ printf("vuoi tornare al menu ? S/N: ");
getchar();
scanf("%c",&flag);
}while((flag!='S')||(flag!='N'));
}while(flag=='S');
}