Провести сечение, проходящее через диагональ основания пирамиды и середину бокового ребра - Pascal ABC

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

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

В правильной четырехугольной пирамиде провести сечение, проходящее через диагональ основания и середину бокового ребра.

Решение задачи: «Провести сечение, проходящее через диагональ основания пирамиды и середину бокового ребра»

textual
Листинг программы
uses graphABC;
type Point=record
           x,y:integer;
           end;
var a,h,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7,i,b1,b2:integer;
    p1,p2,p3 :array[1..4] of Point;
    k1,k2:real;
begin
{задняя левая}
x1:=200;y1:=250;
{сторона, высота}
a:=300;h:=300;
{остальные точки основания}
x2:=x1+a;y2:=y1;{задняя правая}
x3:=x1-round(a*0.71*0.71)+a;y3:=y1+round(a*0.71*0.71);{передняя правая}
x4:=x1-round(a*0.71*0.71);y4:=y3;{передняя левая}
{центр основания}
x5:=x4+round(a/2*(1+0.71*0.71));y5:=y1+round((y3-y1)/2);
{вершина}
x6:=x5;y6:=y5-h;
{координаты вершины сечения}
x7:=(x2+x6) div 2; y7:=(y2+y6) div 2;{середина ребра}
{рисование}
{сечение}
p3[1].x:=x1;p3[1].y:=y1;
p3[2].x:=x7;p3[2].y:=y7;
p3[3].x:=x3;p3[3].y:=y3;
p3[4].x:=x1;p3[4].y:=y1;
setpencolor(clRed);
setbrushstyle(bsHorizontal);
polygon(p3,4);
floodfill(x1+10,y1,clRed);
{перед}
p1[1].x:=x4;p1[1].y:=y4;
p1[2].x:=x6;p1[2].y:=y6;
p1[3].x:=x3;p1[3].y:=y3;
p1[4].x:=x4;p1[4].y:=y4;
setbrushstyle(bsClear);
setpencolor(clBlue);
polygon(p1,4);
{право}
p2[1].x:=x3;p2[1].y:=y3;
p2[2].x:=x6;p2[2].y:=y6;
p2[3].x:=x2;p2[3].y:=y2;
p2[4].x:=x3;p2[4].y:=y3;
polygon(p2,4);
{внутри}
setpenstyle(psDash);
line(x2,y2,x4,y4);
line(x1,y1,x4,y4);
line(x1,y1,x2,y2);
line(x1,y1,x6,y6);
end.

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

  1. Объявлены переменные и типы данных:
    • uses graphABC;
    • type Point=record x,y:integer; end;
    • var a,h,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7,i,b1,b2:integer;
    • p1,p2,p3 :array[1..4] of Point;
    • k1,k2:real;
  2. Задаются координаты точек:
    • {задняя левая}
    • x1:=200;y1:=250;
    • {сторона, высота}
    • a:=300;h:=300;
    • {остальные точки основания}
    • x2:=x1+a;y2:=y1;
    • x3:=x1-round(a0.710.71)+a;y3:=y1+round(a0.710.71);
    • x4:=x1-round(a0.710.71);y4:=y3;
    • {центр основания}
    • x5:=x4+round(a/2(1+0.710.71));y5:=y1+round((y3-y1)/2);
    • {вершина}
    • x6:=x5;y6:=y5-h;
    • {координаты вершины сечения}
    • x7:=(x2+x6) div 2; y7:=(y2+y6) div 2;
    • {середина ребра}
    • x8:=(x3+x4) div 2; y8:=(y3+y4) div 2;
  3. Рисуется сечение и остальные фигуры:
    • {сечение}
    • p3[1].x:=x1;p3[1].y:=y1;
    • p3[2].x:=x7;p3[2].y:=y7;
    • p3[3].x:=x3;p3[3].y:=y3;
    • p3[4].x:=x1;p3[4].y:=y1;
    • setpencolor(clRed);
    • setbrushstyle(bsHorizontal);
    • polygon(p3,4);
    • floodfill(x1+10,y1,clRed);
    • {перед}
    • p1[1].x:=x4;p1[1].y:=y4;
    • p1[2].x:=x6;p1[2].y:=y6;
    • p1[3].x:=x3;p1[3].y:=y3;
    • p1[4].x:=x4;p1[4].y:=y4;
    • setbrushstyle(bsClear);
    • setpencolor(clBlue);
    • polygon(p1,4);
    • {право}
    • p2[1].x:=x3;p2[1].y:=y3;
    • p2[2].x:=x6;p2[2].y:=y6;
    • p2[3].x:=x2;p2[3].y:=y2;
    • p2[4].x:=x3;p2[4].y:=y3;
    • polygon(p2,4);
    • {внутри}
    • setpenstyle(psDash);
    • line(x2,y2,x4,y4);
    • line(x1,y1,x4,y4);
    • line(x1,y1,x2,y2);
    • line(x1,y1,x6,y6);
  4. Значения переменных после выполнения программы:
    • a,h,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7,i,b1,b2: содержат значения, указанные в коде.

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

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