Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    C++ Calcolatrice 4 Operazioni Aritmetiche

    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
    codice:
    #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;
    }

  2. #2
    Ma, se ho capito bene, per ora hai fatto solo il caso della somma?
    Salute a voi, da Laikius!

    --> Faber est suae quisque fortunae <--

  3. #3
    si esatto, stavo provando solo con la somma per il momento, quindi solo premo 1 per entrare
    grazie

  4. #4
    Mmm devo ammettere di non avere quasi nessuna esperienza con il C++, quindi vado un po' a tentativi...

    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?
    Salute a voi, da Laikius!

    --> Faber est suae quisque fortunae <--

  5. #5
    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

  6. #6
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Aggiungo: il prototipo della funzione numCasuali e:

    codice:
    int  numCasuali (int a, int b)
    ma, visto che non ritorna nulla, dovrebbe essere:

    codice:
    void numCasuali (int &a, int &b) //(ho aggiunto anche il passaggio tramite reference.)
    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  7. #7
    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!
    Salute a voi, da Laikius!

    --> Faber est suae quisque fortunae <--

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.