Нарисуйте 3 окружности с заключенными в них треугольником, квадратом и звездой - Turbo Pascal
Формулировка задачи:
Помогите пожалуйста.
Нарисуйте 3 окружности с заключенными в них треугольником,квадратом и звездой.Все фигуры должны быть разного цвета.
Решение задачи: «Нарисуйте 3 окружности с заключенными в них треугольником, квадратом и звездой»
textual
Листинг программы
uses crt,graph; procedure Mng(x,y,n,r,c:integer); var i:integer; a,da:real; p:array[1..5]of Pointtype; begin da:=pi*2/n; if n=4 then a:=-da/2 else a:=-da/4; for i:=1 to n do begin p[i].x:=x+round(r*cos(a)); p[i].y:=y-round(r*sin(a)); a:=a+da; end; p[n+1].x:=p[1].x; p[n+1].y:=p[1].y; SetColor(c); drawpoly(n+1,p); circle(x,y,r); end; procedure Zvezda(x,y,r,c:integer); var i:integer; p:array[1..11] of Pointtype; a,da:real; begin da:=2*pi/10; a:=-da/2; for i:=1 to 10 do begin if i mod 2=0 then begin p[i].x:=x+round(r*cos(a)); p[i].y:=y-round(r*sin(a)); end else begin p[i].x:=x+round(r*cos(a)/2); p[i].y:=y-round(r*sin(a)/2); end; a:=a+da; end; p[11].x:=p[1].x; p[11].y:=p[1].y; moveto(p[1].x,p[1].y); setcolor(c); for i:=1 to 11 do lineto(p[i].x,p[i].y); circle(x,y,r); end; var x,x1,x2,x3,y1,r:integer; begin initgraph(x1,y1,''); y1:=getmaxY div 2; x1:=getmaxX div 4; x2:=getmaxX div 2; x3:=getmaxX-x1; r:=60; Mng(x1,y1,3,r,14); Mng(x2,y1,4,r,12); Zvezda(x3,y1,r,13); readln end.
Объяснение кода листинга программы
- В начале кода используются две библиотеки: crt (для работы с консолью) и graph (для работы с графикой).
- В процедуре Mng(x,y,n,r,c:integer) используются следующие переменные: x, y, n, r, c - координаты и количество точек, радиус окружности.
- Для каждой точки в массиве p[1..5]of Pointtype, координаты которой вычисляются по формуле x+round(rcos(a)), y-round(rsin(a)), где a - угол, который меняется от 0 до 2π, а r - радиус окружности, происходит следующее:
- a меняется на a+da, где da - дробная часть угла 2π, деленная на n (количество точек), чтобы получить последовательность углов.
- Координаты точки округляются до ближайшего целого числа.
- В процедуре Zvezda(x,y,r,c:integer) используются следующие переменные: x, y, r, c - координаты и количество точек, радиус окружности.
- Для каждой точки в массиве p[1..11]of Pointtype, координаты которой вычисляются по формуле x+round(rcos(a)), y-round(rsin(a)), где a - угол, который меняется от 0 до 2π, а r - радиус окружности, происходит следующее:
- a меняется на a+da, где da - дробная часть угла 2π, деленная на 10 (количество точек), чтобы получить последовательность углов.
- Координаты точки округляются до ближайшего целого числа.
- Для каждой точки в массиве p[1..11]of Pointtype, координаты которой вычисляются по формуле x+round(rcos(a)), y-round(rsin(a)), где a - угол, который меняется от 0 до 2π, а r - радиус окружности, происходит следующее:
- В конце кода используется функция initgraph(x1,y1,''), которая инициализирует графическую среду.
- Затем вычисляются координаты верхнего левого угла окна (x1, y1) и ширина и высота окна (x1, y1).
- Вызывается функция Mng(x1,y1,3,r,14), которая рисует три окружности с центрами в точках (x1, y1), (x2, y1) и (x3, y1), радиусом r и номером 14.
- Затем вызывается функция Zvezda(x3, y1, r, 13), которая рисует звезду с центром в точке (x3, y1), радиусом r и номером 13.
- В конце программы вызывается readln(), чтобы приостановить выполнение программы и дать пользователю возможность ввести данные.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д