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

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

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

Доброго времени суток. Мне кое-что непонятно насчет комбинированных типов с вариантами. Вот внизу есть программа, которая вычисляет площадь многоугольника. В зависимости от значения переменной Figure у нас будет доступ либо к переменным w и h(в случае Figure = Rectangle), L1,L2,a(в случае Figure = Triangle), и R (в случае Figure = Circle). Я правильно рассуждаю? Но вот загвоздка в том, если закоментить строки 19, 25 и 31, то программа все равно будет получать доступ ко всем переменным, вне зависимости от значения Figure. В чем дело?
Листинг программы
  1. program area;
  2. uses crt;
  3. type TFigure = (Rectangle,Triangle,Circle);
  4. TPolygon = record
  5. Area: real;
  6. case Figure: TFigure of
  7. Rectangle: (w,h :integer);
  8. Triangle: (L1,L2:integer; a:real);
  9. Circle: (R:integer);
  10. end;
  11. var Polygon : TPolygon;
  12. t: 0..2;
  13. begin
  14. clrscr;
  15. write('Площадь какой фигуры вы хотите вычислить? (0-Прямоугольник,1-Треугольник,2-Окружность): ');
  16. readln(t);
  17. with Polygon do begin
  18. if t=0 then begin
  19. //Figure:=Rectangle;
  20. write('Введите длину и ширину прямоугольника: ');
  21. readln(w,h);
  22. area:=w*h;
  23. end;
  24. if t=1 then begin
  25. //Figure:=Triangle;
  26. write('Введите длины L1,L2 и угол между ними: ');
  27. readln(l1,l2,a);
  28. area:=l1*l2*sin(a*Pi/180);
  29. end;
  30. if t=2 then begin
  31. // Figure:=Circle;
  32. write('Введите радиус окружности R: ');
  33. readln(R);
  34. area:=Pi*sqr(R);
  35. end;
  36. writeln('Площадь: ',area);
  37. end;
  38. Readkey;
  39. end.

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

textual
Листинг программы
  1. type
  2.   LongRec = record
  3.     case Integer of
  4.     0: (b: array [0..3] of Byte);
  5.     1: (l, h: Word);
  6.   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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут