将字符串数组位置分配给字符串变量

时间:2015-12-04 01:42:24

标签: c++ arrays postfix-notation

我正在使用的C ++程序进行括号检查,将表达式从中缀转换为后缀,计算后缀等式,并一次完成所有三个。我已经完成了括号检查。我遇到的问题在于后缀评估。我开始阅读包含方程式的文本文档到字符串行数组中。例如,行[6]包含“73 + 9 *”。因此,我想知道是否有办法简单地让字符串暂时等于每个后缀方程。

 parentheses tests
x = ((1 + 2)*3
x = (1 + 2))*3
y = (z * j)/(b * 8)^2
postfix equation solving
7 3 + 9 *
5 2 + 1 9 * *
8 9 * 3 5 + -
2 + 8 4 /
infix to postfix conversion
(8 + 4) * 9
(6 + 3) * (2 * 8)
(9 * 8) – (5 + 3)
3 + (9 / 3)
Parentheses check, infix to postfix conversion, postfix evaluation
(8 + 4) * 9
(6 + 3) * (2 * 8)
(9 * 8) – (5 + 3)
3 + (9 / 3)

这是我在^^

中阅读的文件
ifstream dataFile;
    dataFile.open("buff.txt");
    string line[20]; //Array to hold data


    //read file into array
    while(dataFile)
    {
        for(int i = 0; i < 20; i++)
        {
            getline(dataFile, line[i]);

        }


    }
    dataFile.close();

上面是我用来将文本文件中的信息存储到数组中的方法^^

//POSTFIX EVALUATION
            stack<int> operation;
            int operand1, operand2, result, number;
            string input;
            string s;


         for(int k = 5; k < 9; k++)
         {
               input = line[k];//Assigning the postfix Eq to string(?)

            for(int i = 0; i < input.length(); i++)
            {


                if (isdigit(input[i]))
                {
                    s = input[i];
                    istringstream iss(s);
                    iss >> number;
                    operation.push(number);

                }
                else
                {
                    operand2 = operation.top();
                    operation.pop();
                    operand1 = operation.top();
                    operation.pop();


                    if(input[i] == '+')
                    {
                        result = operand2 + operand1;
                    }
                    else if(input[i] == '-')
                    {
                        result = operand2 - operand1;
                    }
                    else if(input[i] == '*')
                    {
                        result = operand2 * operand1;
                    }
                    else
                    {
                        result = operand2 / operand1;
                    }
                    operation.push(result);

                 }
            }
         cout << "The result is: "<<result<<endl;
        }

最后,这是我的后缀评估代码^^

0 个答案:

没有答案