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

C++で正の整数を単語で表現するプログラム


正の整数が与えられたとしましょう。数字を単語で綴る必要があります。たとえば、入力として「56」という数字が指定されている場合、出力は「Fifty-Six」になります。変換の範囲は最大10億です。

したがって、入力がinput =5678のような場合、出力は5千六百七十八になります。

これを解決するには、次の手順に従います-

  • − {{"Billion"、1000000000}、
      などのペアを含む配列の「数値」を定義します
    • {"Million"、1000000}、
    • {"千"、1000}、
    • {"100"、100}、
    • {"90"、90}、
    • {"80"、80}、
    • {"Seventy"、70}、
    • {"Sixty"、60}、
    • {"Fifty"、50}、
    • {"40"、40}、
    • {"30"、30}、
    • {"Twenty"、20}、
    • {"Nineteen"、19}、
    • {"18"、18}、
    • {"Seventeen"、17}、
    • {"Sixteen"、16}、
    • {"15"、15}、
    • {"Fourteen"、14}、
    • {"Thirteen"、13}、
    • {"12"、12}、
    • {"Eleven"、11}、
    • {"Ten"、10}、
    • {"Nine"、9}、
    • {"Eight"、8}、
    • {"Seven"、7}、
    • {"Six"、6}、
    • {"Five"、5}、
    • {"Four"、4}、
    • {"Three"、3}、
    • {"Two"、2}、
    • {"One"、1}}
  • 関数solve()を定義します。これは入力を取ります。
    • 入力が0と同じ場合、-
      • 「ゼロ」を返す
    • 配列番号のnumごとに、
        を実行します。
      • numの2番目の値<=入力の場合、-
        • numの2番目の値>=100の場合、-
          • result:=solve(入力/ numの2番目の値)
          • 入力>(入力/ numの2番目の値)* mの2番目の値の場合、-
            • result:=result + "" + solution(input-(input / numの2番目の値))
        • それ以外の場合、
          • result:=numの最初の値+((入力の場合> numの2番目の値の場合: "" + solution(input-numの2番目の値)、それ以外の場合: ""))
        • ループから抜け出す
    • 結果を返す
  • solve(入力)

理解を深めるために、次の実装を見てみましょう-

#include<bits/stdc++.h>

using namespace std;

vector<pair<string, int>> numbers{{"Billion", 1000000000},
   {"Million", 1000000},
   {"Thousand", 1000},
   {"Hundred", 100},
   {"Ninety", 90},
   {"Eighty", 80},
   {"Seventy", 70},
   {"Sixty", 60},
   {"Fifty", 50},
   {"Forty", 40},
   {"Thirty", 30},
   {"Twenty", 20},
   {"Nineteen", 19},
   {"Eighteen", 18},
   {"Seventeen", 17},
   {"Sixteen", 16},
   {"Fifteen", 15},
   {"Fourteen", 14},
   {"Thirteen", 13},
   {"Twelve", 12},
   {"Eleven", 11},
   {"Ten", 10},
   {"Nine", 9},
   {"Eight", 8},
   {"Seven", 7},
   {"Six", 6},
   {"Five", 5},
   {"Four", 4},
   {"Three", 3},
   {"Two", 2},
   {"One", 1}};
string solve(int input) {
   if (input == 0) return "Zero";
   string result;
   for (auto& num : numbers) {
      if (num.second <= input) {
         if (num.second >= 100) {
            result = solve(input / num.second) + " " + num.first;
            if (input > (input / num.second) * num.second)
               result += " " + solve(input - (input / num.second) * num.second);
         } else {
            result = num.first + (input > num.second ? " " + solve(input - num.second) : "");
         }
         break;
      }
   }
   return result;
}

int main() {
   cout<< solve(5678) <<endl;
   return 0;
}

入力

5678

出力

Five Thousand Six Hundred Seventy Eight

  1. 数値を逆にするC++プログラム

    数字を逆にするということは、その数字を逆の順序で保存することを意味します。 例:番号が6529の場合、9256が出力に表示されます。 数を逆にするプログラムは次のように与えられます- 例 #include <iostream> using namespace std; int main() {    int num = 63972, rev = 0;    while(num > 0) {       rev = rev*10 + num%10;       num = n

  2. 正の整数のビットを逆にするPythonプログラム?

    まず、bin()関数を使用して数値を2進数に変換します。次に、bin()が数値の2進表現のプレフィックスとして0bを追加し、残りの部分を逆にするため、2進表現の最初の2文字をスキップします。また、文字から、左から最後から2番目の文字まで反転します。反転した2進文字列を整数に変換します。 アルゴリズム integernumber(n,bit_size) /* n is the number and bit_size is the bitsize */ Step 1: first convert number into binary . Step 2: skip the first two c