C#で数字を英単語に変換するプログラムの作り方
はじめに
C#では、数値を1桁ずつ分解し、それぞれの桁に対応する英単語(zero、one、two…)に置き換えることで、数字を単語形式で出力できます。本記事では、剰余演算とループ処理を組み合わせた基本的な実装方法を、サンプルコード付きでわかりやすく解説します。
実装の手順
1. 数字に対応する単語を宣言する
まず、0から9までの各数字に対応する英単語を、文字列配列として宣言します。
// 0から9までの各数字に対応する単語
string[] digits_words = { "zero", "one", "two",
"three", "four", "five",
"six", "seven", "eight",
"nine"
};2. 変換対象の数値を設定する
次に、単語へ変換したい数値を変数に代入します。ここでは例として「4677」を使用します。
// 単語に変換する数値
val = 4677;
Console.WriteLine("Number: " + val);3. 各桁を取り出して単語に変換する
do-whileループを使用して、数値を10で割った余り(%演算子)から、下位の桁から順に取り出し、配列に格納していきます。
do {
next = val % 10;
a[num_digits] = next;
num_digits++;
val = val / 10;
} while(val > 0);取り出した桁は下位から順に配列へ格納されるため、最後に配列を後ろから出力することで、正しい桁順の単語が得られます。
サンプルコード
以下のコードを実行すると、数値を単語に変換できます。
using System;
using System.Collections.Generic;
using System.Text;
namespace Demo {
class MyApplication {
static void Main(string[] args) {
int val, next, num_digits;
int[] a = new int[10];
// 0から9までの各数字に対応する単語
string[] digits_words = {
"zero",
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight",
"nine"
};
// 単語に変換する数値
val = 4677;
Console.WriteLine("Number: " + val);
Console.Write("Number (words): ");
next = 0;
num_digits = 0;
do {
next = val % 10;
a[num_digits] = next;
num_digits++;
val = val / 10;
} while (val > 0);
num_digits--;
for (; num_digits >= 0; num_digits--)
Console.Write(digits_words[a[num_digits]] + " ");
Console.ReadLine();
}
}
}実行結果
Number: 4677 Number (words): four six seven seven
処理のポイント
- %演算子(剰余):「val % 10」で最下位の桁(1の位)を取得できます。
- /演算子(整数除算):「val / 10」で最下位の桁を削除し、次の桁へ処理を進めます。
- do-whileループ:条件判定が後に行われるため、valが0でも必ず1回は実行されます。
- 逆順出力:桁は下位から配列に格納されるため、num_digitsをデクリメントしながら後ろから出力します。
この手法を応用すれば、より大きな桁数への対応や、日本語表記への変換なども実装可能です。ぜひ実際にコードを動かして、挙動を確認してみてください。
-
数字を単語に変換するCプログラム
1桁の数字 d が与えられたとき、それを対応する英語の単語に変換するプログラムを考えてみましょう。たとえば d = 5 であれば出力は「Five」になり、d = 6 であれば「Six」と表示されます。さらに、0〜9 の範囲外の値が渡された場合には、範囲外であることを示す適切なメッセージを返します。解決のアプローチこの問題は、条件分岐を使って数字ごとに対応する単語を判定するだけで解決できます。手順は次のとおりです。solve() という関数を定義し、引数として数字 d を受け取ります。d が 0 未満、または 9 より大きい場合は「Beyond range of 0 - 9」(範囲外)というメッ
-
数値を英語の単語に変換するCプログラムの書き方
数値で構成された文字列が与えられたとき、その数値を英語の単語(スペル表記)へ変換するのが本記事の課題です。例えば、入力が「361」であれば、出力は「Three hundred sixty one」となるようにします。この問題を解くためには、一の位・十の位・百の位・千の位など、それぞれの数字がどの桁に位置しているのかを意識することが重要です。なお、今回紹介するコードは最大4桁、つまり0から9999までの数値に対応しています。したがって、入力は0〜9999の範囲である必要があります。例として「1,111」を考えてみましょう。各桁は以下のように対応します。千の位:1(one thousand)百の位