16分求助
查看原帖
16分求助
1179906
hhy8399楼主2024/10/12 16:01
#include <bits/stdc++.h>
using namespace std;

int start,m,x;
char c;
string s,k;
bool pos = true,now;
double ans;

void do_pl() 
{
	int plus,j = 0;
	if(k[(int)k.size() - 1] >= 'a' && k[(int)k.size() - 1] <= 'z') 
	{
		c = k[(int)k.size() - 1];
		for(int i = k.size() - 1;i >= 1;i--,j++) 
		{
			plus += ((int)k[i] - '0') * pow(10,j);
		}
		x += plus;
	}
	else 
	{
		for(int i = k.size() - 1;i >= 0;i--,j++) 
		{
			plus += ((int)k[i] - '0') * pow(10,j);
		}
		m += plus;
	}
}

void do_upl() 
{
	int upl,j = 0;
	if(k[(int)k.size() - 1] >= 'a' && k[(int)k.size() - 1] <= 'z') 
	{
		for(int i = k.size() - 1;i >= 1;i--,j++) 
		{
			upl += ((int)k[i] - '0') * pow(10,j);
		}
		x -= upl;
	}
	else 
	{
		for(int i = k.size() - 1;i >= 0;i--,j++) 
		{
			upl += ((int)k[i] - '0') * pow(10,j);
		}
		m -= upl;
	}
}

int main() 
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin >> s;
	(s[0] == '-' ? now = false,start++ : now = true);
	for(int i = start;i <= (int)s.size();i++) 
	{
		if(s[i] == '+') 
		{
			if(pos) {
				do_pl();
			}
			else {
				do_upl();
			}
			k.clear();
			continue;
		}
		else if(s[i] == '-') 
		{
			if(pos) 
			{
				do_upl();
			}
			else 
			{
				do_pl();
			}
			k.clear();
			continue; 
		}
		else 
		{
			k += s[i];
		}
	}
	ans = m / x;
	cout << c;
	printf("=%.3lf",ans);
	return 0;
}
2024/10/12 16:01
加载中...