Вычислить площадь многоугольника - 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 имеют одинаковые значения)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д