01-17-2016, 09:29 PM
Here's a simple function I created. Get a Roman Numeral as output for an integer input. Invoke by RN(integer).
This is pretty simple stuff, but I'm still learning PPL.
UPDATE: I messed up and posted code that did not handle 40 properly. I've updated with the correct code.
smp
Code:
EXPORT RN(N)
BEGIN
LOCAL B:="";
WHILE N>=1000 DO
B:=B+"M";
N:=N-1000;
END;
IF N>=900 THEN
B:=B+"CM";
N:=N-900;
END;
IF N>=500 THEN
B:=B+"D";
N:=N-500;
END;
IF N>=400 THEN
B:=B+"CD";
N:=N-400;
END;
WHILE N>=100 DO
B:=B+"C";
N:=N-100;
END;
IF N>=90 THEN
B:=B+"XC";
N:=N-90;
END;
IF N>=50 THEN
B:=B+"L";
N:=N-50;
END;
IF N>=40 THEN
B:=B+"XL";
N:=N-40;
END;
WHILE N>=10 DO
B:=B+"X";
N:=N-10;
END;
IF N=9 THEN
B:=B+"IX";
N:=N-9;
END;
IF N>=5 THEN
B:=B+"V";
N:=N-5;
END;
IF N=4 THEN
B:=B+"IV";
N:=N-4;
END;
WHILE N>=1 DO
B:=B+"I";
N:=N-1;
END;
RETURN B;
END;
This is pretty simple stuff, but I'm still learning PPL.
UPDATE: I messed up and posted code that did not handle 40 properly. I've updated with the correct code.
smp