根据输入的运算符对输入的整数进行简单的整数运算。运算符只会是加+、减-、乘*、除/、求余%、阶乘!六个运算符之一。输出运算的结果,如果出现除数为零,则输出“error”,如果求余运算的第二个运算数为0,也输出“error”。
Input
输入为一行。先输入第一个整数,空格输入运算符,然后再空格输入第二个整数,回车结束本次输入。如果运算符为阶乘!符号,则不输入第二个整数,直接回车结束本次输入。
Output
输出为一行。输出对输入的两个(或一个)数,根据输入的运算符计算的结果,或者“error”。
Sample
Inputcopy | Outputcopy |
---|---|
12 + 34 54 – 25 3 * 6 45 / 0 5 ! 34 % 0 |
46 29 18 error 120 error |
Hint
运算不会超出整型数据的范围。0!=1; 测试数据有多组。
//
#include<bits/stdc++.h>
using namespace std;
class oper
{
private:
int a,b;
char op;
public:
oper( int aa=0,char ch=0,int bb=0 ):a(aa),op(ch),b(bb) {}
void out()
{
switch( op )
{
case '+': cout<<a+b<<endl; break;
case '-': cout<<a-b<<endl; break;
case '*': cout<<a*b<<endl; break;
case '/':
if( b==0 ) cout<<"error"<<endl;
else cout<<a/b<<endl; break;
case '%':
if( b==0 ) cout<<"error"<<endl;
else cout<<a%b<<endl; break;
default:
int ans=0;
for( int i=1;i<=a;i++ ) ans*=i;
cout<<ans<<endl; break;
}
}
};
int main()
{
char ch;
int a,b;
while( ~scanf("%d %c",&a,&ch) )
{
if( ch=='!' ) { oper ans( a,ch ); ans.out(); continue; }
cin>>b; oper ans( a,ch,b ); ans.out();
}
return 0;
}