HSyuio77 @ 2023-08-17 21:47:52
#include<iostream>
#include<cstring>
#include<deque>
#include<cmath>
using namespace std;
int main()
{
string s;
cin>>s;
int i=0;
int h=0;
int sum=0;
deque <int> p;
int a[1000000];
memset(a,0,sizeof(a));
while(s[i]!='@')
{
if(s[i]>='0'&&s[i]<='9')
{
a[h]=s[i]-'0';
h++;
}
if(s[i]=='.')
{
for(int k=i-h;k<i;k++)
{
sum+=a[k]*pow(10,h-(i-k-1)); // 计算数值时需要乘以相应位数的权重
}
p.push_back(sum);
sum=0;
h = 0;
}
else
{
int x=p.back();
p.pop_back();
int y=p.back();
p.pop_back();
if(s[i]=='+')
{
p.push_back(x+y);
}
if(s[i]=='-')
{
p.push_back(y-x);
}
if(s[i]=='*')
{
p.push_back(y*x);
}
if(s[i]=='/')
{
p.push_back((float)y/x);
}
}
i++;
}
cout<<p.back();
return 0;
}
by cleverclever @ 2023-08-20 17:32:32
@1875311061hsy
给你一个简单一点的代码,很容易理解。
#include <bits/stdc++.h>
using namespace std;
int arr[55], num, top;
int main()
{
string s;
cin >> s;
for (int i = 0; i < s.size(); i++)
if (s[i] >= '0' && s[i] <= '9') //计算输入的数字。
num = num * 10 + (s[i] - '0');
else if (s[i] == '.') //当一个数结束时。
arr[++top] = num, num = 0;
else if (s[i] == '@') //当结束时退出循环。
break;
else if (s[i] == '+') //加法。
arr[--top] += arr[top + 1];
else if (s[i] == '-') //减法。
arr[--top] -= arr[top + 1];
else if (s[i] == '*') //乘法。
arr[--top] *= arr[top + 1];
else if (s[i] == '/') //除法。
arr[--top] /= arr[top + 1];
cout << arr[top] << endl; //输出最后的结果。
return 0;
}
by HSyuio77 @ 2023-08-20 18:47:34
@cleverclever 后面我也用这个写出来啦谢谢你
by cleverclever @ 2023-08-20 19:02:38
@1875311061hsy 不客气OwO~