运算符 可以使用enum类型 然后随机输出...

- 满眼生机转化钧;天工人巧日争新。
2010-06-02 13:24
2010-06-02 19:24
程序代码:#include<iostream>
using namespace std;
void display(char a[]);
int Result(char a[]);
char Sign[4]={'+','-','*','/'};
int main(void)
{
int i=4;
int result;
char a[4];
char b[7];
cout<<"请输入4小于10个正整数"<<endl;
while(i--)
cin>>a[i];
int n=7;
while(n--)
{
for(int i=0;i<7;i+=2) //生成随机多项式
{
b[i]=a[rand()%4];
if(i<5)
b[i+1]=Sign[rand()%4];
}
display( b);
result=Result( b);
cout<<"结果="<<result<<endl;
}
return 0;
}
void display(char a[]) //显示多项式
{
cout<<a;
}
int Result(char a[])
{
int b[7];
int result;
int count=7;
while(count--)
{
if((int)a[count]>=48) //只传递操作数 不传递 操作符
{
b[count]=(int)a[count]-48;
}else
b[count]=6562; //9^4=6561 在运算中不可能出现 所以设置为标志位
}
for(int i=1;i<6;i+=2) //求程序中的乘除法运算
{
if(a[i]=='*'||a[i]=='/')
{
if(a[i]=='*')
{
if(b[i-1]!=6562)
{
b[i-1]=b[i-1]*b[i+1];
b[i+1]=6562;
}else if(b[i-3]!=6562)
{
b[i-3]=b[i-3]*b[i+1];
b[i+1]=6562;
}else
{
b[i-5]=b[i-5]*b[i+1];
b[i+1]=6562;
}
}
if(a[i]=='/')
{
if(b[i-1]!=6562)
{
b[i-1]=b[i-1]/b[i+1];
b[i+1]=6562;
}else if(b[i-3]!=6562)
{
b[i-3]=b[i-3]/b[i+1];
b[i+1]=6562;
}else
{
b[i-5]=b[i-5]/b[i+1];
b[i+1]=6562;
}
}
}
}
for(int i=1;i<6;i+=2) //求程序中的加减法运算
{
if(a[i]=='+'||a[i]=='-')
{
if(a[i]=='+')
{
if(b[i-1]!=6562)
{
b[i-1]=b[i-1]+b[i+1];
b[i+1]=6562;
}else if(b[i-3]!=6562)
{
b[i-3]=b[i-3]+b[i+1];
b[i+1]=6562;
}else
{
b[i-5]=b[i-5]+b[i+1];
b[i+1]=6562;
}
}
if(a[i]=='-')
{
if(b[i-1]!=6562)
{
b[i-1]=b[i-1]-b[i+1];
b[i+1]=6562;
}else if(b[i-3]!=6562)
{
b[i-3]=b[i-3]-b[i+1];
b[i+1]=6562;
}else
{
b[i-5]=b[i-5]-b[i+1];
b[i+1]=6562;
}
}
}
}
int n=7;
while(n--)
{
if(b[n]!=6562)
{
result=b[n];
break;
}
}
return result;
}

2010-06-03 13:19
!!!!及礼品
先!
2010-06-03 16:27
2010-06-03 20:23
先。
2010-06-03 23:13