Рисование дерева с использованием рекурсивной функции - Pascal ABC

  1. Нарисовать дерево с помощью рекурсии.


textual

Код:

uses graphABC;
{процедура рисования одной линии по заданным параметрам
координаты начала, длина и угол наклона}
Procedure lineto1(x,y:integer; l,u:real);
begin
   line(x,y,round(x+l*cos(u)), round(y-l*sin(u)));
end;
{рекурсивная процедура рисования всего дерева
параметры: координаты начала-низ, начальная длина, начальный угол от оси Х}
function Draw(x,y,n:integer; l,u:real):integer;
begin
if n=0 then Draw:=0{выход из рекурсии}
else
 begin
  l:=l*0.7;{уменьшаем}
  lineto1(x,y,l,u);{рисуем первую линию}
  dec(n);{уменьшаем уровень}
  x:=round(x+l*cos(u));{вычисляем новые координаты}
  y:=round(y-l*sin(u));
  Draw:=Draw(x,y,n,l,u+pi/8);{рекурсивно вызываем 1 дополнительную}
  Draw:=Draw(x,y,n,l,u-pi/8);{2}
 end;
end;
begin
setpencolor(clGreen);
{вызываем процедуру с фактическими параметрами:
начало посередине экрана внизу, начальная линия=20, начальный угол=90 гр.}
Draw(windowwidth div 2,windowheight-20,20,150,pi/2);
end.


Похожие ответы
  1. Помогите, пожалуйста, нарисовать забор в паскале, с помощью цикла)

  1. Разработать программу, которая обеспечит рисование окружности в центре экрана, окруженной еще тремя окружностями меньшего диаметра, окруженными еще тремя окружностями меньшего диаметра и т.д. Глубина рисунка задается пользователем. Цвет окружностей меняется. P.S. Разработать программу в соответствии со своим вариантом, выполняющую обработку данных на основе рекурсивных алгоритмов (Pascal,желательно ABC).

  1. Задача №2 Садовник посадил N деревьев в один ряд. После посадки деревьев садовнику нужно их покрасить. В его распоряжении есть краска трех цветов:белая, синяя и оранжевая.Сколько способов покраски деревьев есть у него, если никакие два соседних дерева нельзя красить в одинаковый цвет.Входные данные. В единственной строке входного файла INPUT.TXT Записанно одно натуральное число-количество деревьев N(1<=N<=50)Выходные данные В единственную строку выходного файла OUTPUT.TXT нужно вывести одно число-количество способов покраски.

  1. 3. Разработать программу работы с бинарным деревом. Программа должна содержать следующие процедуры, вызываемые из меню: - построение пустого дерева; - добавление нового элемента; - удаление указанного элемента; - просмотр дерева в следующем порядке: узел, левая ветвь, правая ветвь. Как сделать именно такой просмотр. Я просто нашел другой просмотр (левая , правая, узел). Вот код:

  1. Помогите, пожалуйста, решением задачи, очень нужно! Общее задание: Реализовать следующие функции для работы с деревом поиска: 1. Добавление нового узла. 2. Удаление узла. 3. Сохранение данных в типизированный файл. 4. Построение дерева поиска из типизированного файла. 5. Вывод дерева на экран в графическом виде. Само задание: Реализовать дерево массивом. Написать программу прошивки дерева согласно обратному обходу. Определить, является ли узел со значением m предком узла n.

  1. В целочисленный массив, размерность (количество элементов) которого задается в программе константой, занесите с помощью датчика случайных чисел значения, задающие радиусы кругов. Минимально возможный радиус круга равен 1, а максимально возможный таков, что центры кругов (их количество определяется размерностью массива) равномерно распределяются по всей ширине графического окна. Нарисуйте в середине (по высоте) графического окна круги, используя значения радиусов из массива. При этом круг (круги, если их несколько) с минимальным значением радиуса в массиве рисуется синим цветом, а с максимальным значением радиуса в массиве — желтым. Все остальные круги рисуются красным цветом. P.S. использовать библиотеку GraphABC

  1. Составьте пожалуйста программу, которая рисует радугу (процедура colArc(x,y,R). Спасибо!