3

このような数字から単語へのコンバーターを作成したいhttp://gwydir.demon.co.uk/jo/numbers/words/intro.htm

しかし、私は二十進法を使用する外国語のためにそれをやっています-20代で数えます。1-199から始めたいと思います。

1-20は簡単ですが、その後は変わります。20-39は、「1対20」(21)、「2対20」(22)、最大「18対20」(38)、「19対20」(39)のパターンに従います。

40-99と120-199は、スコアでカウントされるため、さらに異なります。「1と22」(41)、「2と22」(42)、「1と320」(61)、10と3 20(70)、11と3 20(71)、「1と4 20」(81)、「6 20」(120)、「1と6 20」(121)、「9 20」(180)、 ' 1と9の20'(181)、' 19と9の20'(199)

100-119は英語に似ています:百一(101)、百二(102)、百十一(111)、百九(119)

これは、入力フォームに使用しているhtmlです。

<table align=center>
<tr><td>
<form action="#" name="conv">
Enter number:
<input type="text" name="numb" size="15">
<input type="button" value="Show number" onclick="getnum(document.conv.numb.value)">
</form>
</td></tr>
<tr><td align=center><span id="outp">&nbsp;</span></td></tr>
</TABLE>

そしてこれは私が20までの数のために持っているJavascriptです:

var units = new Array(21)
units[0]=""
units[1]="onen"
units[2]="dew"
units[3]="tri"
units[4]="pajar"
units[5]="pemp"
units[6]="whegh"
units[7]="seyth"
units[8]="eth"
units[9]="naw"
units[10]="deg"
units[11]="udnek"
units[12]="dowdhek"
units[13]="tredhek"
units[14]="peswardhek"
units[15]="pemthek"
units[16]="whetek"
units[17]="seytek"
units[18]="etek"
units[19]="nownsek"
units[20]="ugens"

私の質問は、数字を正しい単語に変換できるコードの作成を開始するにはどうすればよいですか?誰かが私に役立ついくつかの例を指摘できますか?英語で行われた例を見てきましたが、数体系が非常に異なるため、それを二十進法に変換する方法がわかりません。

ありがとう

4

2 に答える 2

1

次の関数は、これにアプローチする方法のアイデアを与えるはずです。

function getnum(s){
    var n = parseInt(s);

    if( 1 <= n && n <= 20 ){ alert(units[n]); }

    if( (40 <= n && n <= 99) || (120 <= n && n <= 199) ){
      var q = Math.floor(n / 20);
      var r = n % 20;

      !r && (alert (units[q] + ' ' + units[20]));

      r && (alert (units[r] + ' and ' + units[q] + ' ' + units[20]));    
    }    
}

これで、の変換を理解できるはずです100 <= number <= 119。も同様です21 <= number <= 39

于 2012-06-01T22:32:46.587 に答える
1

例を見てみましょう:数を考えてみましょうx

まず、その数に100がいくつあるかを調べます。これは次のように行いますx/100。整数除算は余りを切り捨てるためです。これが最初のセグメントです。units[x/100] + " hundred"

それでは、で与えられた残りの部分を実行しましょうy=x%100y/2020代があります。そしてy%20残り。したがって、文字列の残りの部分はですunits[y%20] + " and " + units[y/20] + " " units[20]

これは、640のような余りのない数値を正しく処理しないため、まだ100%完全ではありません。しかし、これらは、問題なく理解できると確信しているいくつかの特殊なケースです。

于 2012-06-01T22:30:09.087 に答える