Вычислить площадь многоугольника - Free Pascal

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

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

Доброго времени суток. Мне кое-что непонятно насчет комбинированных типов с вариантами. Вот внизу есть программа, которая вычисляет площадь многоугольника. В зависимости от значения переменной Figure у нас будет доступ либо к переменным w и h(в случае Figure = Rectangle), L1,L2,a(в случае Figure = Triangle), и R (в случае Figure = Circle). Я правильно рассуждаю? Но вот загвоздка в том, если закоментить строки 19, 25 и 31, то программа все равно будет получать доступ ко всем переменным, вне зависимости от значения Figure. В чем дело?
program area;
uses crt;
type TFigure = (Rectangle,Triangle,Circle);
     TPolygon = record
       Area: real;
       case Figure: TFigure of
         Rectangle: (w,h :integer);
         Triangle: (L1,L2:integer; a:real);
         Circle: (R:integer);
     end;
var Polygon : TPolygon;
    t: 0..2;
begin
   clrscr;
   write('Площадь какой фигуры вы хотите вычислить? (0-Прямоугольник,1-Треугольник,2-Окружность):  ');
   readln(t);
   with Polygon do begin
    if t=0 then begin
       //Figure:=Rectangle;
       write('Введите длину и ширину прямоугольника: ');
       readln(w,h);
       area:=w*h;
    end;
    if t=1 then begin
      //Figure:=Triangle;
      write('Введите длины L1,L2 и угол между ними: ');
      readln(l1,l2,a);
      area:=l1*l2*sin(a*Pi/180);
      end;
    if t=2 then begin
     // Figure:=Circle;
      write('Введите радиус окружности R: ');
      readln(R);
      area:=Pi*sqr(R);
      end;
    writeln('Площадь: ',area);
   end;
   Readkey;
end.

Решение задачи: «Вычислить площадь многоугольника»

textual
Листинг программы
type
  LongRec = record
    case Integer of
    0: (b: array [0..3] of Byte);
    1: (l, h: Word);
  end;

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

В данном коде объявлен тип записи LongRec, который содержит поля типа Byte или Word. В этом типе записи используется конструкция case для определения типа данных, который будет использоваться для поля записи.

  1. Тип:
    • LongRec = record
    • case Integer of
    • 0: (b: array [0..3] of Byte);
    • 1: (l, h: Word);
    • end; В данном коде создается структура данных для хранения информации о многоугольнике. Поля записи содержат информацию о координатах вершин многоугольника. Поля записи LongRec:
    • b: массив из 4 байтов, содержащий координаты вершин многоугольника
    • l: слово, содержащее информацию о количестве вершин многоугольника
    • h: слово, содержащее информацию о количестве вершин многоугольника (в данном случае, вероятно, это ошибка в коде, так как поле l и h имеют одинаковые значения)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

6   голосов , оценка 4 из 5