1999 - MIỀN MẶT PHẲNG CHIA BỞI CÁC ĐƯỜNG THẲNG (DÀNH CHO HỌC SIN...

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.