はなたの日記

プログラミング(C言語)の勉強をしています。超初心者です。

Volume0-0021 Parallelism

問題
平行判定 | Aizu Online Judge

二つの直線が平行かどうか判定する、という問題。
単純に傾きを求めて、比較すればよいのだが、wrongと表示されてしまった。
座標をdoubleではなく、floatにしたらacceptされた。

#include<stdio.h>

typedef struct point{
 float x;
 float y;
}point;

int main(){
 int n,i;
 point A,B,C,D;
 float m1,m2;
 scanf("%d",&n);
 for(i=0;i<n;i++){

  scanf("%f %f",&A.x,&A.y);
  scanf("%f %f",&B.x,&B.y);
  scanf("%f %f",&C.x,&C.y);
  scanf("%f %f",&D.x,&D.y);

  m1=(A.y-B.y)/(A.x-B.x);
  m2=(C.y-D.y)/(C.x-D.x);

  if(m1==m2)printf("YES\n");
  else printf("NO\n");

 }

 return 0;

}

なぜdoubleはダメなんだろう。気になる。