Форум программистов, компьютерный форум CyberForum.ru

Рекурсия. Заливка - C++

Восстановить пароль Регистрация
 
AIRWALK
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 19
12.05.2010, 11:12     Рекурсия. Заливка #1
Написать функцию заливки, используя закон
1
4 * 2
3
(единица и тройка над звёздочкой и под звёздочкой соответственно)
Начальная точка – (100-9*10;100-9*10).


Из теоретических сведений:
Открыть
Рассмотрим применение рекурсии на примере функции заливки замкнутой области. Опишем закон заливки как


1


4
*
2


3










где * - начальная точка. Заливку выполняет рекурсивная функция, которая сначала проверяет, не залита еще точка с переданными ей координатами, в этом случае происходит выход из функции. Иначе функция вызывает сама себя до тех пор, пока не найдет следующую залитую точку.

Рассмотрим заливку квадрата 10*10. Начальная точка заливки – (8;3). Сначала функция ставит точки, двигаясь вверх, пока не встретит границу квадрата. Потом вправо, потом вниз, потом влево.



0
1
2
3
4
5
6
7
8
9
10

1
100
81
80
61
60
41
40
3
4
5

2
99
82
79
62
59
42
39
2
23
6

3
98
83
78
63
58
43
38
1
22
7

4
97
84
77
64
57
44
37
24
21
8

5
96
85
76
65
56
45
36
25
20
9

6
95
86
75
66
55
46
35
26
19
10

7
94
87
74
67
54
47
34
27
18
11

8
93
88
73
68
53
48
33
28
17
12

9
92
89
72
69
52
49
32
29
16
13

10
91
90
71
70
51
50
31
30
15
14


Программу напишем с помощью учебной программы Grafics.



void zal (int x, int y) //функция заливки

{

if (GetPixel(x,y)==GetPixel(100,100))return; //если цвет текущей точки равен границе, выход

PutPixel(x,y); //иначе ставим точку с координатами х и у.

zal(x,y-1); //вызов функции самой себя с

//движением по у вверх

zal(x+1,y); //вызов функции самой себя с движением по х

//вправо

zal(x,y+1); //вызов функции самой себя с движением по у

//вниз

zal(x-1,y); //движение по х влево



}



int main(LPVOID param)



{



Line(0,0,100,0); // рисуем квадрат 100*100

//начиная с начала координат

LineTo(100,100);

LineTo(0,100);

LineTo(0,0);



zal(51,50); //вызываем функцию заливки с начальной точкой

//(51;50)

return 0;



}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2010, 11:12     Рекурсия. Заливка
Посмотрите здесь:

Рекурсия C++
C++ Рекурсия
Рекурсия C++
Рекурсия C++
C++ Рекурсия
C++ Рекурсия
C++ Заливка на c++
C++ Заливка контуров в текстовом файле

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AIRWALK
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 19
16.05.2010, 12:13  [ТС]     Рекурсия. Заливка #2
Неужели никто не знает как делать?) Господа программисты, очень надеюсь на вашу помощь.
Yandex
Объявления
16.05.2010, 12:13     Рекурсия. Заливка
Ответ Создать тему
Опции темы

Текущее время: 14:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru