質問です
外部から2つの2次元平面上の点の座標を与えた時、
その2点を通る直線の方程式を求める関数の作成。
2次元平面上の点は
typedef struct point2{
float x;
float y;
}POINT2
を用いて表すこと。
関数名および引数は各自に決めてよい。
なお直線が座標軸と平行になるときも正しい方程式が
得られるようにする。
というものです 自分なりに考えましたが、
上手く ビルトできませんでした
どこが 間違っていますか?
#include <stdio.h> typedef struct{ double x; double y; }POINT; typedef struct{ double a; double b; double c; }LINE; int getline(LINE *cf,POINT p,POINT q){ int md; double eps=1.e-8; double dx,dy; double a,b; dx=q.x-p.x; dy=q.y-p.y; md=0; if(fabs(dy)>eps) md+=1; if(fabs(dy)>eps) md+=2; cf>a=cf>b=cf>c=0; switch(md){ case 0: break; case 1 cf>a=1; cf>c=p.x; break; case 2: cf>b=1;cf>c=p.y; break; case 3: a=dy/dx; b=p.y a*p.x; f(fabs(b)>eps){ cf>a=-a; cf>b=1.; cf>c=0.; }else{ cf>a=a/b; cf>b=1./b; cf>c=1.; } break; default: printf("illegal case;md=%d\n",md); } return md; } int main(){ POINT p,q; LINE cf; double x,y; int md; do printf("点1の座標="); scanf("%lf%lf",&x,&y); p.x=x; p.y=y; printf("点2の座標="); scanf("%lf%lf",&x,&y); q.x=x; q.y=y; md=getline(&cf,p,q); printf("直線の方程式:ax+by_=c\n"); printf("[md=%d]係数:a=%f,b=%f,c=%f\n",md,cf.a,cf.b,cf.c); }while(md>0); printf("終了\n"); return 0; }たぶん 間違いは多いと思われます よろしくお願いします