Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1417064
  • 博文数量: 239
  • 博客积分: 5909
  • 博客等级: 大校
  • 技术积分: 2715
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-24 20:19
文章分类

全部博文(239)

文章存档

2014年(4)

2013年(22)

2012年(140)

2011年(14)

2010年(59)

我的朋友

分类:

2010-12-01 14:03:52


use strict;
print "Please input a ROMA number:\n";

while(<STDIN>)
{
    chomp;
    my $roma=$_;
    if($roma=~ m/^[IVXLCDM]+$/i)
    {
        my %hash=("I"=>0,"V"=>1,"X"=>2,"L"=>3,"C"=>4,"D"=>5,"M"=>6);
        my @value=(1,5,10,50,100,500,1000);
        $roma=uc($roma);
        my @roma=split '',$roma;
        my ($result,$i,$flag);

        $result=$value[$hash{$roma[0]}] if($i==$#roma);


        while($i<$#roma)

        {
            if($hash{$roma[$i]}<$hash{$roma[$i+1]})
            {
                my $id;
                if($hash{$roma[$i]}%2 ==0)
                {
                    $id=3;
                }else
                {
                    $id=2;
                }

                if(($hash{$roma[$i+1]}-$hash{$roma[$i]})<$id)
                {
                    $result+=$value[$hash{$roma[$i+1]}]-$value[$hash{$roma[$i]}];
                    $i+=2;

                }else
                {
                    print "Invalid number, wrong oder or grammer.\n";
                    last;
                }
            }else
            {
                $result+=$value[$hash{$roma[$i]}];

                if($roma[$i+1] eq $roma[$i])
                {
                    $flag++;
                }else
                {
                    $flag=0;
                }

                if($flag>2)
                {
                    print "Invalid number, wrong grammer.\n";
                    last;
                }
                $i++;

            }

        }

        if($i==$#roma)

        {
            $result += $value[$hash{$roma[-1]}];    
            $i++;
        }

        if(($i==$#roma+1)||($#roma == 0))

        {
            print "$roma = $result\n";
        }

    }else
    {
        print "Please input the valid Roma number\n";
    }
}


阅读(1748) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~