Oppure

Loading
03/05/14 13:11
sonosara
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

#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");
}
aaa
03/05/14 13:22
R0gerBlack
Sostituisci scanf("%c",&s);
con
 scanf("%s",&s); //PER IL VUOI CONTINUARE


e utilizza il do while in questo modo

while(s=='s' && scelta !=5); //PER IL VUOI CONTINUARE


Il do while non ammette while accodati.
Ultima modifica effettuata da R0gerBlack 03/05/14 13:23
aaa
03/05/14 22:02
nessuno
Il programma deve concludersi così

        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 03/05/14 22: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à.
04/05/14 1:12
R0gerBlack
Dove lo vedi l'array di char?

EDIT: non avevo compreso bene la frase, comunque non male l'idea dello spazio
scanf(" %c, &s);
Anche quella dovrebbe funzionare
Ultima modifica effettuata da R0gerBlack 04/05/14 1:20
aaa
04/05/14 7:43
nessuno
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à.
04/05/14 8:17
sonosara
Postato originariamente da nessuno:



Ti ringrazio Nessuno, funziona perfettamente :k:, ma mi spieghi lo spazio prima del %c?
GRAZIE!!!!!
Sara
aaa
04/05/14 8:57
sonosara
E' corretto dire che lo spazio è necessario perché scanf non elimina eventuali invii a capo e spazi lasciati in memoria da scanf precedenti?
aaa
04/05/14 11:54
nessuno
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à.