Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1250 connectés 

  FORUM HardWare.fr
  Programmation
  C

  probleme de programmation en C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme de programmation en C

n°1806568
boy63
etudiant
Posté le 30-10-2008 à 18:44:43  profilanswer
 

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 :
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. typedef double real;
  5. typedef struct { real x,y,z; } Point;
  6.  
  7. void LecturePoints(Point T[],int n);
  8. void AffichePoints(Point T[],int n);
  9. real SurfaceTetraedre(Point A[]);
  10. real SurfaceParallelepipede(Point B[]);
  11. real VolumeTetraedre(Point A[]);
  12. real VolumeParallelepipede(Point B[]);
  13. real NormeProdVect(Point A1,Point A2,Point A3);
  14. real ProdMixte(Point A1,Point A2,Point A3,Point A4);
 

fichier .c

Code :
  1. #include "volume.h"
  2. #include <stdio.h>
  3. #include <math.h>
  4.  
  5.  
  6. /* lecture des coordonnees de n points */
  7. void LecturePoints(Point P[], int n)
  8. {
  9. int i;
  10. for (i=0; i<n;i++) {
  11.  printf("coordonnees du point %d =",i+1);
  12.  scanf("%lf %lf %lf",&P[i].x,&P[i].y,&P[i].z);
  13. }
  14. return;
  15. }
  16. /* affichage de n points */
  17. void AffichePoints(Point T[],int n)
  18. {
  19.  int i;
  20.  for (i=0; i<n; i++){
  21.    printf("Point %d  x=%lf y=%lf z=%lf\n",i+1,
  22.           T[i].x,T[i].y,T[i].z);
  23.     }
  24. }
  25. /* calcul du produit vectoriel AB.AC*/
  26. real NormeProdVect(Point A1,Point A2,Point A3){
  27.   real x1=A2.x-A1.x;
  28.   real y1=A2.y-A1.y;
  29.   real z1=A2.z-A1.z;
  30.   real x2=A3.x-A1.x;
  31.   real y2=A3.y-A1.y;
  32.   real z2=A3.z-A1.z;
  33.   real X,Y,Z;
  34.  
  35.   X=y1*z2-y2*z1;
  36.   Y=z1*x2-z2*x1;
  37.   Z=x1*y2-x2*y1;
  38.   return sqrt(X*X+Y*Y+Z*Z);
  39. }
  40.  
  41. /*calcul du produit mixte*/
  42. double ProduitMixte(Point A1,Point A2,Point A3)
  43. {
  44. /*definition des vecteurs*/
  45.     
  46.     Point T[4];
  47.     A1.x=T[1].x-T[0].x;
  48.     A1.y=T[1].y-T[0].y;
  49.     A1.z=T[1].z-T[0].z;
  50.     A2.x=T[2].x-T[0].x;
  51.     A2.y=T[2].y-T[0].y;
  52.     A2.z=T[2].z-T[0].z;
  53.     A3.x=T[3].x-T[0].x;
  54.     A3.y=T[3].y-T[0].y;
  55.     A3.z=T[3].z-T[0].z;
  56.    
  57.     double x,y,z;
  58.     /*produit A1 v A2*/
  59.     x=A1.y*A2.z-A2.y*A1.z;
  60.     y=A1.z*A2.x-A2.z*A1.x;
  61.     z=A1.x*A2.y-A2.x*A1.y;
  62.  
  63. return x*A3.x+y*A3.y+z*A3.z;
  64. }
  65.  
  66. /*volume tétraèdre*/
  67. real VolumeTetraedre(Point A[])
  68. {
  69. return 0.15*ProduitMixte(A[0],A[1],A[2]);
  70. }
 

main

 
Code :
  1. #include "surface.h"
  2. #include <stdio.h>
  3. #include <math.h>
  4.  
  5. int main()
  6. {
  7.     
  8.     Point T[3];Point A1 ;Point A2 ;Point A3 ;Point A;
  9.     
  10.         A1.x=0;    
  11.         A1.y=0;
  12.         A1.z=0;
  13.         A2.x=0;    
  14.         A2.y=0;
  15.         A2.z=0;
  16.         A3.x=0;    
  17.         A3.y=0;
  18.         A3.z=0;
  19.  
  20.  
  21.     printf("%ld %ld %ld %ld %ld %ld %ld %ld %ld",A1,A2,A3);
  22.  
  23.     /* Saisie et controle des données*/
  24.     printf("Saisie des points" );
  25.     LecturePoints(T,4);
  26.     AffichePoints(T,4);
  27.  
  28.     float prodm;
  29.        prodm=ProduitMixte(A1, A2, A3);
  30.     printf("%ld %ld %ld %ld %ld %ld %ld %ld %ld",A1,A2,A3);    
  31.     printf("produit mixte=%lf",prodm);
  32.        
  33.     /* calcul du Volume du Tetraedre
  34.      float volT=VolumeTetraedre(A);
  35.     
  36.     printf("volumeT= %lf\n",volT); */
  37.     
  38. }
 

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
mood
Publicité
Posté le 30-10-2008 à 18:44:43  profilanswer
 

n°1806583
Taz
bisounours-codeur
Posté le 30-10-2008 à 19:34:15  profilanswer
 

Compile avec des warnings. Tes Point ne sont pas des double, donc tes printf("%f", A1) ne peuvent pas fonctionner.
 
Et vérifie bien que :
- scanf de double -> "%lf"
- printf de double -> "%f"

n°1806600
boy63
etudiant
Posté le 30-10-2008 à 20:34:47  profilanswer
 

je comprend pas trop pourquoi ca ne marche pas a cause des scanf et printf...
en faite le programme bloque après le produit mixte et avec les printf j'ai pu voir que le produit mixte était nul.Tu peux me dire comment on compile avec des warnings stp?
Merci d'avance

n°1806749
matafan
Posté le 31-10-2008 à 09:18:27  profilanswer
 

Avec gcc c'est -Wall.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  probleme de programmation en C

 

Sujets relatifs
Problème avec une classeProblème MySqlParameter c#
ACTIONSCRIPT : Problème bouton/récupération champ texte[résolu] Problème d'accent avec FOP
[Résolu] - [Batch Dos] Probleme carateres dans resultat txtProblème avec INSTR
programmation ds Alice avec le language Xml ou SML niveau debutantProblème objet avec PHP
[C#] simuler un click souris [résolu]Problème programmation C++
Plus de sujets relatifs à : probleme de programmation en C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR