Треугольник Серпинского - Pascal ABC (16553)

Узнай цену своей работы

Формулировка задачи:

Дан треугольник Серпинского. (Одинаковые) события надо выделить (одинаковыми) цветами.
используя это

Решение задачи: «Треугольник Серпинского»

textual
Листинг программы
program FracSierp2;
uses GraphABC;
 
const
        iter = 5;
        //не знаю как назначить в АВС цвет номерами как в Турбо
        c:array[1..iter]of integer=(clRed,clGreen,clBlue,clBrown,clAqua);
procedure tr(x1, y1, x2, y2, x3, y3: Real;i:integer);
begin
        setpencolor(c[i]);
        Line(Round(x1), Round(y1), Round(x2), Round(y2));
        Line(Round(x2), Round(y2), Round(x3), Round(y3));
        Line(Round(x3), Round(y3), Round(x1), Round(y1));
end;
 
procedure draw(x1, y1, x2, y2, x3, y3: Real; n: Integer);
var
        x1n, y1n, x2n, y2n, x3n, y3n : Real;
begin
        if  n > 0  then
        begin
                x1n := (x1 + x2) / 2;
                y1n := (y1 + y2) / 2;
                x2n := (x2 + x3) / 2;
                y2n := (y2 + y3) / 2;
                x3n := (x3 + x1) / 2;
                y3n := (y3 + y1) / 2;
                tr(x1n, y1n, x2n, y2n, x3n, y3n,n);
 
                draw(x1, y1, x1n, y1n, x3n, y3n, n - 1);
                draw(x2, y2, x1n, y1n, x2n, y2n, n - 1);
                draw(x3, y3, x2n, y2n, x3n, y3n, n - 1);
        end;
end;
 
begin
        setwindowsize(650,550);
        tr(320,10,600,470,40,470,iter);
        draw(320,10,600,470,40,470,iter);{}
 
 
end.

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

  1. const - определение констант
  2. procedure tr - определение процедуры треугольника
  3. procedure draw - определение процедуры рисования
  4. var - объявление переменных
  5. if n > 0 then - условие если n больше 0
  6. x1n, y1n, x2n, y2n, x3n, y3n : Real; - объявление переменных для промежуточных точек
  7. x1 := (x1 + x2) / 2; - вычисление средних значений x
  8. y1 := (y1 + y2) / 2;
  9. x2 := (x2 + x3) / 2;
  10. y2 := (y2 + y3) / 2;
  11. x3 := (x3 + x1) / 2;
  12. y3 := (y3 + y1) / 2;
  13. tr(x1n, y1n, x2n, y2n, x3n, y3n,n); - рисование треугольника
  14. draw(x1, y1, x1n, y1n, x3n, y3n, n - 1); - рисование промежуточных треугольников
  15. draw(x2, y2, x1n, y1n, x2n, y2n, n - 1);
  16. draw(x3, y3, x2n, y2n, x3n, y3n, n - 1);
  17. end; - закрытие условий
  18. setwindowsize(650,550); - установка размера окна
  19. tr(320,10,600,470,40,470,iter); - рисование треугольника
  20. draw(320,10,600,470,40,470,iter); - рисование промежуточных треугольников

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

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