c++;计算器和预期的答案完全不同 我正在制作一个C++计算器,可以计算多个变量,但是我在计算部分被卡住了…计算器的工作原理是一次获取一个输入,并将它们存储在两个向量中,一个称为“nums”,另一个称为“ops”,我有一个for循环,从向量

c++;计算器和预期的答案完全不同 我正在制作一个C++计算器,可以计算多个变量,但是我在计算部分被卡住了…计算器的工作原理是一次获取一个输入,并将它们存储在两个向量中,一个称为“nums”,另一个称为“ops”,我有一个for循环,从向量,c++,C++,c++;计算器和预期的答案完全不同 我正在制作一个C++计算器,可以计算多个变量,但是我在计算部分被卡住了…计算器的工作原理是一次获取一个输入,并将它们存储在两个向量中,一个称为“nums”,另一个称为“ops”,我有一个for循环,从向量中获取信息,并将它们计算成一个称为“sum”的双精度数。计算器的工作方式与我希望的完全相同,直到计算部分,我让它使用for循环和if语句来计算我希望它使用的每个运算符(+、-、/、*)。以下是计算本身的代码: else if(line == &

c++;计算器和预期的答案完全不同 我正在制作一个C++计算器,可以计算多个变量,但是我在计算部分被卡住了…计算器的工作原理是一次获取一个输入,并将它们存储在两个向量中,一个称为“nums”,另一个称为“ops”,我有一个for循环,从向量中获取信息,并将它们计算成一个称为“sum”的双精度数。计算器的工作方式与我希望的完全相同,直到计算部分,我让它使用for循环和if语句来计算我希望它使用的每个运算符(+、-、/、*)。以下是计算本身的代码:

else if(line == "="){
            sum = nums[0];
            for(int k =0; k < nums.size(); k++){
                  if(ops[k] == '+'){
                    sum = sum + nums[k+1];
                  }else if(ops[k] == '-'){
                    sum = sum - nums[k+1];
                  }else if (ops[k] == '/'){
                    sum = sum / nums[k+1];
                  }else if(ops[k] == '*'){
                    sum = sum * nums[k+1];
                  }else{
                    sum = sum;
                  }
            }
            cout << sum << endl;
            ops.clear();
            nums.clear();
}
else如果(行==”=”){
总和=nums[0];
对于(int k=0;kcout评论不适用于长时间的讨论;此对话已结束。
#include <iostream>
#include <vector>
#include <string>
using namespace std;

int main()
{
    vector<double> nums;
    vector<char> ops;
    int numn;
    int opsn;
    double curnum;
    char curop;
    double sum;
    string line = "";
    int j;
    bool dubnum = false;
    cout << "welcome to a calculator"<<endl;
    cout << "to begin please type a number and hit enter" << endl;
    cout << "to continue enter the operator you wish to use (+, -, /, or *)"<<endl;
    cout << "to get the result simply enter '=' and press enter"<<endl;
    cout << "if you enter another number before entering an operator your calculation will reset."<<endl;
    cout << "to exit calculator, please enter 'exit' and press enter" << endl;
    do{
        cin>>line;
        j = line.length();
        for(int i =0; i < j; i++){
            opsn = ops.size();
            numn = nums.size();
            if(isdigit(line[i]) == true && dubnum == false){
                curnum = stod(line);
                nums.push_back(curnum);
                dubnum = true;
            }else if (isdigit(line[i]) == true && dubnum == true){
                nums.clear();
                ops.clear();
                curnum = stod(line);
                nums.push_back(curnum);
                dubnum= true;
            }else if(line == "+" || line == "-"|| line == "/"|| line == "*"){
                curop = line[0];
                ops.push_back(curop);
                dubnum = false;
            }else if(line == "="){
                sum = nums[0];
                for(int k =0; k < nums.size(); k++){
                      if(ops[k] == '+'){
                        sum = sum + nums[k+1];
                      }else if(ops[k] == '-'){
                        sum = sum - nums[k+1];
                      }else if (ops[k] == '/'){
                        sum = sum / nums[k+1];
                      }else if(ops[k] == '*'){
                        sum = sum * nums[k+1];
                      }else{
                        sum = sum;
                      }
                }
                cout << sum << endl;
                ops.clear();
                nums.clear();
            }else{
                if(line != "exit"){
                    cout << "invalid input\n";
                }else{
                    cout<<"goodbye\n";
                }
            }
        }
    }while(line != "exit");
    return 0;
}