How to convert a Roman number to an integer in Pascal

1 Answer

0 votes
program RomanNumerals;

function RomanToNumber(ch: char): integer;
begin
  case ch of
    'I': RomanToNumber := 1;
    'V': RomanToNumber := 5;
    'X': RomanToNumber := 10;
    'L': RomanToNumber := 50;
    'C': RomanToNumber := 100;
    'D': RomanToNumber := 500;
    'M': RomanToNumber := 1000;
  else
    RomanToNumber := 0;
  end;
end;

function RomanToInteger(s: string): integer;
var
  i, n, previous_n, current_n: integer;
begin
  n := RomanToNumber(s[1]);
  writeln('n: ', n);

  for i := 2 to length(s) do
  begin
    previous_n := RomanToNumber(s[i - 1]);
    current_n := RomanToNumber(s[i]);
    writeln('current_n: ', current_n);

    if previous_n < current_n then
      n := n - previous_n + (current_n - previous_n)
    else
      n := n + current_n;
  end;

  RomanToInteger := n;
end;

var
  s: string;
begin
  s := 'XCVII';
  writeln(RomanToInteger(s));
end.


(*
XCVII =
XC+V+I+I =
90+5+1+1 =
97
*)


(*
run:

n: 10
current_n: 100
current_n: 5
current_n: 1
current_n: 1
97

*)


 



answered Dec 3, 2025 by avibootz
...