本题我使用数组来代替栈了。
#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#include<string>
using namespace std;
string s;
long long arr[50] = {0};
int k = 0;
int j = 0;
long long shu(int k, int l, int r)
{
long long ans = 0,z=0;
for (int m = l; m <= r; m++)
{
z = s[m] - '0';
for (int n = k; k > 1; k--)
{
z = z * 10;
}
ans += z;
k--;
}
return ans;
}
void jia(int m)
{
int a = m - 1;
arr[a - 1] = arr[a-1] + arr[a];
arr[a] = 0;
j--;
}
void jian(int m)
{
int a = m - 1;
arr[a - 1] = arr[a-1] - arr[a];
arr[a] = 0;
j--;
}
void cheng(int m)
{
int a = m - 1;
arr[a - 1] = arr[a-1] * arr[a];
arr[a] = 0;
j--;
}
void chu(int m)
{
int a = m - 1;
arr[a - 1] = arr[a-1] / arr[a];
arr[a] = 0;
j--;
}
int main()
{
cin >> s;
int i = 0;
int l=0, r;
l = 0;
while (s[i] != '@')
{
if (s[i] >= '0' && s[i] <= '9')
{
k++;
}
if (s[i] == '.')
{
r = i - 1;
arr[j] = shu(k, l, r);
j++;
k = 0;
}
if ((s[i] <'0' || s[i] > '9') && s[i + 1] >= '0' && s[i + 1] <= '9')
{
l = i + 1;
}
switch (s[i])
{
case'+':
jia(j);
break;
case'-':
jian(j);
break;
case'*':
cheng(j);
break;
case'/':
chu(j);
break;
}
i++;
}
cout << arr[0] << endl;
}

京公网安备 11010502036488号