回复 楼主 子曦
#include <iostream>
#include <string>
using namespace std;
int main()
{
double Get_result(char array[],int n);
char str[50];
cout<<" 请输入公式:"<<endl;
cin>>str;
cout<<str<<endl;
double result;
int n;n=strlen(str);
result=Get_result(str,n);
cout<<"="<<result<<endl;
return 0;
}
double Get_result(char array[],int n)
{
int i=0,z=0,s;double a[20];char b[20];
double rate=10.0,itemp=0.0;
for(;i<20;i++)
a[i]=1000000.0;
for(i=0;i<10;i++)
b[i]=' ';
for(i=0;i<n;i++)
{
if(array[i]>='0'&&array[i]<='9')
{
if(rate==10.0)
itemp=itemp*rate+(array[i]-'0');
else
{
itemp=itemp+rate*(array[i]-'0');
rate=rate/10;
}
}
else if(array[i]=='.')
rate=0.1;
else if(array[i]=='+')
{
a[z]=itemp;itemp=0;z++;
b[z]='+';z++;
rate=10.0;
}
else if(array[i]=='-')
{
a[z]=itemp;itemp=0;z++;
b[z]='-';z++;
rate=10.0;
}
else if(array[i]=='*')
{
a[z]=itemp;itemp=0;z++;
b[z]='*';z++;
rate=10.0;
}
else if(array[i]=='/')
{
a[z]=itemp;itemp=0;z++;
b[z]='/';z++;
rate=10.0;
}
a[z]=itemp;
s=z;
}
i=0;z=1;
int x=0,y=1,t;double result;
for(i=0;i<=s;i++)
{
if(b[i]=='/')
{
a[i+1]=1/a[i+1];
b[i]='*';
}
}
for(i=0;i<=s;i++)
{
if(b[i]=='*')
{
if(i-t==2)
{
a[t-z]=a[t-z]*a[i+1];
z=z+2;
}
a[i-1]=a[i-1]*a[i+1];
a[i+1]=1000000.0;
b[i]=' ';
t=i;
}
}
for(i=0;i<=s;i++)
{
if(a[i]!=1000000.0)
{
a[x]=a[i];
x=x+2;
}
if(b[i]!=' ')
{
b[y]=b[i];
y=y+2;
}
}
for(i=0;i<=y-2;i++)
{
if(b[i]=='+')
a[0]=a[0]+a[i+1];
else if(b[i]=='-')
a[0]=a[0]-a[i+1];
}
result=a[0];
return result;
}