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
*)