boy63 etudiant | Bonsoir, je suis en train de créer un programme permettant le calcul d'un tétraèdre et je suis bloqué... Voici le programme: fichier .h Code :
#include <stdio.h> #include <math.h> typedef double real; typedef struct { real x,y,z; } Point; void LecturePoints(Point T[],int n); void AffichePoints(Point T[],int n); real SurfaceTetraedre(Point A[]); real SurfaceParallelepipede(Point B[]); real VolumeTetraedre(Point A[]); real VolumeParallelepipede(Point B[]); real NormeProdVect(Point A1,Point A2,Point A3); real ProdMixte(Point A1,Point A2,Point A3,Point A4);
| fichier .c
Code :
#include "volume.h" #include <stdio.h> #include <math.h> /* lecture des coordonnees de n points */ void LecturePoints(Point P[], int n) { int i; for (i=0; i<n;i++) { printf("coordonnees du point %d =",i+1); scanf("%lf %lf %lf",&P[i].x,&P[i].y,&P[i].z); } return; } /* affichage de n points */ void AffichePoints(Point T[],int n) { int i; for (i=0; i<n; i++){ printf("Point %d x=%lf y=%lf z=%lf\n",i+1, T[i].x,T[i].y,T[i].z); } } /* calcul du produit vectoriel AB.AC*/ real NormeProdVect(Point A1,Point A2,Point A3){ real x1=A2.x-A1.x; real y1=A2.y-A1.y; real z1=A2.z-A1.z; real x2=A3.x-A1.x; real y2=A3.y-A1.y; real z2=A3.z-A1.z; real X,Y,Z; X=y1*z2-y2*z1; Y=z1*x2-z2*x1; Z=x1*y2-x2*y1; return sqrt(X*X+Y*Y+Z*Z); } /*calcul du produit mixte*/ double ProduitMixte(Point A1,Point A2,Point A3) { /*definition des vecteurs*/ Point T[4]; A1.x=T[1].x-T[0].x; A1.y=T[1].y-T[0].y; A1.z=T[1].z-T[0].z; A2.x=T[2].x-T[0].x; A2.y=T[2].y-T[0].y; A2.z=T[2].z-T[0].z; A3.x=T[3].x-T[0].x; A3.y=T[3].y-T[0].y; A3.z=T[3].z-T[0].z; double x,y,z; /*produit A1 v A2*/ x=A1.y*A2.z-A2.y*A1.z; y=A1.z*A2.x-A2.z*A1.x; z=A1.x*A2.y-A2.x*A1.y; return x*A3.x+y*A3.y+z*A3.z; } /*volume tétraèdre*/ real VolumeTetraedre(Point A[]) { return 0.15*ProduitMixte(A[0],A[1],A[2]); }
| main Code :
#include "surface.h" #include <stdio.h> #include <math.h> int main() { Point T[3];Point A1 ;Point A2 ;Point A3 ;Point A; A1.x=0; A1.y=0; A1.z=0; A2.x=0; A2.y=0; A2.z=0; A3.x=0; A3.y=0; A3.z=0; printf("%ld %ld %ld %ld %ld %ld %ld %ld %ld",A1,A2,A3); /* Saisie et controle des données*/ printf("Saisie des points" ); LecturePoints(T,4); AffichePoints(T,4); float prodm; prodm=ProduitMixte(A1, A2, A3); printf("%ld %ld %ld %ld %ld %ld %ld %ld %ld",A1,A2,A3); printf("produit mixte=%lf",prodm); /* calcul du Volume du Tetraedre float volT=VolumeTetraedre(A); printf("volumeT= %lf\n",volT); */ }
| pas de problème de compilation mais le produit mixte ne s'effectu pas...déja 3h decu et je ne trouve pas la solution... quelqu'un aurait une idee svp? je suis a bout la lol! Merci d'avance. Édité par Elmoricq : ajout des balises de formatage de code, pour plus de lisibilité.
Message édité par Elmoricq le 30-10-2008 à 19:04:29
|