begin Write('Введите величину радиуса окружности: '); Readln(r); r2 := sqr(r); n := 0; {1. Точки в первой четверти без учета попавших на оси } x := 1; while x <= r do begin y := 1; while y <= r do begin if sqr(x) + sqr(y) <= r2 then n := n + 1; y := y + 1 end; x := x + 1 end; n := 4 * n; { учли точки в остальных трех четвертях } n := n + 1; { учли точку в начале координат } n := n + 4 * trunc(r); { учли точки, находящиеся на координатных осях } Writeln('Число точек, принадлежащих кругу, равно ', n); end.
Тестовое решение: Введите величину радиуса окружности: 3 Число точек, принадлежащих кругу, равно 29
Const eps=1e-8; var a,b,c:real; s1,s2,s3:integer; begin read(a); read(b); read(c); if a>0 then s1:=s1+1; if b>0 then s1:=s1+1; if c>0 then s1:=s1+1; if a<0 then s2:=s2+1; if b<0 then s2:=s2+1; if c<0 then s2:=s2+1; if frac(a)<eps then s3:=s3+1; if frac(b)<eps then s3:=s3+1; if frac(c)<eps then s3:=s3+1; writeln('Число положительных чисел = ',s1); writeln('Число отрицательных чисел = ',s2); writeln('Число целых чисел = ',s3); end.
/* Для подсчета целых чисел использовалась функция frac - она возвращает дробную часть числа. При сравнении дробных чисел полезно отсекать разряды после скажем 8 знака после запятой, что и было сделано путем введения константы eps . */
r, r2, x, y: real;
n: integer;
begin
Write('Введите величину радиуса окружности: '); Readln(r);
r2 := sqr(r); n := 0;
{1. Точки в первой четверти без учета попавших на оси }
x := 1;
while x <= r do
begin
y := 1;
while y <= r do
begin
if sqr(x) + sqr(y) <= r2 then n := n + 1;
y := y + 1
end;
x := x + 1
end;
n := 4 * n; { учли точки в остальных трех четвертях }
n := n + 1; { учли точку в начале координат }
n := n + 4 * trunc(r); { учли точки, находящиеся на координатных осях }
Writeln('Число точек, принадлежащих кругу, равно ', n);
end.
Тестовое решение:
Введите величину радиуса окружности: 3
Число точек, принадлежащих кругу, равно 29
var a,b,c:real;
s1,s2,s3:integer;
begin
read(a);
read(b);
read(c);
if a>0 then s1:=s1+1;
if b>0 then s1:=s1+1;
if c>0 then s1:=s1+1;
if a<0 then s2:=s2+1;
if b<0 then s2:=s2+1;
if c<0 then s2:=s2+1;
if frac(a)<eps then s3:=s3+1;
if frac(b)<eps then s3:=s3+1;
if frac(c)<eps then s3:=s3+1;
writeln('Число положительных чисел = ',s1);
writeln('Число отрицательных чисел = ',s2);
writeln('Число целых чисел = ',s3);
end.
/* Для подсчета целых чисел использовалась функция frac - она возвращает дробную часть числа. При сравнении дробных чисел полезно отсекать разряды после скажем 8 знака после запятой, что и было сделано путем введения константы eps . */