A+ B

题目描述

读入两个小于100的正整数A和B,计算A+B. 需要注意的是:A和B的每一位数字由对应的英文单词给出.

输入描述:

测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为0时输入结束,相应的结果不要输出.

输出描述:

对每个测试用例输出1行,即A+B的值.

示例1

输入

one + two =
three four + five six =
zero seven + eight nine =
zero + zero =

分析

  1. 使用map,用于查找单词相对应的数字
    2.<string>类的substr的用法
int i = s.find(c)// 返回值为字符串中第一个出现字符c的位置,如果不存在则返回```npos```(结尾)
string s1 = s.substr(index);// 返回值为从s[index] 到 结尾的字符串
string s1 = s.substr(index, length); // 返回值为从index开始,长度为length的字符串
#include <iostream>
#include <string>
#include <map>

using namespace std;

int main(){
    map<string, int> mp;
    mp["zero"] = 0;
    mp["one"] = 1;
    mp["two"] = 2;
    mp["three"] = 3;
    mp["four"] = 4;
    mp["five"] = 5;
    mp["six"] = 6;
    mp["seven"] = 7;
    mp["eight"] = 8;
    mp["nine"] = 9;
    string s;
    while(getline(cin, s)) {
        int x, y;
        int plus = s.find('+');
        int equal = s.find('=');
        
        string s1 = s.substr(0, plus - 1);
        string s2 = s.substr(plus + 2, equal - plus - 3);

        if(s1.find(' ') == string::npos)
            x = mp[s1];
        else{
            int pos = s1.find(' ');
            string shiwei = s1.substr(0, pos);
            string gewei = s1.substr(pos + 1);
            x = mp[shiwei] * 10 + mp[gewei];
        }


        if(s2.find(' ') == string::npos)
            y = mp[s2];
        else{
            int pos = s2.find(' ');
            string shiwei = s2.substr(0, pos);
            string gewei = s2.substr(pos + 1);
            y = mp[shiwei] * 10 + mp[gewei];
        }

        if(x + y == 0) break;
        else cout << x + y << endl;
    }
    return 0;
}

转载于:https://www.cnblogs.com/zhuobo/p/10262697.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值