Помощь - Поиск - Пользователи - Календарь
Полная версия: Круг на плоскости
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
qwertyo
Напишите программу для подсчета числа точек с целочисленными координатами, находящихся внутри и на границе круга с заданным радиусом r, центр которого расположена произвольной точке плоскости с координатами(x,y).
На вход программе подаются 3 вещественных числа 0<=r<=1000000, x и y.

Выведите количество искомых точек в этом круге.

Пример:
Вход: 1 0.5 0.5
Выход: 4
Krjuger
Ну так напишите программу в чем проблема? smile.gif
qwertyo
Программа есть, но когда сдаю тестирующей системе, то на втором тесте неправильный ответ выдает.

var r,x,y:real;
i1,i2,j1,j2,i,j,k:longint;
f:boolean;
begin
readln(r,x,y);
j:=0;
i:=0;
k:=0;
if frac(x-r)=0 then i1:=trunc(x-r) else i1:=trunc(x-r-frac(x-r));
if frac(x+r)=0 then i2:=trunc(x+r) else i2:=trunc(x+r-frac(x+r));
if frac(y-r)=0 then j1:=trunc(x-r) else j1:=trunc(y-r-frac(y-r));
if frac(y+r)=0 then j2:=trunc(x+r) else j2:=trunc(y+r-frac(y+r));
f:=sqr(i-x)+sqr(j-y)<=r*r;
i:=i1;
while (i<=i2)and f do
begin
j:=j1;
while (j<=j2)and f do
begin
k:=k+1;
j:=j+1;
end;
i:=i+1;
end;
write(k);
readln
end.
Lapp
Цитата(qwertyo @ 23.09.2011 19:05) *
Программа есть, но когда сдаю тестирующей системе, то на втором тесте неправильный ответ выдает.
Н-да.. хорошо еще, что не выдает ... гм, чего-нибудь еще похлеще )). Уж ты накрутил..

Вот тебе главный цикл. Я тут использую функции Тарасбера, Up и Down. Ты можешь их найти здесь:
Проверка действительного числа на целость

  n:= 0;
for i:= Up(x-r) to Down(x+r) do begin
a:= Sqrt(r*r-i*i);
n:= n + Down(y+a) - Up(y-a) + 1
end;
write(n);
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.