different language, but here's my solution, the logic should be the same.
#!/usr/bin/perl
$nums{M} = 1000;
$nums{D} = 500;
$nums{C} = 100;
$nums{L} = 50;
$nums{X} = 10;
$nums{V} = 5;
$nums{I} = 1;
print "Enter Numeral: ";
$input = <>;
chomp $input;
$input = uc $input;
unless ($input =~ m/[MDCLXVI]+/){print "invalid entry";exit}
@numeral = split //, $input;
for ($i=0;$i<$#numeral;$i++) {
if ($nums{$numeral[$i]}<$nums{$numeral[$i+1]}){$output -= $nums{$numeral[$i]}}
else {$output += $nums{$numeral[$i]}}
}
$output += $nums{$numeral[$#numeral]};
print $output;
and here's the executable, if anyone wants to test it: Link to compiled exe
#!/usr/bin/perl
$nums{M} = 1000;
$nums{D} = 500;
$nums{C} = 100;
$nums{L} = 50;
$nums{X} = 10;
$nums{V} = 5;
$nums{I} = 1;
print "Enter Numeral: ";
$input = <>;
chomp $input;
$input = uc $input;
unless ($input =~ m/[MDCLXVI]+/){print "invalid entry";exit}
@numeral = split //, $input;
for ($i=0;$i<$#numeral;$i++) {
if ($nums{$numeral[$i]}<$nums{$numeral[$i+1]}){$output -= $nums{$numeral[$i]}}
else {$output += $nums{$numeral[$i]}}
}
$output += $nums{$numeral[$#numeral]};
print $output;
and here's the executable, if anyone wants to test it: Link to compiled exe