Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題 "Cross Point"
https://onlinejudge.u-aizu.ac.jp/problems/CGL_2_C
・交点
僕が作成、提出したコードは、以下のとおりです。
Aizu Online Judge in C++ #CGL_2_C : Cross Point
/* Aizu Online Judge in C++ #CGL_2_C : Cross Point https://onlinejudge.u-aizu.ac.jp/problems/CGL_2_C 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; typedef complex<double> P; P f(P a,P b,P c,P d){ a-=d; b-=d; c-=d; return (d+a+(b-a)*imag(a/c)/imag(a/c-b/c)); } int main(void){ int n; cin>>n; double ax,ay,bx,by,cx,cy,dx,dy; while(n--){ cin>>ax>>ay>>bx>>by>>cx>>cy>>dx>>dy; P ans=f(P(ax,ay),P(bx,by),P(cx,cy),P(dx,dy)); cout<<fixed<<setprecision(10)<<ans.real()<<" "; cout<<fixed<<setprecision(10)<<ans.imag()<<endl; } return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/