Je cherche le rayon d'une sphere ou le volume est donner
hassine
-
Yoan Messages postés 11905 Statut Modérateur -
Yoan Messages postés 11905 Statut Modérateur -
Bonjour,
l'execution ne donne pas une resultat correcte .
j'ai essai plusieur fois mais j'ai pas pu trouver la faute .... el merci d'avance pour l'aide :) :)
voici le prog :
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define PI 3.14
float hassine ( float r )
{
float a ;
return (r = pow(a, 1/3 ) ) ;
}
float main()
{
float v ,r ,a;
printf("donnez le volume de sphere :" ) ;
scanf ("%f",&v) ;
a =(3*v )/ (4*PI) ;
printf ("le rayon r =%f ", hassine(r)) ;
}
l'execution ne donne pas une resultat correcte .
j'ai essai plusieur fois mais j'ai pas pu trouver la faute .... el merci d'avance pour l'aide :) :)
voici le prog :
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define PI 3.14
float hassine ( float r )
{
float a ;
return (r = pow(a, 1/3 ) ) ;
}
float main()
{
float v ,r ,a;
printf("donnez le volume de sphere :" ) ;
scanf ("%f",&v) ;
a =(3*v )/ (4*PI) ;
printf ("le rayon r =%f ", hassine(r)) ;
}
1 réponse
-
Bonjour,
Il y a plein de (gros) problèmes.
Déjà parlons uniquement de la fonction hassine sans même regarder le code à l'intérieur.
Déjà rien que le nom de tes variables suggère que tu n'as pas compris l'appel de fonctions en C. Alors reprenons du début. Telle qu'elle est déclaréefloat r
signifie que cette fonction prend en paramètre un flottant nommér
et lefloat
devant le nom de la fonction signifie qu'elle renvoie un flottant, mais cette valeur de retour n'est pas nommée, on ne peut obtenir cette valeur qu'en faisant un appel à la fonction hassine(5.0) par exemple. Dans ce contexte le floatr
est une entrée de la fonction et le float non nommé est une sortie. Tu ne devrais donc déjà pas nommerr
de cette façon car je suppose que tu pense que c'est le rayon mais pas du tout, car l'entrée de ta fonction c'est le volume. Le rayon est une sortie mais la sortie n'est pas nommée en C (elle l'est dans certains autres langages). Conclusion : hassine devrait prendre un paramètre qui s'appelle plutôtv
quer
, et cev
ne devra jamais être affecté carv
est une valeur de sortie (jamais dev = quelque-chose
dans cette fonction).
Ensuite regardons le code à l'intérieur de la fonction hassine :
La première instruction est une déclaration de variable. Ca sert à prévenir le compilateur que l'on va prochainement utiliser une variable nomméea
mais ça ne lui donne aucune valeur. Ou bien pour être plus correct la valeur par défaut de cette variable est une valeur complètement aléatoire. A la fin de cette déclaration, a a par exemple pour valeur -68428.87450 (par exemple).
Ensuite pow(a, 1/3 ) permet effectivement de calculer la racine cubique dea
. Sauf quea
a la valeur complètement hallucinante de -68428.87450 donc le résultat escompté n'est forcément pas bon. Lorsque tu calcules pow() il faut donc opérer sur l'entrée de la fonction (que tu as appelér
et que je te suggère d'appelerv
).
Mais surtout ne pas fairer = quelque-chose
car cette valeur de sortie sera perdue.
Il y a des erreurs dans le main aussi, erreurs qui montrent quelle partie de ton cours de C tu n'as pas assez révisé : la portée des variables. Avant de vouloir corriger ton code je te suggère de revoir absolument ton cours 'ou n'importe quel cours sur Internet) sur la portée des variables en C. Ce que tu as écrit ressemble (ou ressemblote) à la manière dont sont déclarées les variables dans certains langages fonctionnels mais pas en C.
Rien ne sert d'aller plus loin maintenant il faut que tu relises cette partie du cours et que tu corriges la fonction hassine pour le reste on verra après ...
Sinon j'ajoute que le découpage en fonction devrait avoir un sens et apporter quelque-chose d'intéressant. Dans l'immédiat, en admettant qu'elle soit juste ta fonction hassine ne fait rien d'autre que calculer la racine cubique, ce qui est déjà le rôle de la fonction pow donc ça n'a aucun intérêt. Par contre tu pourrais inclure dans cette fonction le calcul (3*v )/ (4*PI) en plus du calcul de la racine cubique. Maintenant ça devient beaucoup plus intéressant car ta fonction hassine (que tu as nommée ainsi probablement car tu ne connaissais pas vraiment son rôle) a maintenant un rôle de calculer un rayon à partir d'un volume. Tu pourrais donc l'appelerfloat calcul_rayon(float v)
L'urgent est fait, l'impossible est en cours,
Pour les miracles, prévoir un délai ...-
-
-
-
Arf.. je me disais aussi. Je vous jure que j'ai vu "cercle" et "surface" au lieu de "sphère" et "volume", si, si, je vous juuureeeeeeeeee !!!
(musique du générique des Envahisseurs, David Vincent, sort de ce corps !!! :-D) -
-