程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> ZOJ3782:Ternary Calculation

ZOJ3782:Ternary Calculation

編輯:C++入門知識

Complete the ternary calculation.

Input

There are multiple test cases. The first line of input contains an integer T indicating the number of test cases. For each test case:

There is a string in the form of "number1 operatora number2 operatorb number3". Each operator will be one of {'+', '-' , '*', '/', '%'}, and each number will be an integer in [1, 1000].

Output

For each test case, output the answer.

Sample Input

5
1 + 2 * 3
1 - 8 / 3
1 + 2 - 3
7 * 8 / 5
5 - 8 % 3

Sample Output

7
-1
0
11
3

Note

The calculation "A % B" means taking the remainder of A divided by B, and "A / B" means taking the quotient.

簡單計算器問題,要注意中間過程都按整型處理

#include
#include
#include
using namespace std;
int main()
{
    int i,t;
    scanf("%d%*c",&t);
    int a,b;
    char s[250],c;
    while(t--)
    {
        gets(s);
        stacks1;
        stacks2;
        for(i=0; s[i]; i++)
        {
            if(s[i]>='0'&&s[i]<='9')
            {
                a=0;
                while(s[i]>='0'&&s[i]<='9')
                {
                    a=a*10+s[i]-'0';
                    i++;
                }
                i--;
                s2.push(a);
            }
            else if(s[i]=='-'||s[i]=='+')
            {
                if(!s1.empty())
                {
                    c=s1.top();
                    s1.pop();
                    a=s2.top();
                    s2.pop();
                    b=s2.top();
                    s2.pop();
                    if(c=='+')
                        a+=b;
                    else
                        a=b-a;
                    s2.push(a);
                    s1.push(s[i]);
                }
                else
                    s1.push(s[i]);
            }
            else if(s[i]=='/' || s[i] == '*' || s[i] == '%')
            {
                char ch = s[i];
                b=0;
                i+=2;
                while(s[i]>='0'&&s[i]<='9')
                {
                    b=b*10+s[i]-'0';
                    i++;
                }
                i--;
                a=s2.top();
                s2.pop();
                if(ch == '/')
                    a=a/b;
                else if(ch == '*')
                    a = a*b;
                else if(ch == '%')
                    a = a%b;
                s2.push(a);
            }
        }
        while(!s1.empty())
        {
            c=s1.top();
            s1.pop();
            a=s2.top();
            s2.pop();
            b=s2.top();
            s2.pop();
            if(c=='+')
                a+=b;
            else
                a=b-a;
            s2.push(a);
        }
        printf("%d\n",s2.top());
    }
    return 0;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved