首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

九度 OJ 1010 英文數字加法 - 字符串解析模擬

     編輯:關於C++

問題描述

輸入格式:A + B =,其中 A、B 由英文單詞組成(zero 到 nine 表示各位數字)。輸出 A+B 的數值。當 A=B=zero 時結束。

解法:單詞轉數字

讀取單詞序列,遇到 '+' 停止讀第一個數,遇到 '=' 停止讀第二個數。將單詞映射為數字拼成整數,相加輸出。

代碼實現(C++)

#include 
#include 
#include 
using namespace std;

int wordToDigit(const string& w) {
    static unordered_map mp = {
        {"zero",0},{"one",1},{"two",2},{"three",3},{"four",4},
        {"five",5},{"six",6},{"seven",7},{"eight",8},{"nine",9}
    };
    return mp[w];
}

int main() {
    string token;
    while (cin >> token) {
        int a = 0, b = 0;
        // 讀第一個數
        while (token != "+") {
            a = a * 10 + wordToDigit(token);
            cin >> token;
        }
        // 讀第二個數
        cin >> token;
        while (token != "=") {
            b = b * 10 + wordToDigit(token);
            cin >> token;
        }
        if (a == 0 && b == 0) break;
        cout << a + b << endl;
    }
    return 0;
}

關鍵點

  • 使用 unordered_map 單詞到數字映射,代碼簡潔。
  • 循環讀取 token,遇到分隔符轉階段。
  • 終止條件:讀完 '=' 後檢查 a==0 && b==0。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved