Oppure

Loading
14/08/14 15:12
sebas


#include <iostream>
using namespace std;
int main()
{
    cout << " Calcolatrice\n";
    cout << "Per usare la calcolatrice inserire in questo ordine:\n";
    cout << "Primo numero\segno operatore\secondo numero\n";
    int a(0), b(0);
    char segno(0);
    int result(0);
    cin >> a;
    cin >> segno;
    cin >> b;
    switch (segno)
    {
    case '+':
        result = (a + b);
        cout << result << endl;
    case '-':
        result = a - b;
        cout << result << endl;
    case '*':
        result = a * b;
        cout << result << endl;
    case '/':
        result = a / b;
        cout << result << endl;
    }
    
    
    system("pause";);
}


Le domande sono:

1) "Perchè mi stampa un 1 sullo schermo dopo il risultato?"
2) "Come facco a far rieseguire il programma da capo o da un punto preciso?"
3) "Come faccio a dire al programma di fare un addizzione ad esempio solo premendo il + e senza dopo premere invio? Su qb64 si usa inkey$"
4) "Come si gestiscono gli input non inclusi nei case? Se premo a invece che uno dei 4 segni il programma termina, come gli dico che se l'input non è nessuno di quelli gestiti faccia una cosa specifica come stampare: "Non riconosco il segno" e ripartire dal punto in cui chiede il segno?"

Vi ringrazio in anticipo
aaa
15/08/14 19:08
tuttodiMC
Non mi sono chiare alcune cose tipo

int result(0)


Cos'è?

Poi ricorda che alla fine di un istruzione case ci va sempre il break.

Per quanto riguarda le domande 2 e 3 (che ho cercato di tradurre in italiano) devi inserire il blocco in cui esegui il calcolo in un iterazione dipendente dalla scelta dell'utente, mentre se vuoi usare il simbolo + come pensi tu dovresti far scrivere tutto in una stringa unica da splittare, il che diventa molto più complicato.

Infine per verificare che sia stato utilizzato uno dei 4 simboli alla fine dello switch devi inserire un'etichetta default: in cui scriversi le istruzioni da eseguire nel caso che segno sia diverso dai 4 segni aritmetici.

Ciaoo.

aaa
16/11/14 21:53
AdaBayer
Affinché il programma vada avanti con switch case solo se l'utente ha inserito uno dei quattro segni, io racchiuderei swtch in un if che verifichi il segno. Quindi, prima di "switch (segno).." metti if (segno=="+" | segno=="-" | segno =="*" | segno=="/";) { switch (segno) ....con tutti i casi che hai scritto ... } else cout << "\nErrore segno\n";
oppure una soluzione più elegante è quella di far reinserire il segno se l'utente ha sbagliato, in questo caso racchiudi la parte dove prendi in input il segno in un ciclo while....
Poi la cosa che si butta subito nell'occhio è la mancanza di "break;" alla fine di ogni "case", come ha già detto tuttodiMC.
Per quanto riguarda la domanda di come far ripetere il programma, direi di fare un menu di questo tipo
int risp;
do
{ cout << "\n1. Calcolatrice;\n2. Esci\nDigitare l'opzione...\t"; cin >> risp;
if (risp==1)
{ //il corpo del tuo programma: prendo in input i dati, eseguo i calcoli...
}
}
while (risp!=2);

Ah poi io non ho capito, qunado tu scrivi int a(0); con "(0)" lo stai inizializzando? Perché per qunato ne sappia io, dovresti scrivere int a =0;

Spero di essere stata d'aiuto, e spero di non aver commesso errori;)



Ultima modifica effettuata da AdaBayer 16/11/14 21:56
aaa