IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Рекурсия и графика, Гдето ошибка
Anastacia Adesso
сообщение 13.09.2006 17:39
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 92
Пол: Мужской
Реальное имя: Stanislav

Репутация: -  0  +


Ребята!
Где-то тут ошибка.
Условие в том, что надо рисовать сначала крест потом круги с радиусом в его концах. А потом опять крест.
И так чтоб все потихоньку уменьшалось в 2 раза.
Вот сделала, но надо чтоб он не рисовал ничего в сторону центра.
Не подскажете, пожалуйста, в чём прикол?


Прикрепленные файлы
Прикрепленный файл  UZD3.PAS ( 1014 байт ) Кол-во скачиваний: 203


--------------------
Ben sensiz yaşayamam
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Michael_Rybak
сообщение 13.09.2006 17:52
Сообщение #2


Michael_Rybak
*****

Группа: Модераторы
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

Репутация: -  32  +


Добавь параметр came_from, который будет означать, откуда мы пришли (по какому направлению). Получится что-то такое (не запускал):

(*в начале программы*)
const DIR_LEFT = 0;
const DIR_UP = 1;
const DIR_RIGHT = 2;
const DIR_DOWN = 3;
const DIR_NONE = 4;

...

procedure ll(x,y,l,sk,came_from:integer);
begin
if came_from <> DIR_UP then line(x,y, x, y+l);
if came_from <> DIR_DOWN then line(x,y, x, y-l);
if came_from <> DIR_LEFT then line(x,y, x+l, y);
if came_from <> DIR_RIGHT then line(x,y, x-l, y);
if sk>1 then begin
if came_from <> DIR_LEFT then ll(x+l, y, l div 4, sk-1, DIR_RIGHT);
if came_from <> DIR_RIGHT then ll(x-l, y, l div 4, sk-1, DIR_LEFT);
if came_from <> DIR_DOWN then ll(x, y-l, l div 4, sk-1, DIR_UP);
if came_from <> DIR_UP then ll(x, y+l, l div 4, sk-1, DIR_DOWN);
end;
end;

(*в rr аналогично*)

...

initgraph(gr,gm, 'z:\');
ll(x,y,l,sk, DIR_NONE);
rr(x,y,r,sk, DIR_NONE);
...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 21.07.2025 11:23
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"