Showing posts with label decimal to roman numeral in perl. Show all posts
Showing posts with label decimal to roman numeral in perl. Show all posts

Monday, September 26, 2016

Decimal To Roman Numeral in PERL

A simple program that I wrote using PERL as my programming language that will ask the user to give decimal value and then our program will convert the given decimal value into roman numeral equivalent in PERL.

Add me at Facebook my address is jakerpomperada@gmail.com and jakerpomperada@yahoo.com. 


My mobile number here in the Philippines is 09173084360.


Program Listing

#!D:\xampp\perl\bin

my %roman_digit = qw(1 IV 10 XL 100 CD 1000 MMMMMM);
my @figure = reverse sort keys %roman_digit;
$roman_digit{$_} = [split(//, $roman_digit{$_}, 2)] foreach @figure;

starting();

sub Roman($) {
    my $arg = shift;
    0 < $arg and $arg < 4000 or return undef;
    my($x, $roman);
    foreach (@figure) {
        my($digit, $i, $v) = (int($arg / $_), @{$roman_digit{$_}});
        if (1 <= $digit and $digit <= 3) {
            $roman .= $i x $digit;
        } elsif ($digit == 4) {
            $roman .= "$i$v";
        } elsif ($digit == 5) {
            $roman .= $v;
        } elsif (6 <= $digit and $digit <= 8) {
            $roman .= $v . $i x ($digit - 5);
        } elsif ($digit == 9) {
            $roman .= "$i$x";
        }
        $arg -= $digit * $_;
        $x = $i;
    }
    $roman;
}

sub roman($) {
    lc Roman shift;
}

sub starting {
        print "\n\n";
        print "\t Decimal To Roman Numeral in PERL.";
        print "\n\n";
        print "Enter a number : ";
        chomp($a=<>);
        print "\n\n";
        print "The number $a it's roman numeral equivalent is ";
        print uc(roman($a));
        print ".";
        print "\n\n";
        print "Do you want to continue (Y or N) ? : ";
        chomp($choice=<>);
        if( $choice eq "y") {
            goto &starting;
          } else {
            print "\n\n";
            print "\t End of Program";
            print "\n";
            exit;

        }
 }