probleme avec structure et pointeur
2 participants
Forum INFOMATH :: Enseignement de l'informatique :: INFO - Supérieur (Etudiants et Professionnels) :: C/C++
Page 1 sur 1
probleme avec structure et pointeur
bonjour,
je suis debutant en programmation, et j essaie de faire une fonction renvoyant l intersection entre deux points (en utilisant une structure pour les points) et en renvoyant le resultat de la fonction a l aide d un pointeur sur la structure, et bizarrement le programme arrondit le resultat, et renvoie 300.000 pour x et y au lieu de 333.33333 !!!
voici le programme:
je seche pour trouver le bug ! quelqu un a t il une explication ? merci d avance.
je suis debutant en programmation, et j essaie de faire une fonction renvoyant l intersection entre deux points (en utilisant une structure pour les points) et en renvoyant le resultat de la fonction a l aide d un pointeur sur la structure, et bizarrement le programme arrondit le resultat, et renvoie 300.000 pour x et y au lieu de 333.33333 !!!
voici le programme:
- Code:
#include<allegro.h>
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#define blanc makecol(255,255,255)
//structures
struct point {double x,y;};
struct ligne {double a,b;}; //y=ax+b
//routines
double intersection_droite(struct point M1,struct point M2, struct point M3,struct point M4, struct point *adresseM );
int main()
{ allegro_init();
install_keyboard();
set_color_depth(32);
set_gfx_mode(GFX_AUTODETECT_FULLSCREEN,1920,1080,0,0);
//
struct point A,B,C,D,E ;
A.x=100;A.y=100; B.x=200;B.y=200;
C.x=300;C.y=0;D.x=400;D.y=1000;
E.x=0;E.y=0;
intersection_droite(A,B,C,D,&E) ;
textprintf(screen,font,0,0,blanc,"x=%lf y=%lf ",(E.x),(E.y));
while(key[KEY_ESC]==0);
return 0;
}END_OF_MAIN();
//routines
double intersection_droite(struct point M1,struct point M2, struct point M3,struct point M4, struct point *adresseM )
{ double k1,k2 ;
if(M2.x-M1.x!=0) k1=(M2.y-M1.y)/(M2.x-M1.x) ; // y=k1(x-xm1)+ym1
if(M4.x-M3.x!=0) k2=(M4.y-M3.y)/(M4.x-M3.x) ; // y=k2(x-xm3)+ym3
if(M1.x!=M2.x && M3.x!=M4.x)
{ if(k1!=k2) // 0=x(k1-k2)-k1.xm1+k2.xm3+ym1-ym3
{adresseM->x=(k1*M1.x-k2*M3.x-M1.y+M3.y)/(k1-k2) ;
adresseM->y= k1*((adresseM->x)-M1.x)+M1.y ;
}
if(k1==k2) adresseM=0 ;
}
return 0;
}
je seche pour trouver le bug ! quelqu un a t il une explication ? merci d avance.
Dernière édition par nyergk le Mar 18 Déc - 14:42, édité 1 fois
nyergk- Entier Naturel
-
Nombre de messages : 3
Localisation : france
Réputation : 0
Points : 4363
Date d'inscription : 17/12/2012
Re: probleme avec structure et pointeur
oups, la routine est correct, c est moi qui me suis trompé en calculant sur papier... ... ...
nyergk- Entier Naturel
-
Nombre de messages : 3
Localisation : france
Réputation : 0
Points : 4363
Date d'inscription : 17/12/2012
Re: probleme avec structure et pointeur
Tant mieux!
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Sujets similaires
» Probleme avec mon pc
» Probleme avec un PC Toshiba
» probleme avec hotmail
» Probléme avec mon écran
» Problème exercice avec équation
» Probleme avec un PC Toshiba
» probleme avec hotmail
» Probléme avec mon écran
» Problème exercice avec équation
Forum INFOMATH :: Enseignement de l'informatique :: INFO - Supérieur (Etudiants et Professionnels) :: C/C++
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum