【问题标题】:How to convert an input 'three four + five six =' to '34+56'?如何将输入“三四+五六=”转换为“34+56”?
【发布时间】:2020-03-07 17:10:08
【问题描述】:

我想将两个数字相加,同时每个数字都在其位置进行了描述。

例如,三四 = 34,零七 = 07,等等

需要处理的最大加数是99(九九)

如何让计算机知道“三四等于 34”并通过加号识别每个加数?

【问题讨论】:

  • 您必须编写一个完整的 C++ 程序才能做到这一点。只需按一下按钮,C++ 库中就没有任何东西可以为您做到这一点。您必须自己完成所有工作。
  • 您可以使用 std::map。 std::map<std::string, int> digit; digit["one"] = 1;。你得到每个号码number = digit[firstDigit] * 10 + digit[secondDigit];
  • 是的,谢谢大家!我自己学习了 map 方法,最后把它用到了我的代码中。我使用 str.find 和 str.substr 来分隔每个加数。我只想知道一个可以提供我想要的功能的方法,但不是所有的代码:) @Sam Varshavchik

标签: c++ c clion


【解决方案1】:

通常,您必须更好地定义您的输入,以便获得如何解析它的答案,但这里有一些伪代码可以帮助您入门

number_sentence 是一个类似"three four one eight" 的字符串

hashmap = {
    'one' : 1,
    'two' : 2,
    ...
}

def get_num(number_sentence):
    result = 0
    for digit_word in number_sentence:
        result = result * 10 + hashmap[digit_word]
    return result

【讨论】:

  • 是的,谢谢大家!我自己学习了 map 方法,最后把它用到了我的代码中。我使用 str.find 和 str.substr 来分隔每个加数。我只想知道一种可以提供我想要的功能的方法,但不是所有代码:) @Sam Varshavchik
猜你喜欢
  • 2018-05-03
  • 2011-02-08
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-10
  • 1970-01-01
相关资源
最近更新 更多