Appel de procédure : variable non renvoyée - C++ - Programmation
Marsh Posté le 28-11-2011 à 00:36:45
Salut,
Utilise des pointeurs pour les valeurs retournées.
Marsh Posté le 28-11-2011 à 08:42:58
Arg :s on l'a pas encore vus mais j'ai trouvé mon problème : il manquait les "&" après les floats dans la déclaration de la procédure
Marsh Posté le 28-11-2011 à 19:02:02
Renseigne-toi sur la signification des "&" que tu as ajouté
Marsh Posté le 01-12-2011 à 22:01:39
Moi aussi je suis en IUT informatique je vais essayer de te montrer un peu tes erreurs mais ne prend pas ça pour acquis
Code :
|
Pour commencer petite partie de Cours : Une procédure qui renvoie un résultat s'appelle une "Fonction" soit relis bien la fonction MinMaxMoy que tu as fait tout Pour commencer le type de la fonction soit "Void" n'est pas bon car si tu veut renvoyer un resultat tu ne créer pas une fonction qui n'en renvoient pas Void permet est un type qui ne renvoient rien si je peut l'expliquer comme ca
De plus relis le cours sur les fonctions a l'occasion , toute fonction retourne un résultat
D'ou l'utilisation de la syntaxe suivante
Code :
|
en l'occurence
Code :
|
(je n'en suis pas sur car ton programme est un peu compliqué a lire)
Pour continuer et j’espère ne pas te dire de bêtise
tu déclare dans ta fonction
int i ;
puis par la suite dans ton for tu redeclare i a 1
il n'est peut être donc pas utile de déclarer int i et éviter ainsi de surcharger ton programme
Autre information il me semble que hoov a voulut faire passez c'est que si tu fait un passage de paramètre par valeur tu ne pourra pas changer les valeur de ton programme principale imaginons
Code :
|
Si tu fait cela Nb restera a 10 car le passage par valeur ne peut modifier la valeur declarer dans le programme principe
c'est encore du cours , pour cela il faut donc utiliser un passage de paramétre soit par référence soit par adresse ( pointeur) après si vous ne l'avez pas fait effectivement c'est pas simple.
J'espere t'avoir aider
PS : c'est du C++ que j'ai mis n'ayant pas encore trop bucher sur du C peut etre que des choses différent
Voila bien sur je peut me tromper je suis étudiant tout comme toi donc soit indulgent
au plaisir
Marsh Posté le 02-12-2011 à 23:35:18
si c'est du CPP, fais passer tes résultats max / min / moy par reference avec le '&' dans le prototype, là tu fais passer par copie.
Sinon, en C, je dirais pointeurs
edit : Houlà, avait pas vu l'espèce de petit déterrage de topic résolu.
Bon sinon, t'es pas forcément obligé d'utiliser un return pour renvoyer une valeur. si tu passes par pointeur, tu modifie direct la valeur dans la case mémoire, pour reprendre ton exemple :
Code :
|
et dans le main
Code :
|
Mais pour du C++, faut faire passer par reference, c'est plus sûr.
Marsh Posté le 03-12-2011 à 00:34:07
Benh_31 a écrit : Bonjour à tous ! je suis en 1ere année en IUT informatique et voila mon problème :
|
C'est pas mal ce que tu as fait. A l'oubli des & devant les paramètres près.
Tu pouvais tout faire en une seule boucle.
Attention néanmoins à tester les cas limites des paramètres en entrée, ici, il faut pNbelt > 0, sinon on va au devant de problèmes.
Code :
|
Dernier point, n’hésites pas à utiliser des espaces, ça rend le code bien plus lisible (if (ptabVal[i] < pMin) plutôt que if(ptabVal[i]<pMin) par exemple).
Remarque: Bien que tu n'aies pas vu les pointeurs, il yen a un caché ici:
void minMaxMoy(int pNbelt, const float ptabVal[], float& pMin, float& pMax, float& pMoy)
signifie en fait
void minMaxMoy(int pNbelt, const float *ptabVal, float& pMin, float& pMax, float& pMoy)
Malgré ce que l'écriture laisse croire, quand on a un paramètre avec [], ce n'est pas une table que l'on passe, mais en fait un pointeur.
A+,
Marsh Posté le 27-11-2011 à 16:10:37
Bonjour à tous ! je suis en 1ere année en IUT informatique et voila mon problème :
on est en train d'apprendre à se servir des sous programmes et des procédures.
je dois faire un sous programme qui calcule le minimum, le maximum et la moyenne des éléments d'un tableau, pour le moment pas de problème, mais je n'arrive pas à renvoyer mes résultats dans mon programme principal une idée ?
procédure :
programme principal :
il y a peu être des trucs qui servent à rien ou en trop , j'ai sélectionné le bout de programme qui pose problème, le tableau a été rentré avant, le minimum, le maximum et la moyenne sont correctement calculé dans le sous programme c'est juste pour les renvoyer que j'ai un problème
merci d'avance pour votre aide !