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