|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - [решено] Помогите с задачей /Pascal/ |
|
|
Delphi - [решено] Помогите с задачей /Pascal/
|
![]() Сообщения: 3652 |
Собственно, задача:
Цитата:
![]() |
||
------- Отправлено: 14:08, 21-10-2009 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Drongo, Habetdin, Ошибка логическая, поэтому я так сильно ругаюсь. Мы до Паскаля еще не дошли.
Скобки в данном случае не причем. Ну причем конечно, но не в них дело. Кстати я бы их оставил, они погоды не сделают, но и не помешают. |
------- Последний раз редактировалось lxa85, 28-10-2009 в 22:32. Причина: поправил Отправлено: 22:02, 28-10-2009 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Сутки прошли.
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:
Да, решение более удачно чем ввязываться в вычисление корня (хотя требует вдвое большую разрядную сетку), но ошибка была пропущена, и далее начался твой копи-паст. Habetdin, не в обиду, но на будущее. Внимательно смотри, что ты копируешь! Успехов! ![]() P.S. emTPy, простите, если задел. |
|
------- Отправлено: 22:56, 29-10-2009 | #22 |
![]() Сообщения: 3652
|
Профиль | Сайт | Отправить PM | Цитировать Вот что получилось, работает:
program Park; var r1,r2,x,y,n: integer; l:real; begin assign(input,'input.txt'); reset(input); read(input,r1,r2); close(input); n:=0; for x:=-r2 to r2 do begin for y:=-r2 to r2 do begin l:=sqrt(x*x+y*y); if (l>r1) and (l<r2) then n:=n+1; end; end; assign(output,'output.txt'); rewrite(output); write(output,n); close(output); end. ![]() Upd: судя по незамеченному посту #23, оптимизация возможна.. ![]() |
------- Отправлено: 11:04, 10-11-2009 | #23 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать оптимизация возможно если рассмотреть одну четверть полученный результат умножить на 4
и положительные части осей умножив результат осей на 2 |
Отправлено: 22:46, 11-11-2009 | #24 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Всё о TURBO PASCAL (обсуждение, помощь в написание программ, ошибки, Pascal ABC) | Loading | Программирование и базы данных | 41 | 20-05-2015 15:28 | |
C/C++ - помогите с задачей по СИ!!! | feliks2009 | Программирование и базы данных | 4 | 16-11-2009 00:18 | |
C/C++ - [решено] Помогите с задачей! | FeuerEngel | Программирование и базы данных | 3 | 28-05-2009 09:58 | |
Delphi - [решено] Помогите с комбинаторной задачей! | ALI | Программирование и базы данных | 16 | 01-01-2009 14:10 | |
C/C++ - Помогите с задачей по Тройкам Пифагора | quaker_strelok | Программирование и базы данных | 10 | 01-12-2008 16:44 |
|