Рекурсивное рисование окружности - Pascal ABC
Формулировка задачи:
Разработать программу, которая обеспечит рисование окружности в центре экрана, окруженной еще тремя окружностями меньшего диаметра, окруженными еще тремя окружностями меньшего диаметра и т.д. Глубина рисунка задается пользователем. Цвет окружностей меняется.
P.S.
Разработать программу в соответствии со своим вариантом, выполняющую обработку данных на основе рекурсивных алгоритмов (Pascal,желательно ABC).
Решение задачи: «Рекурсивное рисование окружности»
textual
Листинг программы
uses graphABC,crt; const k=2;//коэффициент уменьшения радиуса cl:array[1..6] of integer=(clAqua,clRed,clGreen,clBlue,clTeal,clFuchsia);//цвета var x,y,r,d,n,c:integer; //функция рисования, x,y-координаты цента,r-начальный радиус,n-глубина рекурсии function ris(x,y,r,n:integer):integer; begin if n=0 then ris:=0 else begin setpencolor(cl[n]); circle(x,y,r); dec(n); ris:=ris(x,y-round(k*r),round(r/k),n); ris:=ris(x-round(k*r*cos(pi/6)),y+round(k*r*sin(pi/6)),round(r/k),n); ris:=ris(x+round(k*r*cos(pi/6)),y+round(k*r*sin(pi/6)),round(r/k),n); end; end; begin r:=60; repeat write('N=[1..6] n='); readln(n); until n in [1..6]; clrscr; hidecursor; setwindowsize(500,500); centerwindow; x:=windowwidth div 2; y:=x; ris(x,y,r,n); end.
Объяснение кода листинга программы
- В начале кода подключаются необходимые библиотеки graphABC и crt.
- Затем определяется константа k, которая представляет коэффициент уменьшения радиуса.
- Создается массив cl цветов, в котором содержатся цвета: clAqua, clRed, clGreen, clBlue, clTeal, clFuchsia.
- Определены переменные x, y, r, d, n, c, которые будут использоваться в функции рисования.
- Определена функция ris, которая является рекурсивной функцией для рисования окружности. Если n равно 0, то функция возвращает 0. В противном случае, устанавливается цвет пера на цвет из массива cl, затем рисуется окружность с параметрами x, y и r. После этого уменьшается значение n на 1 и вызывается рекурсивно три раза с новыми значениями x, y и r.
- В основной части кода устанавливается начальный радиус r равным 60. Затем в цикле повторяется запрос пользователя о выборе числа n от 1 до 6. После каждого запроса выводится сообщение
N=[1..6] n=
и считывается новое значение n. Цикл продолжается до тех пор, пока пользователь не введет число, которое не принадлежит диапазону от 1 до 6. - После окончания цикла выводится сообщение
N=[1..6] n=
и выводится новое значение переменной n. Затем очищается экран и скрывается курсор мыши. - Устанавливается размер окна приложения 500x500 пикселей.
- Вычисляются координаты центра x и y.
- Вызывается функция ris с параметрами x, y, r, n.
- Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д