質問です
外部から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;
}
たぶん 間違いは多いと思われます よろしくお願いします