Загрузка данных


program ShapesDemo;

{$mode objfpc}{$H+}

uses
  SysUtils, 
  Geometry;

function TotalArea(const Shapes: array of TGeomShape): Double;
var
  i: Integer;
begin
  Result := 0;
  for i := 0 to High(Shapes) do
    Result := Result + Shapes[i].GetArea;
end;

function TotalPerimeter(const Shapes: array of TGeomShape): Double;
var
  i: Integer;
begin
  Result := 0;
  for i := 0 to High(Shapes) do
    Result := Result + Shapes[i].GetPerimeter;
end;

var
  Shapes: array[0..3] of TGeomShape;
  i: Integer;

begin
  // Настройка кодировки для кириллицы в консоли Lazarus
  SetMultiByteConversionCodePage(CP_UTF8);

  Shapes[0] := TCircle.Create('Круг', 5);
  Shapes[1] := TRectangle.Create('Прямоугольник', 4, 6);
  Shapes[2] := TCircle.Create('Монета', 1.5);
  Shapes[3] := TRectangle.Create('Экран', 16, 9);

  Writeln('=== Фигуры ===');
  for i := 0 to High(Shapes) do
    Writeln(Shapes[i].ToString);

  Writeln;
  Writeln('Общая площадь:   ', FormatFloat('0.00', TotalArea(Shapes)));
  Writeln('Общий периметр:  ', FormatFloat('0.00', TotalPerimeter(Shapes)));

  // Очистка памяти
  for i := 0 to High(Shapes) do
    Shapes[i].Free;

  Write(#10'Нажмите Enter...');
  Readln;
end.