Сутки прошли.
Habetdin, вспоминаем теорему Пифагора. "Сумма квадратов катетов равна квадрату гипотенузы."
Мы воспользовались ей для нахождения расстояния от центра до дерева.
С математической точки зрения, операция извлечения квадратного корня - не представляет сложностей.
С аппаратной точки зрения - это наказание. (медленное, не точное, просто брр) Поэтому от него пытаются уйти всем возможными способами. Чтобы вообще с плавающей запятой не работать.
Из теоремы имеем:
A^2+B^2=C^2; (1)
sqrt(A^2+B^2) = C; (2)
Что имеем :
x*x+y*y < r2; -> X^2 + Y^2 = R2 (3)
Проводим аналогию формулы 3 и 1, разницу видишь? Вот она ошибка. У тебя была правильная попытка ввести квадратный корень, но затем он потерялся.
Самым элегантным, по моему, решением является возведение R2 в квадрат.
if ((x*x+y*y< r2
*r2 ) and (x*x+y*y> r1
*r1)) then k:=k+1;
В таком случае программа выдает верное решение.
Неверное условие началось с 7ого сообщения от участника
emTPy.
Цитата
emTPy:
for i:=-r2 to r2 do
for j:=-r2 to r2 do
if ((i*i+j*jr1)) then rez:=rez+1;
Delphi - [решено] Помогите с задачей /Pascal/
.
Да, решение более удачно чем ввязываться в вычисление корня (хотя требует вдвое большую разрядную сетку), но ошибка была пропущена, и далее начался твой копи-паст.
Habetdin, не в обиду, но на будущее. Внимательно смотри, что ты копируешь!
Успехов!
P.S.
emTPy, простите, если задел.