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++ - Ho fatto la mia prima calcolatrice, mi servono consigli e chiarimenti!
Forum - C/C++ - Ho fatto la mia prima calcolatrice, mi servono consigli e chiarimenti!

Avatar
sebas (Normal User)
Newbie


Messaggi: 6
Iscritto: 14/08/2014

Segnala al moderatore
Postato alle 17:12
Giovedì, 14/08/2014
Codice sorgente - presumibilmente Plain Text

  1.  


#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

PM Quote
Avatar
tuttodiMC (Normal User)
Expert


Messaggi: 318
Iscritto: 29/10/2012

Segnala al moderatore
Postato alle 21:08
Venerdì, 15/08/2014
Non mi sono chiare alcune cose tipo

Codice sorgente - presumibilmente C/C++

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



Assembly is the way
PM Quote
Avatar
AdaBayer (Normal User)
Newbie


Messaggi: 5
Iscritto: 16/11/2014

Segnala al moderatore
Postato alle 22:53
Domenica, 16/11/2014
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 il 16/11/2014 alle 22:56
PM Quote