[C++] Fonction booléenne....
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
bonjour,
voila j'ai inclus une fonction booléenne pour savoir si le nombre saisie est positif ou nul et elle renvoie vrai si c'est le cas.
Le truc c'est que j'y arrive pas je trouve pas la faute ! Je voudrais de l'aide, mais pas la réponse..
Merci
bool nbpositif(int);
int main()
{
int x; //--déclaration de x, le nombre entier à saisir
//--saisie de x
cout <<"Saisissez un nombre entier = " <<endl;
cin>>x;
return 0;
}
//--fonction boolénne pour tester si le nombre est positif ou nul
bool nbpositif(int x)
{
cout<<((x>=0)?"vrai":"faux")<<endl;
return 1;
}
voila j'ai inclus une fonction booléenne pour savoir si le nombre saisie est positif ou nul et elle renvoie vrai si c'est le cas.
Le truc c'est que j'y arrive pas je trouve pas la faute ! Je voudrais de l'aide, mais pas la réponse..
Merci
bool nbpositif(int);
int main()
{
int x; //--déclaration de x, le nombre entier à saisir
//--saisie de x
cout <<"Saisissez un nombre entier = " <<endl;
cin>>x;
return 0;
}
//--fonction boolénne pour tester si le nombre est positif ou nul
bool nbpositif(int x)
{
cout<<((x>=0)?"vrai":"faux")<<endl;
return 1;
}
4 réponses
C'est assez dur de t'indiquer ton erreur sans te donner la reponse ^^
Tout ce que je peux te dire c'est:
regarde la ou tu fais l'appel a ta fonction nbpositif
Tout ce que je peux te dire c'est:
regarde la ou tu fais l'appel a ta fonction nbpositif
la methode qui n'est pas de type void, toi etre appele par if ou print ou... et non pas seule
Ba oui mais la sa fonction nbpositif ecrit vrai ou faux sur la sortie standard, donc il me parait assez evident qu'il ne se sert meme pas du boolean que la fonction renvoie.
D'autant plus qu'il renvoit toujours 1 (donc toujours vrai), donc deja s'il se sert de la valeur de retour, alors il aura une fonction qui renvoit toujours vrai ... Donc son code est faux en plus :S
D'autant plus qu'il renvoit toujours 1 (donc toujours vrai), donc deja s'il se sert de la valeur de retour, alors il aura une fonction qui renvoit toujours vrai ... Donc son code est faux en plus :S
bool nbpositif(int x) { cout<<((x>=0)?"vrai":"faux")<<endl; return 1;
Ta fonction la, voici ce que tu fais en verite:
- tu teste si ton x (argument de ta fonction) est positif ou nul
s'il l'est tu ecris vrai sur la console
s'il ne l'est pas tu ecris faux sur la console
- tu retournes 1 (comprendre: "tu retournes TOUJOURS 1"), 1 correspondant a la valeur "vrai" chez les booleens, ta fonction retournes donc TOUJOURS vrai au sein de ton programme.
Bon vu les confusions que tu fais je te mets une correction en esperant que tu comprennes les differences avec ton code, et pourquoi c'etait faux, sinon tu n'as qu'a demander:
Il faut aussi que tu comprennes la differences entre ces 2 versions ci dessous:
Soit tu t'en fou de la valeur de retour et tu ecris ca:
Soit les prints sont du debug et la seule chose qui t'interesse vraiment est la valeur de retour, dans ce cas tu ecris ca:
bool nbpositif(int); int main() { int x; //--d claration de x, le nombre entier bool signe = false; // variable booleenne pour stocker la valeur de retour //--saisie de x cout << "Saisissez un nombre entier = " << endl; cin >> x; nbpositif(x); // la valeur de retour de la fonction est ignoree donc tu ne pourras plus savoir au sein de ton code si x est positif ou nul, ou s'il est negatif signe = nbpositif(x); // la valeur de retour de la fonction est stockee dans "signe", il te suffit alors d'utiliser ta variable signe pour savoir si ton x est positif ou nul, ou s'il est negatif cout << "signe = "<< signe << endl << "\tsi x >= 0 alors signe vaut 1" << endl << "\tsinon signe vaut 0" << endl; return 0; } //--fonction booleenne pour tester si le nombre est positif ou nul bool nbpositif(int x) { if (x >= 0) { cout << "vrai" << endl; return true; } else { cout << "false" << endl; return false; } }
Il faut aussi que tu comprennes la differences entre ces 2 versions ci dessous:
Soit tu t'en fou de la valeur de retour et tu ecris ca:
void nbpositif(int x) { cout<<((x>=0)?"vrai":"faux")<<endl; }
Soit les prints sont du debug et la seule chose qui t'interesse vraiment est la valeur de retour, dans ce cas tu ecris ca:
bool nbpositif(int x) { return (x>=0); }
ok je comprend bien mieux a présent. Donc dans ma version, la fonction bool ne servais a rien, enfin qu'elle soit booléenne ou non, sa aurais rien changer au résultat. Je vais retravailler ta version point par point dans l'ide... merci encore !
De toute façon return true , false tout sa je connaissais pas encore..
De toute façon return true , false tout sa je connaissais pas encore..
Le type bool c'est un des petits détails (qui change d'ailleurs rien) qui ont été apporté au C++ par rapport au C (le type bool n'existant pas en C, on utilise les 0 et 1 pour s'en servir comme booleen, c'est d'ailleurs pour ca qu'en C++ si tu fais "cout << true << endl;", cela va t'afficher 1 et non pas "true").
Bref, tant mieux si j'ai pu t'éclairer un peu plus. (et oui tu as raison ca n'aurait rien changer au résultat puisque tu te servais pas de cette valeur, tu aurais très bien pu retourner un char que ca aurait rien changé)
Bref, tant mieux si j'ai pu t'éclairer un peu plus. (et oui tu as raison ca n'aurait rien changer au résultat puisque tu te servais pas de cette valeur, tu aurais très bien pu retourner un char que ca aurait rien changé)
int main()
{
int x;
cout <<"Saisissez un nombre entier = " <<endl;
cin>>x;
bool nbpositif(int);
return 0;
}
bool nbpositif(int x)
{
cout<<((x>=0)?"vrai":"faux")<<endl;
return 1;
}
Ca c'est le prototype de ta fonction
exemple:
j'ai une fonction (on s'en fout de ce qu'elle fait)
Dans ma fonction main pour l'appeler je ferais:
Je te laisse donc reflechir a comment faire l'appel a ta fonction
bool nbpositif(int); //--prototype de la fonction, ncécessaire au compilateur
//--debut du programme R*
int main()
{
int x; //--déclaration de x, le nombre entier à saisir
//--saisie de x
cout <<"Saisissez un nombre entier = " <<endl;
cin>>x;
x = nbpositif('1');
return 0;
}
//--fonction boolénne pour tester si le nombre est positif ou nul
bool nbpositif(int x)
{
cout<<((x>=0)?"vrai":"faux")<<endl;
return 1;
}