• Khung trình chiếu

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

Các mã nguồn được viết bằng ngôn ngữ Pascal
Gửi hồi đáp
Ảnh đại diện người dùng
huynhbuutam
Nhà sáng lập
Nhà sáng lập
Các bài viết: 112
Đã gia nhập lúc: T3 31 Th8, 2021 22:04
Địa điểm: Trường THCS Châu Lăng
Tên thật: Huỳnh Bửu Tâm

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

Bài viết 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.
Gửi hồi đáp
  • Similar Topics
    Các hồi đáp
    Lượt xem
    Bài viết cuối