[C++] Fonctions
Fermé
Oni
-
14 nov. 2010 à 15:48
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 14 nov. 2010 à 16:35
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 14 nov. 2010 à 16:35
A voir également:
- [C++] Fonctions
- Ces codes secrets vous donnent accès aux fonctions cachées de votre smartphone Android - Accueil - Android
- Codes secrets Android : accéder aux fonctions cachées - Guide
- Les fonctions excel en anglais - Guide
- Fonctions de base excel - Guide
- Les fonctions logiques excel - Guide
3 réponses
Arya Dröttningu
Messages postés
581
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
3 janvier 2019
157
14 nov. 2010 à 15:52
14 nov. 2010 à 15:52
Bonjour,
J'ai pas tout tout compris......
Mais en regardant le code j'ai vu ça const char MAX = 10; ce ne serait pas plutôt int à la place de char ?
J'ai pas tout tout compris......
Mais en regardant le code j'ai vu ça const char MAX = 10; ce ne serait pas plutôt int à la place de char ?
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
14 nov. 2010 à 16:02
14 nov. 2010 à 16:02
Tu utilises mal le principe des fonctions.
Le prototype est : int carPresent(char tab, int nb, char unCar)
Cela veut dire que lorsque tu appelleras la fonction, il y aura les variables : char tab, int nb et char unCar qui seront créées au sein de ta fonction.
En aucun cas, il faut redéfinir ces variables.
Pire encore, tu redéfinis : char tab[MAX]; alors que dans la fonction c'est char tab...
Pour corriger, il faut changer le prototype en : int carPresent(char *tab, int nb, char unCar) et enlever dans le corps de la fonction les déclarations des variables tab, nb et unCar.
Dernier point : bool present; et c'est la valeur que tu renvoies. Il faut donc que la fonction soit bool carPresent ou alors bool present; doit devenir int present;
Cordialement,
Le prototype est : int carPresent(char tab, int nb, char unCar)
Cela veut dire que lorsque tu appelleras la fonction, il y aura les variables : char tab, int nb et char unCar qui seront créées au sein de ta fonction.
En aucun cas, il faut redéfinir ces variables.
Pire encore, tu redéfinis : char tab[MAX]; alors que dans la fonction c'est char tab...
Pour corriger, il faut changer le prototype en : int carPresent(char *tab, int nb, char unCar) et enlever dans le corps de la fonction les déclarations des variables tab, nb et unCar.
Dernier point : bool present; et c'est la valeur que tu renvoies. Il faut donc que la fonction soit bool carPresent ou alors bool present; doit devenir int present;
Cordialement,
@Arya : Ah oui, erreur d'inattention ^^
@fiddy : J'ai pas tout compris ^^ pourquoi dans mon prototype char *tab, pourquoi l'étoile ? Ce ne serait pas un pointeur par hasard ? Je ne les ai pas encore vu et je ne pense pas que j'y aurais droit (cet exercice est un exo d'entrainement à mes partiels qui approchent).
Mais plus bizarre encore : si j'enlève les déclarations des variables tab, nb et unCar, comment ma fonction pourrait-elle marcher ? Je peux manipuler directement les paramètres?
Et pourquoi changer le type bool en int a "present" ? C'est bien une valeure vraie ou fausse que je veux retourner non ?
Cordialement.
@fiddy : J'ai pas tout compris ^^ pourquoi dans mon prototype char *tab, pourquoi l'étoile ? Ce ne serait pas un pointeur par hasard ? Je ne les ai pas encore vu et je ne pense pas que j'y aurais droit (cet exercice est un exo d'entrainement à mes partiels qui approchent).
Mais plus bizarre encore : si j'enlève les déclarations des variables tab, nb et unCar, comment ma fonction pourrait-elle marcher ? Je peux manipuler directement les paramètres?
Et pourquoi changer le type bool en int a "present" ? C'est bien une valeure vraie ou fausse que je veux retourner non ?
Cordialement.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
14 nov. 2010 à 16:35
14 nov. 2010 à 16:35
Tu peux mettre char tab[] à la place de char *tab ou même char tab[MAX]
C'est la même chose. En C, on ne peut pas envoyer le tableau en argument, on n'envoie en fait qu'un pointeur (mais t'es pas censé le savoir encore ;-)))).
Mais en aucun cas tu peux mettre char tab dans ton prototype.
j'enlève les déclarations des variables tab, nb et unCar, comment ma fonction pourrait-elle marcher ?
Car c'est comme ça que ça marche ^^. Tu déclares déjà tes variables dans ton prototype, il ne faut donc pas les redéclarer.
Et pourquoi changer le type bool en int a "present" ? C'est bien une valeure vraie ou fausse que je veux retourner non ?
Pour info, 0 représente faux et 1 vrai. Mais ma remarque était ailleurs. Tu n'es pas cohérent dans le code. Tu retournes la variable "present" qui est de type bool. Il faut donc que le prototype de la fonction soit de type bool. Et si c'est le cas, au lieu de mettre present=0; autant mettre present=false;
En gros, faut mettre : bool carPresent(char ...), et dans ton code : present=false ou present=true
Cdlt,
C'est la même chose. En C, on ne peut pas envoyer le tableau en argument, on n'envoie en fait qu'un pointeur (mais t'es pas censé le savoir encore ;-)))).
Mais en aucun cas tu peux mettre char tab dans ton prototype.
j'enlève les déclarations des variables tab, nb et unCar, comment ma fonction pourrait-elle marcher ?
Car c'est comme ça que ça marche ^^. Tu déclares déjà tes variables dans ton prototype, il ne faut donc pas les redéclarer.
Et pourquoi changer le type bool en int a "present" ? C'est bien une valeure vraie ou fausse que je veux retourner non ?
Pour info, 0 représente faux et 1 vrai. Mais ma remarque était ailleurs. Tu n'es pas cohérent dans le code. Tu retournes la variable "present" qui est de type bool. Il faut donc que le prototype de la fonction soit de type bool. Et si c'est le cas, au lieu de mettre present=0; autant mettre present=false;
En gros, faut mettre : bool carPresent(char ...), et dans ton code : present=false ou present=true
Cdlt,