Перевод в римскую систему счисления
Категория: Perl
2011-08-30 23:09:28
Программа выводит римскую запись числа, заданного в командной строке. Перевод числа в римскую систему счисления выполняет процедура toRoman. Процедура разбивает число по десятичным цифрам, для каждой цифры найдёт соотвествие римским цифрам в соотвествии с разрядом, в котором она находится.
code: #perl
- #!/usr/bin/perl
- use warnings;
- sub toRomanHelper($$)
- {
- my $n=shift;
- my $d=shift;
- my $i=qw/I X C M/[$d];
- my $v=qw/V L D/[$d];
- my $x=qw/X C M/[$d];
- return $i x $n if $n>=0 and $n<=3;
- return ($i x (5-$n)).$v if $n==4;
- return $v.($i x ($n-5)) if $n>=5 and $n<=8;
- return $i.$x;
- }
- sub toRoman($)
- {
- my $n=shift;
- return if $n!~m/^\d+$/ or $n>=4000;
- my $roman='';
- for(my $d=0; $n; $n=int($n/10))
- {
- $roman=toRomanHelper($n % 10, $d++).$roman;
- }
- return $roman;
- }
- ##################################################
- die "$0: Требуется натуральное число от 1 до 3999\n"
- unless defined(my $decimal=shift);
- die "$0: Неправильное число: «$decimal»\n"
- unless defined(my $roman=toRoman($decimal));
- print "$roman\n";
Поделиться: