Форум программистов, компьютерный форум, киберфорум
Наши страницы
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
ola-la
0 / 0 / 0
Регистрация: 09.01.2015
Сообщений: 21
1

Рисование кругов рекурсией

09.01.2015, 20:52. Просмотров 1032. Ответов 5
Метки нет (Все метки)

Рисование кругов рекурсией
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2015, 20:52
Ответы с готовыми решениями:

Определить, в каком из кругов находится наибольшее число кругов из данного множества кругов
Круг задается радиусом и координатами центра. Имеется n кругов (n20). Определить, в каком из...

Рисование кругов в Паскале
Пишу курсовую (игра), лягушка прыгает по болоту. И вот на что наткнулся Код: uses graph; ...

Програма с рекурсией
Помогите,мне надо описать рекурсивную функцию,которая для заданого ε>0 обсчитывала б границу...

Рисование кругов
Задача: нарисовать несколько кругов (закрашенных окружностей) с центрами в заданных точках,...

Рисование кругов
В целочисленный массив, размерность (количество элементов) которого задается в программе...

5
ola-la
0 / 0 / 0
Регистрация: 09.01.2015
Сообщений: 21
10.01.2015, 20:14  [ТС] 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
uses GraphABC;
procedure krug(xc,yc,r:real);
var n,x,y:integer;
alf:real;
begin
for n:=1 to 720 do begin
alf:=n;
x:=round(xc+r*sin(alf));
y:=round(yc-r*cos(alf));
PutPixel(x,y,clBlack);
end;
end;
procedure krugi(xc,yc,r:integer);
var i:integer;
begin
krug(xc,yc,r);
if r<50 then exit;
krugi(xc-90 ,yc  ,r div 10);
krugi(xc+90  ,yc ,r div 10);
krugi(xc-68 ,yc,r div 3);
krugi(xc+68,yc,r div 3);
krugi(xc-55 ,yc+r div 5  ,r div 10);
krugi(xc+55 ,yc+r div 5  ,r div 10);
krugi(xc-55 ,yc-r div 5  ,r div 10);
krugi(xc+55 ,yc-r div 5  ,r div 10);
end;
begin
setwindowsize(800,500);
krugi(300,200,100);
end.
уже решено мной, спасибо всем кто думал, может кому пригодится

Добавлено через 21 час 33 минуты
Препод не доволен такой рекурсией, надо чтобы не через параметр-радиус, помогите кто может, что в программе поменять????
0
Puporev
Модератор
56596 / 43284 / 29927
Регистрация: 18.05.2008
Сообщений: 102,964
10.01.2015, 20:20 3
Цитата Сообщение от ola-la Посмотреть сообщение
надо чтобы не через параметр-радиус
Это как? Обычно параметрами являются координаты центра (x,y), радиус (r) и глубина рекурсии (n)
0
ola-la
0 / 0 / 0
Регистрация: 09.01.2015
Сообщений: 21
10.01.2015, 20:51  [ТС] 4
У меня координаты центра заданы числовыми значениями, а надо чтобы меняя параметры рекурсии мы можем варьировать количество рекурсивных вложенностей и получать разные картинки. У нас первый уровень - это одна большая окружность. Второй уровень - внутри первой окружности рисуются две окружности поменьше. Третий уровень - внутри каждой окружности второго уровня рисуются три окружности поменьше. Это мы и видим на картинке. Каким будет четвертый уровень? - Внутри каждой из окружностей третьего уровня будет нарисовано по четыре окружности меньшего радиуса. Пятый уровень - внутри каждой из четырех окружностей четвертого уровня рисуется пять маленьких окружностей и т.д. если мы будем менять радиус, его размер в большую или меньшую сторону, то мы не получим ни предыдущего (второго) уровня, ни следующего (четвертого) уровня... и это главный недочет решения.
0
Puporev
Модератор
56596 / 43284 / 29927
Регистрация: 18.05.2008
Сообщений: 102,964
10.01.2015, 22:35 5
Лучший ответ Сообщение было отмечено ola-la как решение

Решение

Так пойдет?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
uses GraphABC,Crt;
procedure krug(x,y,r,k,n:integer;u:real);
var i:byte;
begin
if n=1 then circle(x,y,r)
else
 begin
  circle(x,y,r);
  inc(k);
  for i:=1 to k do
   begin
    krug(x+round(2*r/3*cos(u)),y-round(2*r/3*sin(u)),r div 3,k,n-1,u);
    u:=u+2*pi/k;
   end;
  end;
end;
 
var x,y,n:integer;
begin
repeat
write('Глубина рекурсии от 1 до 6 n=');
readln(n);
until n in [1..6];
clrscr;
hidecursor;
setwindowsize(700,700);
centerwindow;
setbrushstyle(bsClear);
x:=windowwidth div 2;
krug(x,x,350,1,n,0);
end.
1
ola-la
0 / 0 / 0
Регистрация: 09.01.2015
Сообщений: 21
10.01.2015, 23:08  [ТС] 6
Так вообще очень замечательно. Все пожелания препода учтены.Большое человеческое спасибо!
0
10.01.2015, 23:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2015, 23:08

Рисование кругов AutoLisp
помогите пожалуйста сделать задание (Autocad через лисп ) Нарисовать несколько графических...

Рисование линий, кругов и т.д.
В общем пишу что-то типа Паинта умею рисовать круги итд, но когда рисую круги, линии,...

Рисование светофорных кругов
Помогите с задачей) Разработать приложение, рисующее светофорные круги. Самые большие круги...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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