program UnitConverter;
{$mode objfpc} // Modern Free Pascal mode
uses
SysUtils;
// Conversion functions (all convert *from meters* first)
function mmToMeters(mm: Double): Double;
begin
Result := mm / 1000.0;
end;
function cmToMeters(cm: Double): Double;
begin
Result := cm / 100.0;
end;
function kmToMeters(km: Double): Double;
begin
Result := km * 1000.0;
end;
function milesToMeters(mi: Double): Double;
begin
Result := mi * 1609.34;
end;
function feetToMeters(ft: Double): Double;
begin
Result := ft * 0.3048;
end;
function yardsToMeters(yd: Double): Double;
begin
Result := yd * 0.9144;
end;
function inchesToMeters(i: Double): Double;
begin
Result := i * 0.0254;
end;
// Convert meters → all units
function toMillimeters(m: Double): Double;
begin
Result := m * 1000.0;
end;
function toCentimeters(m: Double): Double;
begin
Result := m * 100.0;
end;
function toKilometers(m: Double): Double;
begin
Result := m / 1000.0;
end;
function toMiles(m: Double): Double;
begin
Result := m / 1609.34;
end;
function toFeet(m: Double): Double;
begin
Result := m / 0.3048;
end;
function toYards(m: Double): Double;
begin
Result := m / 0.9144;
end;
function toInches(m: Double): Double;
begin
Result := m / 0.0254;
end;
var
choice: Integer;
value, meters: Double;
begin
writeln('Choose input unit:');
writeln('1. Millimeters');
writeln('2. Centimeters');
writeln('3. Meters');
writeln('4. Kilometers');
writeln('5. Miles');
writeln('6. Feet');
writeln('7. Yards');
writeln('8. Inches');
write('Enter choice: ');
readln(choice);
write('Enter value: ');
readln(value);
// Convert chosen unit → meters
case choice of
1: meters := mmToMeters(value);
2: meters := cmToMeters(value);
3: meters := value;
4: meters := kmToMeters(value);
5: meters := milesToMeters(value);
6: meters := feetToMeters(value);
7: meters := yardsToMeters(value);
8: meters := inchesToMeters(value);
else
writeln('Invalid choice');
halt;
end;
writeln;
writeln('Converted from meters (', FormatFloat('0.000000', meters), ' m):');
writeln('Millimeters: ', FormatFloat('0.000000', toMillimeters(meters)));
writeln('Centimeters: ', FormatFloat('0.000000', toCentimeters(meters)));
writeln('Meters: ', FormatFloat('0.000000', meters));
writeln('Kilometers: ', FormatFloat('0.000000', toKilometers(meters)));
writeln('Miles: ', FormatFloat('0.000000', toMiles(meters)));
writeln('Feet (Foot): ', FormatFloat('0.000000', toFeet(meters)));
writeln('Yards: ', FormatFloat('0.000000', toYards(meters)));
writeln('Inches: ', FormatFloat('0.000000', toInches(meters)));
end.
(*
run:
Choose input unit:
1. Millimeters
2. Centimeters
3. Meters
4. Kilometers
5. Miles
6. Feet
7. Yards
8. Inches
Enter choice: 4
Enter value: 1
Converted from meters (1000.000000 m):
Millimeters: 1000000.000000
Centimeters: 100000.000000
Meters: 1000.000000
Kilometers: 1.000000
Miles: 0.621373
Feet (Foot): 3280.839895
Yards: 1093.613298
Inches: 39370.078740
*)