Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรมแสดงจำนวนเต็มบวกเป็นคำในภาษา C++


สมมติว่าเราได้รับจำนวนเต็มบวก เราต้องสะกดตัวเลขเป็นคำ เช่นถ้าป้อนตัวเลข "56" เอาต์พุตจะเป็น "Fifty-Six" ช่วงของการแปลงสูงถึงหนึ่งพันล้าน

ดังนั้น หากอินพุตเหมือนกับอินพุต =5678 เอาต์พุตจะเป็นห้าพันหกร้อยเจ็ดสิบแปด

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • กำหนดอาร์เรย์ 'ตัวเลข' ที่มีคู่เช่น − {{"Billion", 1000000000},
    • {"ล้าน", 1000000},
    • {"พัน", 1000},
    • {"ร้อย", 100},
    • {"เก้าสิบ", 90},
    • {"แปดสิบ", 80},
    • {"เซเว่นตี้", 70},
    • {"หกสิบ", 60},
    • {"Fifty", 50},
    • {"สี่สิบ", 40},
    • {"สามสิบ", 30},
    • {"ยี่สิบ", 20},
    • {"สิบเก้า", 19},
    • {"Eighteen", 18},
    • {"เซเว่นทีน", 17},
    • {"สิบหก", 16},
    • {"สิบห้า", 15},
    • {"สิบสี่", 14},
    • {"สิบสาม", 13},
    • {"สิบสอง", 12},
    • {"สิบเอ็ด", 11},
    • {"สิบ", 10},
    • {"เก้า", 9},
    • {"แปด", 8},
    • {"เซเว่น", 7},
    • {"หก", 6},
    • {"ห้า", 5},
    • {"โฟร์", 4},
    • {"สาม", 3},
    • {"สอง", 2},
    • {"หนึ่ง", 1}}
  • กำหนดฟังก์ชัน Solve() ต้องใช้อินพุต
    • ถ้าอินพุตเหมือนกับ 0 แล้ว −
      • คืนค่า "ศูนย์"
    • สำหรับแต่ละ num ในหมายเลขอาร์เรย์ ให้ทำ
      • ถ้าค่าที่สองของ num <=อินพุต ดังนั้น −
        • ถ้าค่าที่สองของ num>=100 แล้ว −
          • ผลลัพธ์ :=แก้ (ค่าอินพุต / วินาทีของ num)
          • ถ้าอินพุต> (อินพุต / ค่าวินาทีของ num) * ค่าที่สองของ m แล้ว −
            • ผลลัพธ์ :=ผลลัพธ์ + " " + แก้ปัญหา (อินพุต - (ค่าอินพุต / วินาทีของ num))
        • มิฉะนั้น
          • ผลลัพธ์ :=ค่าแรกของ num + ((หากป้อน> ค่าที่สองของ num แล้ว:" " + แก้ปัญหา (อินพุต - ค่าที่สองของ num) มิฉะนั้น:" "))
        • ออกมาจากวงจร
    • ผลตอบแทน
  • แก้(อินพุต)

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#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