40 lines
901 B
ObjectPascal
40 lines
901 B
ObjectPascal
program project1;
|
|
|
|
uses Crt, Math, SysUtils;
|
|
|
|
var N, NO: Integer;
|
|
x, y: Integer;
|
|
Sum: Real;
|
|
IsRunning: Boolean;
|
|
|
|
const R: Integer = 20000; { Радиус круга }
|
|
|
|
begin
|
|
IsRunning := true;
|
|
N := 0;
|
|
NO := 0;
|
|
Sum := 0;
|
|
Randomize;
|
|
ClrScr;
|
|
|
|
while IsRunning do
|
|
begin
|
|
Inc(N); { Количество экспериментов }
|
|
x := RandomRange(-R, R); { Определяем случайную точку }
|
|
y := RandomRange(-R, R);
|
|
|
|
if Sqrt(x * x + y * y) <= R then NO := NO + 1; { Если она лежит в круге }
|
|
|
|
Sum := Sum + 4 * NO / N;
|
|
|
|
GotoXY(1, 1);
|
|
WriteLn('Количество точек: ', IntToStr(N));
|
|
WriteLn('Текущее значение PI: ', FloatToStr(4 * NO / N));
|
|
WriteLn('Среднее значение PI: ', FloatToStr(Sum / N));
|
|
|
|
if KeyPressed and (ReadKey = ^C) then IsRunning := false;
|
|
end;
|
|
|
|
end.
|
|
|