Bài 7/1999 - Miền mặt phẳng chia bởi các đường thẳng
(Dành cho học sinh THPT)
Program Bai7;
(* Tinh so giao diem cua n duong thang ko trung nhau *)
Uses Crt;
Const
fn = 'P7.INP';
fg = 'P7.OUT';
max = 100;
exp = 0.0001;
Var
a ,b ,c : array[1..max] of real;
n : integer;
smien : 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;
smien := 1;
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 : integer;x ,y : real ) : boolean;
ii : integer;
Thoaman := false;
For ii := 1 to i - 1 do
If bang( Giatri( ii ,x ,y ) ,0 ) then
exit;
Thoaman := true;
Function Cattruoc( i : integer ) : integer;
ii , gt : integer;
x, y : real;
gt:= 0;
If Giaodiem( i ,ii ,x ,y ) then
If Thoaman( ii ,x ,y ) then Inc( gt );
cattruoc := gt;
Procedure Tinhslmien;
Inc( smien ,cattruoc( i ) + 1 );
Procedure GhiKQ;
Begin
Writeln(So mien mat phang duoc chia la: ' ,smien );
End;
BEGIN
Clrscr;
Nhap;
Chuanbi;
Tinhslmien;
GhiKQ;
END.
Bạn đang xem bài 7/ - 100 DE TIN HSG CO DAP AN