捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  沪ICP备05001939号 DELPHI盒子 | 盒子论坛 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 论坛检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
 
广告
评论:罗马数字转换成阿拉伯数字
lszx1991abner 35895 2008/10/24 21:11:22
错的
iv=4
vi=6
程序中iv=vi=6
goodmancyg 23371 2006/5/4 21:22:57
这个代码是我匆匆忙忙写上去的,有可能存在问题!望大家指正,待我那天有空在把它完善起来!多谢大家的关注
kinneng 23202 2006/4/26 2:37:57
我找不到下载这个东西的理由,因为它是在没有什么用,除非我在意大利买菜,不过打开了网页,不下载又好像浪费了时间,于是就下载了。
fengjiwei 23200 2006/4/25 21:53:24
我刚手算了一下,正确答案是不是应该是1495呢,
计算过程
1000+(-10+500)+5
fengjiwei 23199 2006/4/25 21:45:37
测试:mxdv这个数字,楼主的得1515,helpme5的得1010,究竟哪个正确?
helpme5 23198 2006/4/25 21:09:48
代码存在一个问题,就是没有验证输入的罗马数字是否合法。

如果忽略这个验证,程序可以更简单些:(其中的ValidateRoman函数即为验证)

//罗马数字转阿拉伯数字
function RomanToArabic(const Roman: string): LongInt;
const
  Arabics: array[1..13] of Integer = (1000, 900, 500, 400, 100, 90, 50, 40, 10,
    9, 5, 4, 1);
  Romans: array[1..13] of string = ('M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL',
    'X', 'IX', 'V', 'IV', 'I');
var
  i: Integer;
  Ro: string;
  Longitud: Integer;
  sRoman: string;
begin
  Result := 0;
  sRoman := UpperCase(Roman);
  if ValidateRoman(sRoman) then
  begin
    for i := 1 to 13 do
    begin
      Longitud := Length(Romans[i]);
      Ro := Copy(sRoman, 1, Longitud);
      while ((Length(sRoman) > 0) and (Ro = Romans[i])) do
      begin
        sRoman := Copy(sRoman, 1 + Longitud, Length(Roman) - 1);
        Result := Result + Arabics[i];
        Ro := Copy(sRoman, 1, Longitud);
      end;
    end;
  end;
end;
第一页 上一页 下一页 最后页 有 6 条纪录 共1页 1 - 6
 用户名:
 密 码:
自动登陆(30天有效)
 
  DELPHI盒子版权所有 1999-2023 V4.01 粤ICP备10103342号-1 更新RSS列表