Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Vuoi continuare S/N?
Forum - C/C++ - Vuoi continuare S/N?

Avatar
sonosara (Normal User)
Newbie


Messaggi: 4
Iscritto: 03/05/2014

Segnala al moderatore
Postato alle 15:11
Sabato, 03/05/2014
Ciao! AIUTOOOOOOOOO!
Grazie in anticipo a chi vorrà aiutarmi :love:
Sto impazzendo!!!! :om:
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++

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int main(){
  4.     int scelta, n1, n2;
  5.     char s; //PER IL VUOI CONTINUARE
  6. printf("************************************************************************\n");
  7. printf("*                          OPERAZIONI                                  *\n");
  8. printf("************************************************************************\n\n");
  9.     //finché la condizione (cioè scelta) non è diversa da 5, ripeti il ciclo
  10.     do {
  11.     //acquisizione dati
  12.         printf("Inserire il primo numero: ");
  13.         scanf("%d",&n1);
  14.         printf("Inserire il secondo numero: ");
  15.         scanf("%d",&n2);
  16.         printf("\nScegliere tra le seguenti opzioni:\n1) Addizione\n2) Sottrazione\n3) Moltiplicazione\n4) Divisione\n5) Esci\n\nScelta: ");
  17.         scanf("%d",&scelta);
  18.     //switch con i vari casi di operazione
  19.         switch(scelta){
  20.             case 1:
  21.                 printf("\nRisultato: %d + %d = %d\n\n",n1,n2,n1+n2);
  22.                 break;
  23.             case 2:
  24.                 printf("\nRisultato: %d - %d = %d\n\n",n1,n2,n1-n2);
  25.                 break;
  26.             case 3:
  27.                 printf("\nRisultato: %d * %d = %d\n\n",n1,n2,n1*n2);
  28.                 break;
  29.             case 4:
  30.                 printf("\nRisultato: %d / %d = %f\n\n",n1,n2,(float)n1/n2);
  31.                 break;
  32.             case 5:
  33.                 break;
  34.             default: //Nel caso il valore di scelta non sia uno di quelli sopra elencati...
  35.                 printf("\nScelta errata, riprova\n");      
  36.                       }
  37.                       printf("Vuoi continuare? S/N ");//PER IL VUOI CONTINUARE
  38.                       scanf("%c",&s);//PER IL VUOI CONTINUARE
  39.        }
  40.     while(s=='s');//PER IL VUOI CONTINUARE
  41.     while(scelta !=5);
  42.     system ("pause");
  43. }


PM Quote
Avatar
R0gerBlack (Member)
Expert


Messaggi: 210
Iscritto: 10/06/2010

Segnala al moderatore
Postato alle 15:22
Sabato, 03/05/2014
Sostituisci  scanf("%c",&s);
con
Codice sorgente - presumibilmente Plain Text

  1. scanf("%s",&s); //PER IL VUOI CONTINUARE



e utilizza il do while in questo modo

Codice sorgente - presumibilmente Plain Text

  1. 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


Volere è potere.

Se la conoscenza crea problemi, non è con l'ignoranza che si risolvono [Isaac Asimov]
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5714
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 0:02
Domenica, 04/05/2014
Il programma deve concludersi così

Codice sorgente - presumibilmente C/C++

  1. printf("Vuoi continuare? S/N ");
  2.         scanf(" %c",&s);
  3.  
  4.         } while(s=='s' || s=='S');
  5.    
  6.         return 0;
  7. }



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à.
PM Quote
Avatar
R0gerBlack (Member)
Expert


Messaggi: 210
Iscritto: 10/06/2010

Segnala al moderatore
Postato alle 3:12
Domenica, 04/05/2014
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

  1. scanf(" %c, &s);

Anche quella dovrebbe funzionare

Ultima modifica effettuata da R0gerBlack il 04/05/2014 alle 3:20


Volere è potere.

Se la conoscenza crea problemi, non è con l'ignoranza che si risolvono [Isaac Asimov]
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5714
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 9:43
Domenica, 04/05/2014
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à.
PM Quote
Avatar
sonosara (Normal User)
Newbie


Messaggi: 4
Iscritto: 03/05/2014

Segnala al moderatore
Postato alle 10:17
Domenica, 04/05/2014
Testo quotato

Postato originariamente da nessuno:

  



Ti ringrazio Nessuno, funziona perfettamente :k:, ma mi spieghi lo spazio prima del %c?
GRAZIE!!!!!
Sara

PM Quote
Avatar
sonosara (Normal User)
Newbie


Messaggi: 4
Iscritto: 03/05/2014

Segnala al moderatore
Postato alle 10:57
Domenica, 04/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?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5714
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 13:54
Domenica, 04/05/2014
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à.
PM Quote