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: 5475
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 ...
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: 5475
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 ...
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: 5475
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 ...
PM Quote