123
番号をアルファベット順に印刷できる方法があるかどうか、つまりとして印刷する必要があるかどうかを知りたい
one two three
です。
唯一の条件は、数値を逆にして配列を使用しないことです。
私はこれらの2つの方法しか知りません:
- 「数字を逆にする」、つまり、最後の桁を取って切り捨てます。カットオフ桁ごとに、配列を使用して正しい文字列を検索できます。
- を使用
switch
して多くのcase
s
何か案は?
百の位の場合:
int hundreds = my_num / 100 //Needs "/", NOT "%"
if(hundreds == 0)
cout << "zero";
else if(hundreds == 1)
cout << "one";
//repeat for 2-9
このプロセスを微調整して、他の数字も同様に行うことができます。また、if/else ブロックは、a) 必要に応じて switch/case を使用して実行でき、b) コード ブロックを何度も繰り返す必要がないように、別の関数にすることが非常に簡単にできることにも言及する価値があります。わかりやすくするために、私が行ったのと同じように書きました。これは、「翻訳」している数値が整数であると想定していることに注意してください。整数の場合、"/" 演算子は、剰余を除いた完全な商を返します。たとえば、1.23 ではなく、123 / 100 = 1 です。
必ずしも最も簡単なルートではありませんがDigitToWord
、switch ステートメントを使用して、その単語に数字 0、1、2、... などを取る関数を作成できます。次に、数値に対して for ループを使用し、連続して 10 で除算し、ループの mod を使用することをお勧めします。
int num; //my number i want to print
int div = pow(10, (int)log10(num)); //find the largest power of 10 smaller than num
while(num > 0) {
int remainder = num%div;
int digit = num/div;
DigitToWord();
num = remainder;
}