Problem5:兩直線間的關係(14%)
在2維平面中兩條直線間的關係共有三種:
1. 相交於一點
2. 重疊(無限多交點)
3. 平行(沒有交點)
輸入4個點,分別代表兩條直線。請輸出這兩條直線間的關係。
輸入說明:
每組輸入包含8個以空白隔開的數字x1 y1 x2 y2 x3 y3 x4 y4,分別代表4個點 (x1, y1)、(x2, y2)、(x3, y3)、(x4, y4)。其中第一條直線會通過 (x1, y1)、(x2, y2);第二條直線會過通 (x3, y3)、(x4, y4)。
輸出說明:
請輸出這兩條直線的關係,如果是相交於一點,請輸出I;如果這兩條線是重疊,請輸出L;如果這兩條線是平行,請輸出N。
輸入範例:
5 0 7 6 1 0 2 3
5 0 7 6 3 -6 4 -3
2 0 2 27 1 5 18 5
輸出範例:
N
L
I
公式寫好久
回覆刪除最後用斜率來判斷
Dim X(4)
Dim Y(4)
Private Sub Form_Load()
Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Do While Not EOF(1)
For I = 1 To 4
Input #1, X(I), Y(I)
Next I
If (X(2) - X(1)) <> 0 Then m1 = (Y(2) - Y(1)) / (X(2) - X(1)) Else m1 = -1
If (X(4) - X(3)) <> 0 Then m2 = (Y(4) - Y(3)) / (X(4) - X(3)) Else m2 = -1
If m1 <> m2 Then
Print #2, "I"
Else
If -m1 * X(1) + Y(1) = -m2 * X(3) + Y(3) Then Print #2, "L" Else Print #2, "N"
End If
Loop
Close #2
Close #1
End
End Sub
Dim x1, x2, x3, x4, y1, y2, y3, y4
回覆刪除Dim m1, m2
Private Sub Form_Load()
Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Do While Not EOF(1)
Input #1, x1, y1, x2, y2, x3, y3, x4, y4
If x1 - x2 = 0 Then m1 = y1 - y2 Else m1 = (y1 - y2) / (x1 - x2)
If x3 - x4 = 0 Then m2 = y3 - y4 Else m2 = (y3 - y4) / (x3 - x4)
If m1 = m2 Then
c = x1 / (x2 - x1)
d = x3 / (x4 - x3)
If y1 - c * (y2 - y1) = y3 - d * (y4 - y3) Then
Print #2, "L"
Else
Print #2, "N"
End If
Else
Print #2, "I"
End If
Loop
Close
Close
End
End Sub
arro好,
回覆刪除你的程式沒有避掉分母為0的全部可能,
If m1 = m2 Then
c = x1 / (x2 - x1)
如果x2=x1呢。
柯佑好,(換個名字,重新叫起來,小小怪了一下)。
程式正確。