谁有罗马数字转换为阿拉伯数字的函数?
类似于 function convert(s:string):integer;输入'i'输出1
输入'vi'输出6之类的主ID散分散的没有可用分了,只好用马甲,呵呵

解决方案 »

  1.   

    如果只有1-12,用Case语句不就可以了?
      

  2.   

    楼上说的是可以的 
    CASE 
      

  3.   

    回复人: YAMABACK(不要把我当Michael,我只是会投篮) ( ) 信誉:100  2005-7-12 15:38:11  得分: 0  
     
     
       
    如果只有1-12,用Case语句不就可以了?
    -----------------------------------------
    拜托是数字不是月份好不好 
    数字有只到12的吗?回复人: wwx213() ( ) 信誉:98  2005-7-12 17:01:07  得分: 0  
     
     
       
    找个阿拉伯转大写金额的看看,一样的
    --------------------------------
    阿拉伯转大写的我有,但是算法不一样的
    罗马数字计数方法是左减右加,跟10进制不一样继续up
      
       
     
      

  4.   

    贴前101看看
    i,1
    ii,2
    iii,3
    iv,4
    v,5
    vi,6
    vii,7
    viii,8
    ix,9
    x,10
    xi,11
    xii,12
    xiii,13
    xiv,14
    xv,15
    xvi,16
    xvii,17
    xviii,18
    xix,19
    xx,20
    xxi,21
    xxii,22
    xxiii,23
    xxiv,24
    xxv,25
    xxvi,26
    xxvii,27
    xxviii,28
    xxix,29
    xxx,30
    xxxi,31
    xxxii,32
    xxxiii,33
    xxxiv,34
    xxxv,35
    xxxvi,36
    xxxvii,37
    xxxviii,38
    xxxix,39
    xl,40
    xli,41
    xlii,42
    xliii,43
    xliv,44
    xlv,45
    xlvi,46
    xlvii,47
    xlviii,48
    xlix,49
    l,50
    li,51
    lii,52
    liii,53
    liv,54
    lv,55
    lvi,56
    lvii,57
    lviii,58
    lix,59
    lx,60
    lxi,61
    lxii,62
    lxiii,63
    lxiv,64
    lxv,65
    lxvi,66
    lxvii,67
    lxviii,68
    lxix,69
    lxx,70
    lxxi,71
    lxxii,72
    lxxiii,73
    lxxiv,74
    lxxv,75
    lxxvi,76
    lxxvii,77
    lxxviii,78
    lxxix,79
    lxxx,80
    lxxxi,81
    lxxxii,82
    lxxxiii,83
    lxxxiv,84
    lxxxv,85
    lxxxvi,86
    lxxxvii,87
    lxxxviii,88
    lxxxix,89
    xc,90
    xci,91
    xcii,92
    xciii,93
    xciv,94
    xcv,95
    xcvi,96
    xcvii,97
    xcviii,98
    ic,99
    c,100
    ci,101
    cdic,499
    d,500
    di,501mcmlxxxiv,1984
    mcmxc,1990
    mm,2000
      

  5.   

    古罗马的数字相当进步,现在许多老式挂钟上还常常使用。  实际上,罗马数字的符号一共只有7个:I(代表1)、V(代表5)、X(代表10)、L(代表50)、C代表100)、D(代表500)、M(代表1,000)。这7个符号位置上不论怎样变化,它所代表的数字都是不变的。它们按照下列规律组合起来,就能表示任何数: 
      1.重复次数:一个罗马数字符号重复几次,就表示这个数的几倍。如:"III"表示"3";"XXX"表示"30"。 
      2.右加左减:一个代表大数字的符号右边附一个代表小数字的符号,就表示大数字加小数字,如"VI"表示"6","DC"表示"600"。一个代表大数字的符号左边附一个代表小数字的符号,就表示大数字减去小数字的数目,如"IV"表示"4","XL"表示"40","VD"表示"495"。 
      3.上加横线:在罗马数字上加一横线,表示这个数字的一千倍。如:" "表示 "15,000"," "表示"165,000"。 http://www.tsinghuaschool-sz.com/mathsgarden/fzs.htm
      

  6.   

    var
        i:integer;
    function DecToRoman( iDecimal: integer ): string;
    const
         aRomans: array [ 1..13 ] of string = ( 'I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M' );
         aArabics: array [ 1..13 ] of integer = ( 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000 );
    var
       i: integer;
       s: string;
    begin
         s := '';     for i := 13 downto 1 do
             while ( iDecimal >= aArabics[i] ) do
             begin
                   iDecimal := iDecimal - aArabics[i];
                   s := s + aRomans[i];
             end;
         DecToRoman:= s;
    end;begin
        readln(i);
        if (i>1999) or (i<1) then exit;
        writeln(i,' = ',DecToRoman(i));
    end. 
      

  7.   

    这个:
    function DecToRoman (iDecimal: longint): string;  
    const  
      aRomans: array [ 1..13 ] of string =  
       ( 'I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M' );  
      aArabics: array [ 1..13 ] of integer =  
       ( 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000 );  
    var  
      i : integer;  
    begin  
      for i := 13 downto 1 do   
        while (iDecimal >= aArabics[i]) do   
          begin  
            iDecimal := iDecimal - aArabics[i];  
            Result   := Result   + aRomans[i];  
          end;  
    end;   
    function RomanToDec (iRoman: string): integer;  
    const  
      aRomans: array [ 1..13 ] of string =  
       ( 'I', 'V', 'IV', 'X', 'IX', 'L', 'XL', 'C', 'XC', 'D', 'CD', 'M', 'CM' );  
      aArabics: array [ 1..13 ] of integer =  
       ( 1, 5, 4, 10, 9, 50, 40, 100, 90, 500, 400, 1000, 900 );  
    var  
      i : integer;   
      procedure ConvertDigit (var AText: string; var IntRes: integer;  
        const Rom: string; const Arab: integer);  
      var  
        p : integer;  
      begin  
        for p := 1 to Length (AText) do   
          AText[p] := UpCase(AText[p]);   
        Repeat  
          p := Pos (Rom, AText);  
          if P > 0 then begin  
            inc (IntRes, Arab);  
            Delete (AText, p, Length (Rom));  
          end;  
        until P=0;  
      end;   
    begin  
      Result := 0;  
      for i := 13 downto 1 do   
        ConvertDigit (iRoman, Result, aRomans[i], aArabics[i]);  
    end;