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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
AIRWALK
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 19
#1

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

12.05.2010, 11:12. Просмотров 906. Ответов 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++
Нарисовать прямоугольник - обводка одними символами, заливка - другими. Пользователь задаёт высоту-ширину, а так же символы.С++

рекурсия в с++ ( ?: = if() else) - C++
Подскажите, пожалуйста, как сделать с помощью рекурсивной функции? int sum (int *arr, size_t size) { return size ? *arr + sum...

Рекурсия - C++
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <iostream> int main() { int mass = {0}, ...

рекурсия - C++
Добрый вечер! Пожалуйста, помогите разобраться с рекурсией. Как ее вычислять, когда у меня есть всего один аргумент, я, вроде бы,...

Рекурсия - C++
Как переделать программу в рекурсию? char S='S', T='T', M={NULL}; int ST=5,i=0,j=0; int TS; void Per() { M=S; ...

Рекурсия - C++
Есть задача, написал решение но ответ неправильный. Задача: Решение: #include <iostream> using namespace std; int a, n, m, t,...

Рекурсия - C++
В общем нужно вывести биноминальные коэффициенты последовательности.... т.е есть последовательность - скажем вектор 12345 n = size =...

Рекурсия - C++
Вопрос не по коду. Вот есть у меня рекурсивная функция, глубина рекурсии достигает 10 в среднем. Эта функция вызывается огромное (порядка...

Рекурсия - C++
Имитировать выполнение программы по рекурсивной функцией. Привести пример

Рекурсия - C++
не знаю как это сделать..помогите


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru