C++
 Computer >> コンピューター >  >> プログラミング >> C++

【C++入門】指定した範囲の数字を英語の単語に変換して出力する方法

この記事では、2つの整数 ab が与えられたとき、その範囲内のすべての数字を対応する英単語に変換して順番に出力するC++プログラムを紹介します。

例えば、数字「5」であれば「Five」と出力します。範囲の開始値と終了値の間にある各数値に対して、この変換処理を繰り返し適用します。

問題の例

入力として a = 2b = 6 が与えられた場合、期待される出力は以下のようになります。

Two
Three
Four
Five
Six

解決のアプローチ

この問題は、以下の手順で解くことができます。

  • 範囲チェック: 数値 d が 0 未満または 9 より大きい場合は、「Beyond range of 0 - 9」(0〜9の範囲外)というメッセージを返します。
  • 数値と単語の対応付け: d の値に応じて、以下のように対応する英単語を返します。
    • d が 0 の場合 → 「Zero」
    • d が 1 の場合 → 「One」
    • d が 2 の場合 → 「Two」
    • d が 3 の場合 → 「Three」
    • d が 4 の場合 → 「Four」
    • d が 5 の場合 → 「Five」
    • d が 6 の場合 → 「Six」
    • d が 7 の場合 → 「Seven」
    • d が 8 の場合 → 「Eight」
    • d が 9 の場合 → 「Nine」
  • メイン処理: main 関数から、a から b までの範囲でループを実行し、各数値に対して solve 関数を呼び出します。出力後は改行して次の行へ移動します。

C++での実装例

それでは、実際のコードを見てみましょう。

#include <iostream>
using namespace std;
void solve(int d){
    if(d < 0 || d > 9){
        cout << "Beyond range of 0 - 9";
    }else if(d == 0){
        cout << "Zero";
    }else if(d == 1){
        cout << "One";
    }else if(d == 2){
        cout << "Two";
    }else if(d == 3){
        cout << "Three";
    }else if(d == 4){
        cout << "Four";
    }else if(d == 5){
        cout << "Five";
    }else if(d == 6){
        cout << "Six";
    }else if(d == 7){
        cout << "Seven";
    }else if(d == 8){
        cout << "Eight";
    }else if(d == 9){
        cout << "Nine";
    }
}
int main(){
    int a = 2, b = 6;
    for(int i = a; i <= b; i++){
        solve(i);
        cout << endl;
    }
}

実行結果

入力

2, 6

出力

Two
Three
Four
Five
Six

コードのポイント

  • solve関数: 引数として受け取った整数を判定し、対応する英単語を出力します。if-else文による条件分岐で実装されています。
  • 範囲外チェック: 最初の条件で負の数や10以上の値を除外することで、不正な入力にも対応しています。
  • forループ: main関数内で、開始値 a から終了値 b まで順番に処理を行い、各結果を改行付きで表示します。

なお、より簡潔に書きたい場合は、配列を使った実装も可能です。例えば string words[] = {"Zero", "One", ..., "Nine"}; のような配列を用意すれば、条件分岐を1行のインデックス参照に置き換えられます。初心者の方はまずif-else文での基本構造を理解し、その後配列版にリファクタリングしてみると良い練習になります。

  1. 【C++】辞書式順序で集合のすべての部分集合を生成するプログラム

    本記事では、与えられた集合(配列)のすべての部分集合を辞書式順序(lexicographic order)で生成して出力するC++プログラムを紹介します。このアルゴリズムは、配列として与えられた集合から、要素数ごとの可能な組み合わせをすべて昇順に出力します。時間計算量は O(n×2n) です。 アルゴリズムの流れ Begin 各長さ「i」について GenAllSubset() 関数を呼び出します。 1) GenAllSubset() の中で、currLen が reqLen より大きい場合はそのまま戻ります。 2) そうでなければ、currLen が reqLen と等

  2. C++で数値の各桁の合計を計算するプログラム

    ここでは、C++言語を使用して入力された整数の各桁の合計を計算する方法を紹介します。剰余演算子と整数除算を組み合わせたシンプルなアルゴリズムで実装できます。 プログラム例 #include<iostream> using namespace std; int main() {    int x, s = 0;    cout << Enter the number : ;    cin >> x;    while (x != 0) {