How to calculate the area, diameter, and circumference of a circle in Pascal

1 Answer

0 votes
program CircleCalculator;

{$mode objfpc}{$H+}

uses
  SysUtils;

type
  // Record to hold all calculated circle metrics cleanly
  TCircleMetrics = record
    Diameter: Double;
    Circumference: Double;
    Area: Double;
  end;

{**
 * Calculates the diameter, circumference, and area of a circle.
 * @param Radius The radius of the circle (must be non-negative).
 * @return TCircleMetrics containing the diameter, circumference, and area.
 * @raises EArgumentException if the radius is negative.
 *}
function CalculateCircleMetrics(Radius: Double): TCircleMetrics;
begin
  // Guard clause: radius cannot be negative
  if Radius < 0.0 then
    raise EArgumentException.Create('Radius cannot be negative.');

  Result.Diameter := 2.0 * Radius;
  Result.Circumference := 2.0 * Pi * Radius;
  
  // Standard multiplication (Radius * Radius) is more efficient than Power()
  Result.Area := Pi * (Radius * Radius);
end;

var
  Radius: Double;
  Metrics: TCircleMetrics;
begin
  Radius := 3.0;

  try
    // Retrieve calculated metrics
    Metrics := CalculateCircleMetrics(Radius);

    // Output results formatted to 2 decimal places using SysUtils.Format
    Writeln(Format('Radius: %.2f', [Radius]));
    Writeln(Format('Diameter: %.2f', [Metrics.Diameter]));
    Writeln(Format('Circumference: %.2f', [Metrics.Circumference]));
    Writeln(Format('Area: %.2f', [Metrics.Area]));
  except
    on E: Exception do
    begin
      Writeln('Error: ', E.Message);
      Halt(1);
    end;
  end;
end.


(*
run:

Radius: 3.00
Diameter: 6.00
Circumference: 18.85
Area: 28.27

*)

 



answered 5 hours ago by avibootz

Related questions

...