Ternary Calculation(也不用栈,注意输入方式即可,直接解决)

来源:互联网 发布:电子网络 编辑:程序博客网 时间:2024/05/17 22:57

Ternary Calculation

Time Limit: 2000ms
Memory Limit: 65536KB
64-bit integer IO format: %lld      Java class name:Main
SubmitStatus

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 operatoranumber2 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

51 + 2 * 31 - 8 / 31 + 2 - 37 * 8 / 55 - 8 % 3

Sample Output

7-10113

Note

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


#include<stdio.h>int num[4];char ch[3];void input(){scanf("%d",&num[1]);getchar();scanf("%c",&ch[1]);scanf("%d",&num[2]);getchar();scanf("%c",&ch[2]);scanf("%d",&num[3]);}int compute(int a,char op,int b){switch(op){case'+':return a+b;break;case'-':return a-b;break;case'*':return a*b;break;case'/':return a/b;break;case'%':return a%b;break;}}char precede(char a,char b){if(a=='+'||a=='-'){if(b=='*'||b=='/'||b=='%')return '<';elsereturn '=';}else{if(b=='*'||b=='/'||b=='%')return '=';elsereturn '>';}}int main(){int T;scanf("%d",&T);while(T--){int m,s;input();switch(precede(ch[1],ch[2])){case '>':m=compute(num[1],ch[1],num[2]);s=compute(m,ch[2],num[3]);break;case'=':m=compute(num[1],ch[1],num[2]);s=compute(m,ch[2],num[3]);break;case'<':m=compute(num[2],ch[2],num[3]);s=compute(num[1],ch[1],m);break;}printf("%d\n",s);}return 0;}


0 0
原创粉丝点击