AIZU ONLINE JUDGE (AOJ) の
0021 に関して質問です。
問題に対し、以下のようなコードを作成しました。
コード:
#include <iostream>
using namespace std;
#define m1 (y2 - y1) / (x2 - x1)
#define m2 (y4 - y3) / (x4 - x3)
int main() {
int n;
double x1, y1, x2, y2, x3, y3, x4, y4;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3 >> x4 >> y4;
if (m1 == m2) cout << "YES" << endl;
else cout << "NO" << endl;
}
return 0;
}
自動審判で誤答と判定されたため別の方の解き方などを参考にしてみたのですが、
"abs" や "1e-10" を多くの方が解答に使っておられました。
double 同士の計算で誤差が出ることはあるのでしょうか。
もし誤差がないとしたら何故 "abs" や "1e-10" が使われているのでしょうか。
このコードの改善点なども一緒に指摘していただきたいです。
AIZU ONLINE JUDGE (AOJ) の [url=https://onlinejudge.u-aizu.ac.jp/#/problems/0021]0021[/url] に関して質問です。
問題に対し、以下のようなコードを作成しました。
[code]
#include <iostream>
using namespace std;
#define m1 (y2 - y1) / (x2 - x1)
#define m2 (y4 - y3) / (x4 - x3)
int main() {
int n;
double x1, y1, x2, y2, x3, y3, x4, y4;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3 >> x4 >> y4;
if (m1 == m2) cout << "YES" << endl;
else cout << "NO" << endl;
}
return 0;
}
[/code]
自動審判で誤答と判定されたため別の方の解き方などを参考にしてみたのですが、
"abs" や "1e-10" を多くの方が解答に使っておられました。
double 同士の計算で誤差が出ることはあるのでしょうか。
もし誤差がないとしたら何故 "abs" や "1e-10" が使われているのでしょうか。
このコードの改善点なども一緒に指摘していただきたいです。