[C++] Fonction booléenne....
Résolu/Fermé4 réponses
matthoffman
Messages postés
405
Date d'inscription
lundi 24 mars 2008
Statut
Membre
Dernière intervention
22 janvier 2013
47
12 janv. 2012 à 12:15
12 janv. 2012 à 12:15
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
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
12 janv. 2012 à 12:18
12 janv. 2012 à 12:18
Pour utiliser une fonction il faut l'appeler à un moment ou l'autre avec le bon argument.
leen.net
Messages postés
212
Date d'inscription
lundi 31 janvier 2011
Statut
Membre
Dernière intervention
14 mai 2014
13
12 janv. 2012 à 12:20
12 janv. 2012 à 12:20
la methode qui n'est pas de type void, toi etre appele par if ou print ou... et non pas seule
matthoffman
Messages postés
405
Date d'inscription
lundi 24 mars 2008
Statut
Membre
Dernière intervention
22 janvier 2013
47
12 janv. 2012 à 12:26
12 janv. 2012 à 12:26
Tu n'es pas oblige de recuperer la valeur de retour d'une fonction.
Apres je suis d'accord que dans ce cas la autant ne rien retourner.
Apres je suis d'accord que dans ce cas la autant ne rien retourner.
leen.net
Messages postés
212
Date d'inscription
lundi 31 janvier 2011
Statut
Membre
Dernière intervention
14 mai 2014
13
12 janv. 2012 à 12:28
12 janv. 2012 à 12:28
mais si.... comment alors tu dois savoir si oui ou non??
pour void, la fonction ne retourne rien
pour void, la fonction ne retourne rien
matthoffman
Messages postés
405
Date d'inscription
lundi 24 mars 2008
Statut
Membre
Dernière intervention
22 janvier 2013
47
12 janv. 2012 à 12:39
12 janv. 2012 à 12:39
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
matthoffman
Messages postés
405
Date d'inscription
lundi 24 mars 2008
Statut
Membre
Dernière intervention
22 janvier 2013
47
12 janv. 2012 à 12:46
12 janv. 2012 à 12:46
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.
matthoffman
Messages postés
405
Date d'inscription
lundi 24 mars 2008
Statut
Membre
Dernière intervention
22 janvier 2013
47
12 janv. 2012 à 14:02
12 janv. 2012 à 14:02
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..
matthoffman
Messages postés
405
Date d'inscription
lundi 24 mars 2008
Statut
Membre
Dernière intervention
22 janvier 2013
47
12 janv. 2012 à 18:19
12 janv. 2012 à 18:19
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é)
12 janv. 2012 à 12:18
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;
}
12 janv. 2012 à 12:22
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
12 janv. 2012 à 12:24
12 janv. 2012 à 12:27
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;
}
12 janv. 2012 à 12:28