Bài 6/1999 - Giao điểm các đường thẳng
(Dành cho học sinh THPT)
Program Bai6;
(* Tinh so giao diem cua n duong thang 0 trung nhau *)
Uses Crt;
Const
fn = 'P6.INP';
fg = 'P6.OUT';
max = 100;
exp = 0.0001;
Var
a ,b ,c : array[1..max] of real;
n : integer;
sgd : integer;
Procedure Nhap;
f: text;
i: integer;
Begin
Assign( f ,fn ); Reset( f );
Readln( f ,n );
For i := 1 to n do
Readln( f ,a[i] ,b[i] ,c[i] ); { ax + by = c }
Close( f );
End;
(*---*)
Procedure Chuanbi;
sgd := 0;
Function Giaodiem( i ,j : integer;Var x ,y : real ) : boolean;
d ,dx ,
dy : real;
d := a[i] * b[j] - a[j] * b[i];
dx := c[i] * b[j] - c[j] * b[i];
dy := a[i] * c[j] - a[j] * c[i];
If d <> 0 then
begin
x := dx / d;
y := dy / d;
end;
giaodiem := d <> 0;
Function Giatri( i : integer;x ,y : real ) : real;
Giatri := a[i] * x + b[i] * y - c[i];
Function bang( a ,b : real ) : boolean;
bang := abs( a - b ) <= exp;
Function Thoaman( i ,j : integer;x ,y : real ) : boolean;
ii: integer;
Thoaman := false;
For ii := 1 to i - 1 do
If (ii <> j) and bang( giatri( ii ,x ,y ) ,0 ) then
exit;
Thoaman := true;
Function Catrieng( i : integer ) : integer;
ii , gt:integer;
x, y : real;
gt := 0;
For ii := 1 to i do
If giaodiem( i ,ii ,x ,y ) then
If thoaman( i ,ii ,x ,y ) then Inc( gt );
catrieng := gt;
Procedure Tinhsl;
i : integer;
Inc( sgd ,catrieng( i ) );
Procedure GhiKQ;
Begin
Writeln(So giao diem cua cac duong thang la: ' ,sgd );
End;
BEGIN
ClrScr;
Nhap;
Chuanbi;
Tinhsl;
ghiKQ;
END.
Bạn đang xem bài 6/ - 100 DE TIN HSG CO DAP AN