Trang 1 trong tổng số 1

Bài tập: Các dạng về đường thẳng

Đã gửi: CN 05 Th9, 2021 19:24
bởi huynhbuutam
Xác định 2 đường thẳng y = a1x + b1 và y = a2x + b2 là song song, trùng nhau hay cắt nhau
Ví dụ: y = -3x + 1, y = 5x + 2 => Cắt nhau tại (-1/8, 11/8)
Mã nguồn (Xác định đường thẳng đi qua 2 điểm cho trước):

Mã: Chọn tất cả

Program DuongThang2Diem;
Uses Crt;

Function UCLN(A, B : Integer) : Integer;
Var i : Integer;
Begin
	For i := Abs(A) DownTo 1 Do
		If (A Mod i = 0) And (B Mod i = 0) Then Exit(i);
	Exit(0);
End;

Var x1, y1, x2, y2, aTu, aMau, bTu, bMau : Integer;
Begin
	ClrScr;
	ReadLn(x1, y1);
	ReadLn(x2, y2);
	aTu := y1 - y2;
	aMau := x1 - x2;
	
	If aMau = 0 Then Begin WriteLn('Khong co'); ReadLn; Exit; End;
	
	aTu := aTu Div UCLN(aTu, aMau);
	aMau := aMau Div UCLN(aTu, aMau);
	
	bTu := y1 * aMau - aTu * x1;
	bMau := aMau;
	
	If bMau = 0 Then Begin WriteLn('Khong co'); ReadLn; Exit; End;
	
	bTu := bTu Div UCLN(bTu, bMau);
	bMau := bMau Div UCLN(bTu, bMau);
	
	If aTu * aMau >= 0 Then Begin aTu := Abs(aTu); aMau := Abs(aMau); End
	Else Begin aTu := -Abs(aTu); aMau := Abs(aMau); End;
	
	If bTu * bMau >= 0 Then Begin bTu := Abs(bTu); bMau := Abs(bMau); End
	Else Begin bTu := -Abs(bTu); bMau := Abs(bMau); End;
	
	WriteLn('y = (', aTu, '/', aMau, ')x + (', bTu, '/', bMau, ')');
	
	ReadLn;
End.
Mã nguồn (Xác định 2 đường thẳng song song, trùng nhau hay cắt nhau):

Mã: Chọn tất cả

Program GiaoDiem;
Uses Crt;

Function UCLN(A, B : Integer) : Integer;
Var i : Integer;
Begin
	For i := Abs(A) DownTo 1 Do
		If (A Mod i = 0) And (B Mod i = 0) Then Exit(i);
	Exit(0);
End;

Var a1, b1, a2, b2, xTu, xMau, yTu, yMau : Integer;
Begin
	ClrScr;
	ReadLn(a1, b1);
	ReadLn(a2, b2);
	
	If (a1 = a2) And (b1 = b2) Then Begin WriteLn('Trung nhau'); ReadLn; Exit; End;
	If (a1 = a2) And (b1 <> b2) Then Begin WriteLn('Song song'); ReadLn; Exit; End;
	
	xTu := b2 - b1;
	xMau := a1 - a2;
	
	xTu := xTu Div UCLN(xTu, xMau);
	xMau := xMau Div UCLN(xTu, xMau);
	
	If xTu * xMau >= 0 Then Begin xTu := Abs(xTu); xMau := Abs(xMau); End
	Else Begin xTu := -Abs(xTu); xMau := Abs(xMau); End;
	
	yTu := a1 * xTu + b1 * xMau;
	yMau := xMau;
	
	yTu := yTu Div UCLN(yTu, yMau);
	yMau := yMau Div UCLN(yTu, yMau);
	
	If yTu * yMau >= 0 Then Begin yTu := Abs(yTu); yMau := Abs(yMau); End
	Else Begin yTu := -Abs(yTu); yMau := Abs(yMau); End;
	
	WriteLn('Giao nhau tai: (', xTu, '/', xMau, '), (', yTu, '/', yMau, ')');
	
	ReadLn;
End.