Треугольник Серпинского - 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.
Объяснение кода листинга программы
- const - определение констант
- procedure tr - определение процедуры треугольника
- procedure draw - определение процедуры рисования
- var - объявление переменных
- if n > 0 then - условие если n больше 0
- x1n, y1n, x2n, y2n, x3n, y3n : Real; - объявление переменных для промежуточных точек
- x1 := (x1 + x2) / 2; - вычисление средних значений x
- y1 := (y1 + y2) / 2;
- x2 := (x2 + x3) / 2;
- y2 := (y2 + y3) / 2;
- x3 := (x3 + x1) / 2;
- y3 := (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; - закрытие условий
- setwindowsize(650,550); - установка размера окна
- tr(320,10,600,470,40,470,iter); - рисование треугольника
- draw(320,10,600,470,40,470,iter); - рисование промежуточных треугольников