Volume du cone

Résolu/Fermé
reine de joie Messages postés 6 Date d'inscription mardi 19 mars 2013 Statut Membre Dernière intervention 5 avril 2013 - 22 mars 2013 à 17:26
reine de joie Messages postés 6 Date d'inscription mardi 19 mars 2013 Statut Membre Dernière intervention 5 avril 2013 - 5 avril 2013 à 00:01
Bonjour,

mon code sert à calculer le volume d'un cone mais il m'affiche toujours une valeur nulle
je ne sais pas pourquoi
SVP aidez moi à savoir mes fautes aussi à savoir comment faire pour controler les chiffres aprés la virgule

voilà le code

#include <stdio.h>
#include <conio.h>
#include <math.h>
#define pi 0.14
typedef struct
{
float x;
float y;
float z;
}point;

typedef struct
{
float rayon;
point centre;
}cercle;

typedef struct
{
cercle base;
point sommet;
}cone;
void saisie(point * p, char c)
{
printf("Donner les coordonnées de %c\n",c);
printf("Donner X\n");
scanf("%f",&p->x);
printf("Donner Y\n");
scanf("%f",&p->y);
printf("Donner Z\n");
scanf("%f",&p->z);
}
void affiche(point p,char c)
{
printf("Les cordonnées de %c\n",c);
printf("X= %f\n",p.x);
printf("Y= %f\n",p.y);
printf("Z= %f\n",p.z);
}
float hauteur(cone S)
{ float a,b,c;
a=pow(S.sommet.x-S.base.centre.x,2);
b=pow(S.sommet.y-S.base.centre.y,2);
c=pow(S.sommet.z-S.base.centre.z,2);
return(sqrt(a+b+c));
}
void main()
{
cone S;
point s,c;
float V,H;
saisie(&s,'s');
saisie(&c,'c');
affiche(s,'s');
affiche(c,'c');
printf("donner le rayon de le base:\n");
scanf("%f",&S.base.rayon);
H=hauteur(S);
V=pi*0.33*pow(S.base.rayon,2)*H;
printf("le volume de la cone est %f\n",V);
getch();
}

merci d'avance

1 réponse

Bonjour

J'ai l'impression à lire ton programme que ton cône C n'a aucun rapport avec le cercle c et le sommet s que tu saisis.
En fait, les variables s et c ne devraient pas exister, tu devrais saisir C->base et C->sommet
0
reine de joie Messages postés 6 Date d'inscription mardi 19 mars 2013 Statut Membre Dernière intervention 5 avril 2013
26 mars 2013 à 22:54
salut
en fait s c'est la sommet et c le centre que j'ai saisi mais j'ai oublier de faire
les affectations suivantes
s=S.sommet;
c=S.base.centre;
0
Utilisateur anonyme
27 mars 2013 à 08:14
ces variables temporaires n'apportent rien, si ce n''est qu'on risque d'oublier une affectation : la preuve, tu l'as fait. Pourquoi ne veux-tu pas travailler directement sur C ?
0
reine de joie Messages postés 6 Date d'inscription mardi 19 mars 2013 Statut Membre Dernière intervention 5 avril 2013
4 avril 2013 à 00:35
comment?
0
Utilisateur anonyme
4 avril 2013 à 08:18
remplace
saisie(&s,'s'); 
saisie(&c,'c'); 
par
saisie(&C.sommet,'s');
saisie (&C.base.centre,'c');
0
reine de joie Messages postés 6 Date d'inscription mardi 19 mars 2013 Statut Membre Dernière intervention 5 avril 2013
5 avril 2013 à 00:01
ok merci
0