所以我的任务是创建一个c ++计算器,将用户输入作为一个字符串方程,如“-2.5 + 40 - 3 * 8/2”,它将从左到右读取(操作顺序没有遵循)和输出138作为答案。每个运算符和操作数之间必须有空格。
我做了一个计算器,但它只适用于单位正整数。这是代码。
A
所以输入“1 + 3”给出4但“12 + 3”产生5.我知道为什么它给5我只是不知道如何解决它。我不希望任何人只是简单地给我答案,但如果有人能指出我正确的方向?我想也许可以使用普通的cin而不是getline,因为它可以读取空间并存储它,但无法真正想到如何继续使用它。
与你的家伙指点,我做了另一个使用cin>>的计算器。但它只有在我给出恰当数量的运算符和操作数时才有效,这是不可能知道我是否接收随机用户方程式。任何想法?
#include <iostream>
#include <string>
float calculator(string input){
float result = 0;
for(int i = 0; i < input.length(); i++){
if(input[i] == '+'){
result += (input[i-2]-'0') + (input[i+2]-'0');
}
return result;
}
int main(){
string input = "";
cout << "enter string" << endl;
getline(cin, input);
cout << calculator(input) << endl;