Problemi con funzione bool

di il
1 risposte

Problemi con funzione bool

Questo è il codice di un programma che ho appena scritto...

#include <iostream>
#include<time.h>
#include<stdlib.h>
using namespace std;
int risultato;
int risposta;
int Faidomanda();
bool Verificarisposta(int, int);
void StampafraseP();
void StampafraseN();
int main()
{
char scelta;
do {
Faidomanda();
cin>>risposta;
Verificarisposta(risultato, risposta);
if(Verificarisposta == true){
StampafraseP();
cout<<"Un altra domanda? s/n"<<endl;
cin>>scelta;}
if(Verificarisposta == false){
while (Verificarisposta != true)
StampafraseN();
cin>>risposta;
Verificarisposta()}
}while(scelta != 'n')
return 0;
}

int Faidomanda ()
{
srand(time(0));
int n1=rand()%9+1;
int n2=rand()%9+1;
int op=rand()%4;
switch(op){
case '0': cout<<"Quanto fa "<<n1<<" + "<<n2<<" ?";
risultato = n1 + n2;
break;
case '1': cout<<"Quanto fa "<<n1<<" - "<<n2<<" ?";
risultato = n1 - n2;
break;
case '2': cout<<"Quanto fa "<<n1<<" * "<<n2<<" ?";
risultato = n1 * n2;
break;
case '3': cout<<"Quanto fa "<<n1<<" / "<<n2<<" ?";
risultato = n1 / n2;
break;
}
}

bool Verificarisposta (int ris, int risp)
{
if (ris == risp)
Verificarisposta = true;
else
Verificarisposta = false;
}



void StampafraseN()
{
int frase = rand()%4;
switch(frase)
{
case 0: cout<<" No, riprova! "<<endl;
break;
case 1: cout<<" Sbagliato. Prova ancora! "<<endl;
break;
case 2: cout<<" Non ti arrendere, riprova! "<<endl;
break;
case 3: cout<<" Niente da fare, Prova ancora! "<<endl;
}
}

void StampafraseP()
{
int frase = rand()%4;
switch(frase)
{
case 0: cout<<" Bravo! "<<endl;
break;
case 1: cout<<" Eccellente! "<<endl;
break;
case 2: cout<<" Continua Così! "<<endl;
break;
case 3: cout<<" Ottimo Lavoro! "<<endl;
}
}


I seguenti, sono gli errori riportati:

Verifica Operazioni.cpp: In function ‘int main()’:
Verifica Operazioni.cpp:18: error: ISO C++ forbids comparison between pointer and integer
Verifica Operazioni.cpp:23: error: ISO C++ forbids comparison between pointer and integer
Verifica Operazioni.cpp:8: error: too few arguments to function ‘bool Verificarisposta(int, int)’
Verifica Operazioni.cpp:26: error: at this point in file
Verifica Operazioni.cpp:26: error: expected ‘;’ before ‘}’ token
Verifica Operazioni.cpp:28: error: expected ‘;’ before ‘return’
Verifica Operazioni.cpp: In function ‘bool Verificarisposta(int, int)’:
Verifica Operazioni.cpp:56: error: assignment of function ‘bool Verificarisposta(int, int)’
Verifica Operazioni.cpp:56: error: cannot convert ‘bool’ to ‘bool(int, int)’ in assignment
Verifica Operazioni.cpp:58: error: assignment of function ‘bool Verificarisposta(int, int)’
Verifica Operazioni.cpp:58: error: cannot convert ‘bool’ to ‘bool(int, int)’ in assignment

A quanto pare ci sono problemi con la funzione booleana Verificarisposta.. ma non sono riuscito a capire quali... qualcuno sarebbe così gentile da aiutarmi? sono alle prime armi cn il c++ e a volte mi inceppo facilmente... grazie anticipatamente

1 Risposte

  • Re: Problemi con funzione bool

    Vieni da VB, presumo (da come hai scritto quella funzione).
    In C/C++ è sbagliato usare il nome della funzione per ritornare il valore, semplicemente si ritorna il valore.
    
    bool Verificarisposta (int ris, int risp)
    {
       if (ris == risp) return true;
       else return false;
    }
    
    Ci sono modi anche più compatti, ma questo è quello più comprensibile se sei all'inizio.
    Ci sono anche altri errori.
    if(Verificarisposta == true){
    ...

    if(Verificarisposta == false){
    while (Verificarisposta != true)

    Verificarisposta()
    VerificaRisposta è una funzione e dev'essere chiamata come tale, passandole gli argomenti che richiede. Come hai scritto tu assume un altro significato completamente diverso.
    Ti riporto il codice come andrebbe scritto usando la funzione. A te verificare che tutto sia corretto.
    
    int main()
    {
        char scelta;
        do {
            Faidomanda();
            cin>>risposta;
            if(Verificarisposta(risultato,risposta) == true){
                StampafraseP();
               cout<<"Un altra domanda? s/n"<<endl;
               cin>>scelta;
            }
            if(Verificarisposta(risultato,risposta) == false) {
                while (Verificarisposta(risultato,risposta) != true)
               StampafraseN();
               cin>>risposta;
            }
        }while(scelta != 'n')
    return 0;
    }
Devi accedere o registrarti per scrivere nel forum
1 risposte