上一章
在第九章,我們學到了函式
函式真的好好用耶!
咦?真的嗎?
現在,給你三個直線方程式
請你輸出這三條直線相交所形成的三角形的三個頂點座標 (也就是直線的三個交點的座標)
輸入格式:有三行,第$i$行包含第$i$條直線的資訊:三個數字$a_i$、$b_i$、$c_i$,代表第$i$條直線的方程式$a_i x+b_i y=c_i$ (保證三條直線可以形成一個三角形)
輸出格式:有三行,第$i$行包含第$i$個頂點 (交點) 的座標資訊:兩個數字$x_i$、$y_i$,代表第$i$個頂點座標$(x_i,y_i)$ (請輸出小數,頂點順序隨意)
提示:兩條直線$a_{1}x+b_{1}y=c_{1}$、$a_{2}x+b_{2}y=c_{2}$的交點求法:
$\begin{cases}
&a_{1}x+b_{1}y=c_{1}\\
&a_{2}x+b_{2}y=c_{2}
\end{cases}\cdots\cdots ①$
$①\Rightarrow
\begin{cases}
&a_{1}a_{2}x+b_{1}a_{2}y=c_{1}a_{2}\cdots\cdots ②\\
&a_{1}a_{2}x+a_{1}b_{2}y=a_{1}c_{2}\cdots\cdots ③
\end{cases}$
$②-③\Rightarrow (b_{1}a_{2}-a_{1}b_{2})y=c_{1}a_{2}-a_{1}c_{2}$
$\Rightarrow y=\frac{c_{1}a_{2}-a_{1}c_{2}}{b_{1}a_{2}-a_{1}b_{2}}$
$①\Rightarrow
\begin{cases}
&a_{1}b_{2}x+b_{1}b_{2}y=c_{1}b_{2}\cdots\cdots ④\\
&b_{1}a_{2}x+b_{1}b_{2}y=b_{1}c_{2}\cdots\cdots ⑤
\end{cases}$
\begin{cases}
&a_{1}b_{2}x+b_{1}b_{2}y=c_{1}b_{2}\cdots\cdots ④\\
&b_{1}a_{2}x+b_{1}b_{2}y=b_{1}c_{2}\cdots\cdots ⑤
\end{cases}$
$④-⑤\Rightarrow (a_{1}b_{2}-b_{1}a_{2})x=c_{1}b_{2}-b_{1}c_{2}$
$\Rightarrow x=\frac{c_{1}b_{2}-b_{1}c_{2}}{a_{1}b_{2}-b_{1}a_{2}}$
p.s. 以上推導過程看不懂也沒關係
$\therefore$兩線交點為$(\frac{c_{1}b_{2}-b_{1}c_{2}}{a_{1}b_{2}-b_{1}a_{2}},\frac{c_{1}a_{2}-a_{1}c_{2}}{b_{1}a_{2}-a_{1}b_{2}})$
啊不就三條直線兩兩求交點就好?
懶得寫三遍同樣的東西,就弄成一個函式吧~
引數 (甚麼是引數?) 就傳遞兩條線的資訊,然後函式就可以進行計算,最後回傳交點的座標......
等等,怎麼回傳「一個座標」?
float、int、char,都不對呀
我們需要一次回傳「兩個float」
懶得寫三遍同樣的東西,就弄成一個函式吧~
引數 (甚麼是引數?) 就傳遞兩條線的資訊,然後函式就可以進行計算,最後回傳交點的座標......
等等,怎麼回傳「一個座標」?
float、int、char,都不對呀
我們需要一次回傳「兩個float」