sonosara (Normal User)
Newbie
Messaggi: 4
Iscritto: 03/05/2014
|
Ciao! AIUTOOOOOOOOO!
Grazie in anticipo a chi vorrà aiutarmi
Sto impazzendo!!!!
Vorrei che, dopo aver fatto la scelta di una delle operazioni, l'utente abbia la possibilità di rispondere alla domanda:
Vuoi continuare? S/N.
Mi sto incartando perché è già presente un do while per le scelte da 1 a 5 che deve rimanere.
Il codice senza l'implementazione del S/N funziona, ma quando aggiungo le righe per gestire quest'ultimo,
non va.
Ho commentato le righe per gestire il S/N.
Grazie ancora!
Sara
Codice sorgente - presumibilmente C++ |
#include<stdio.h> #include<stdlib.h> int main(){ int scelta, n1, n2; char s; //PER IL VUOI CONTINUARE printf("************************************************************************\n"); printf("* OPERAZIONI *\n"); printf("************************************************************************\n\n"); //finché la condizione (cioè scelta) non è diversa da 5, ripeti il ciclo do { //acquisizione dati printf("Inserire il primo numero: "); scanf("%d",&n1); printf("Inserire il secondo numero: "); scanf("%d",&n2); printf("\nScegliere tra le seguenti opzioni:\n1) Addizione\n2) Sottrazione\n3) Moltiplicazione\n4) Divisione\n5) Esci\n\nScelta: "); scanf("%d",&scelta); //switch con i vari casi di operazione switch(scelta){ case 1: printf("\nRisultato: %d + %d = %d\n\n",n1,n2,n1+n2); break; case 2: printf("\nRisultato: %d - %d = %d\n\n",n1,n2,n1-n2); break; case 3: printf("\nRisultato: %d * %d = %d\n\n",n1,n2,n1*n2); break; case 4: printf("\nRisultato: %d / %d = %f\n\n",n1,n2,(float)n1/n2); break; case 5: break; default: //Nel caso il valore di scelta non sia uno di quelli sopra elencati... printf("\nScelta errata, riprova\n"); } printf("Vuoi continuare? S/N ");//PER IL VUOI CONTINUARE scanf("%c",&s);//PER IL VUOI CONTINUARE } while(s=='s');//PER IL VUOI CONTINUARE while(scelta !=5); system ("pause"); }
|
|
|
R0gerBlack (Member)
Expert
Messaggi: 210
Iscritto: 10/06/2010
|
Sostituisci scanf("%c",&s);
con
Codice sorgente - presumibilmente Plain Text |
scanf("%s",&s); //PER IL VUOI CONTINUARE
|
e utilizza il do while in questo modo
Codice sorgente - presumibilmente Plain Text |
while(s=='s' && scelta !=5); //PER IL VUOI CONTINUARE
|
Il do while non ammette while accodati. Ultima modifica effettuata da R0gerBlack il 03/05/2014 alle 15:23 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Il programma deve concludersi così
Codice sorgente - presumibilmente C/C++ |
printf("Vuoi continuare? S/N ");
scanf(" %c",&s);
} while(s=='s' || s=='S');
return 0;
}
|
Nota lo spazio nella scanf prima di %c
P.S. NON devi usare scanf("%s",&s) dato che s è un semplice char e non un array di char ... altrimenti potresti avere un crash
Ultima modifica effettuata da nessuno il 04/05/2014 alle 0:03
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
R0gerBlack (Member)
Expert
Messaggi: 210
Iscritto: 10/06/2010
|
Dove lo vedi l'array di char?
EDIT: non avevo compreso bene la frase, comunque non male l'idea dello spazio
Codice sorgente - presumibilmente Plain Text |
Anche quella dovrebbe funzionare
Ultima modifica effettuata da R0gerBlack il 04/05/2014 alle 3:20 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Postato originariamente da R0gerBlack:
Dove lo vedi l'array di char?
Appunto ... non c'è l'array quindi non puoi usare la %s
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
sonosara (Normal User)
Newbie
Messaggi: 4
Iscritto: 03/05/2014
|
Postato originariamente da nessuno:
|
Ti ringrazio Nessuno, funziona perfettamente , ma mi spieghi lo spazio prima del %c?
GRAZIE!!!!!
Sara |
|
sonosara (Normal User)
Newbie
Messaggi: 4
Iscritto: 03/05/2014
|
E' corretto dire che lo spazio è necessario perché scanf non elimina eventuali invii a capo e spazi lasciati in memoria da scanf precedenti?
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Sì ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|