PDA

Visualizza la versione completa : [C++] Calcolatrice con 4 operazioni aritmetiche


marcos666
09-02-2011, 17:47
Salve, avrei un problema con questo programma che cerca di far imparare ad un utente le 4 operazione aritmetiche fondamentali, il programma li chiede che quale operazione vuole scegliere, a continuazione li da due numeri e lui deve dare la risposta corretta altrimenti riprova.
il problema che ho creato una funzione per creare questi due numeri di forma casuale, poi entra nel while , fa inserire la risposta all utente ,ma se la risposta giusta non entra nel if in cui le dice bravo ecc.
vorrei sapere come posso aggiustarlo
grazie
Marcos


#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

int numCasuali (int,int);

int main() {

srand (time (NULL));
int a,b,scelta,risposta,totale,elogio,rimprovero;
cout<<"benvenuto,imparerai le 4 operazione aritmetiche"<<endl;
cout<<"sceglie 1:somma, 2:sottrazione, 3:molti, 4:divisione"<<endl;

cin>> scelta;

while (scelta==1)
{
cout<<"quanto fa :"<<endl;

numCasuali (a,b);

totale = a+b;
cin>>risposta;






if (risposta==totale)
{
elogio = rand()%4+1;




if (elogio==1)
{
cout<<"bravo"<<endl;

}

if (elogio==2)
{
cout<<"eccellente"<<endl;

}

if (elogio==3)
{
cout<<"continua cosi"<<endl;

}

if (elogio==4)
{
cout<<"ottimo lavoro"<<endl;

}



}// chiude if

else
{


rimprovero = rand ()%1+1;


if (rimprovero == 1)
{

cout<<"No, riprova"<<endl;

}




}// chiude else

cout<<"benvenuto,imparerai le 4 operazione aritmetiche"<<endl;
cout<<"sceglie 1:somma, 2:sottrazione, 3:molti, 4:divisione"<<endl;

cin>> scelta;

}// fine del while



return 0;
}

int numCasuali (int a, int b)
{
a = rand()%6+1;
cout<<a;
cout<<endl;

b = rand()%6+1;
cout<<b;
cout<<endl;
}

Laikius91
09-02-2011, 18:07
Ma, se ho capito bene, per ora hai fatto solo il caso della somma?

marcos666
09-02-2011, 18:15
si esatto, stavo provando solo con la somma per il momento, quindi solo premo 1 per entrare
grazie

Laikius91
09-02-2011, 18:34
Mmm devo ammettere di non avere quasi nessuna esperienza con il C++, quindi vado un po' a tentativi... :D

Secondo me l'errore sta nel fatto che a e b vengono modificati nella funzione 'NumeriCasuali', ma essendo passati per copia, non vengono modificati nel main! Quindi il valore di totale sar un valore sballato e di sicuro non esatto! Quindi o passi i valori di a e b per riferimento alla funzione 'NumeriCasuali' o li inizializzi (anche con la rand () ) ma nel main!

Che ne dici? :)

marcos666
09-02-2011, 18:50
decisamente, hai ragione non ci avevo pensato, ho passato il due valori per riferimento ed il problema stato risolto
grazie per il tuo aiuto
Marcos

ShaleN
09-02-2011, 20:30
Aggiungo: il prototipo della funzione numCasuali e:



int numCasuali (int a, int b)


ma, visto che non ritorna nulla, dovrebbe essere:



void numCasuali (int &a, int &b) //(ho aggiunto anche il passaggio tramite reference.)


:ciauz: :ciauz:

Laikius91
10-02-2011, 08:03
Originariamente inviato da marcos666
decisamente, hai ragione non ci avevo pensato, ho passato il due valori per riferimento ed il problema stato risolto
grazie per il tuo aiuto
Marcos

Lieto di averti potuto aiutare! :)

Loading