Рекурсивное рисование окружности - 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.

Объяснение кода листинга программы

  1. В начале кода подключаются необходимые библиотеки graphABC и crt.
  2. Затем определяется константа k, которая представляет коэффициент уменьшения радиуса.
  3. Создается массив cl цветов, в котором содержатся цвета: clAqua, clRed, clGreen, clBlue, clTeal, clFuchsia.
  4. Определены переменные x, y, r, d, n, c, которые будут использоваться в функции рисования.
  5. Определена функция ris, которая является рекурсивной функцией для рисования окружности. Если n равно 0, то функция возвращает 0. В противном случае, устанавливается цвет пера на цвет из массива cl, затем рисуется окружность с параметрами x, y и r. После этого уменьшается значение n на 1 и вызывается рекурсивно три раза с новыми значениями x, y и r.
  6. В основной части кода устанавливается начальный радиус r равным 60. Затем в цикле повторяется запрос пользователя о выборе числа n от 1 до 6. После каждого запроса выводится сообщение N=[1..6] n= и считывается новое значение n. Цикл продолжается до тех пор, пока пользователь не введет число, которое не принадлежит диапазону от 1 до 6.
  7. После окончания цикла выводится сообщение N=[1..6] n= и выводится новое значение переменной n. Затем очищается экран и скрывается курсор мыши.
  8. Устанавливается размер окна приложения 500x500 пикселей.
  9. Вычисляются координаты центра x и y.
  10. Вызывается функция ris с параметрами x, y, r, n.
  11. Конец программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.4 из 5
Похожие ответы