16分,必关,易懂
查看原帖
16分,必关,易懂
1066396
szm111213楼主2024/11/20 21:43
#include<bits/stdc++.h>
using namespace std;
string kkk[1005];
char zf, wzs;
int iindex = 1,start, n, m, iiindex;
int pd(char a)
{
	if(a == '0') return 0;
	if(a == '1') return 1;
	if(a == '2') return 2;
	if(a == '3') return 3;
	if(a == '4') return 4;
	if(a == '5') return 5;
	if(a == '6') return 6;
	if(a == '7') return 7;
	if(a == '8') return 8;
	if(a == '9') return 9;
}
int stoii(string a)
{
	int k = 0;
	for(int i = 0; i < a.size(); i ++)
	{
		 k += pd(a[i]) * pow(10, i);
	}
	return k;
}
int main()
{
	string a, kk;
	cin >> a;
	for(int i = 0; i < a.size(); i ++)
	{
		if(a[0] == '-' && i == 0)
		{
			kk = '-';
			continue;
		}
		else if(a[0] != '-' && i == 0)
		{
			kk = "+";
		}
		if(a[i] == '+' || a[i] == '-' || a[i] == '=')
		{
			start = i;
			break;
		}
		kk += a[i];
	}
	kkk[iindex] = kk;
	//cout << kk << endl << "------------------" << endl;
	for(int i = start; i < a.size(); i ++)
	{
		if(a[i] == '+' || a[i] == '-' || a[i] == '=')
		{
			if(a[i] == '+' || a[i] == '-')
			{
				zf = a[i];
			}
			int j;
			for(j = i + 1; j < a.size(); j ++)
			{
				if(a[j] == '+' || a[j] == '-' || a[j] == '=')
				{
					break;
				}
			}
			kkk[++ iindex] = zf + a.substr(i + 1, j - i - 1);
			//cout << kkk[iindex] << " ";
		}
		if(a[i] == '=')
		{
			iiindex = iindex;
		}
		if(a[i] >= 'a' && a[i] <= 'z')
		{
			wzs = a[i];
		}
	}
/*
	for(int i = 1; i <= iindex; i ++)
	{
		cout << kkk[i] << " ";
	}
	cout << endl;
*/
	//以上为截取每一个数
	for(int i = 1; i < iiindex; i ++)
	{
		string kkkk = "";
		if(kkk[i][kkk[i].size() - 1] == wzs)
		{
			for(int j = 1; j < kkk[i].size() - 1; j ++)
			{
				kkkk += kkk[i][j];
			}
		}
		int kkkkk = stoii(kkkk);
		if(kkk[i][0] == '-')
		{
			kkkkk = kkkkk - kkkkk - kkkkk;
		}
		n += kkkkk;
	}
	for(int i = 1; i < iiindex; i ++)
	{
		string kkkk = "";
		if(kkk[i][kkk[i].size() - 1] != wzs)
		{
			for(int j = 1; j < kkk[i].size(); j ++)
			{
				kkkk += kkk[i][j];
			}
		}
		int kkkkk = stoii(kkkk);
		if(kkk[i][0] == '-')
		{
			kkkkk = kkkkk - kkkkk - kkkkk;
		}
		m += kkkkk;
	}//给等号左边进行判断
	for(int i = iiindex; i <= iindex; i ++)
	{
		string kkkk = "";
		if(kkk[i][kkk[i].size() - 1] == wzs)
		{
			for(int j = 1; j < kkk[i].size() - 1; j ++)
			{
				kkkk += kkk[i][j];
			}
		}
		int kkkkk = stoii(kkkk);
		if(kkk[i][0] == '+')
		{
			kkkkk = kkkkk - kkkkk - kkkkk;
		}
		n += kkkkk;
	}
	for(int i = iiindex; i <= iindex; i ++)
	{
		string kkkk = "";
		if(kkk[i][kkk[i].size() - 1] != wzs)
		{
			for(int j = 1; j < kkk[i].size(); j ++)
			{
				kkkk += kkk[i][j];
			}
		}
		int kkkkk = stoii(kkkk);
		if(kkk[i][0] == '+')
		{
			kkkkk = kkkkk - kkkkk - kkkkk;
		}
		m += kkkkk;
	}//给等号右侧进行判断
	if((m * 1.0) / (n * 1.0) < 0)
	{
		cout << wzs << "=" << fixed << setprecision(3) << (m * 1.0) / (n * 1.0) - (m * 1.0) / (n * 1.0) - (m * 1.0) / (n * 1.0);
	}
	else cout << wzs << "=" << fixed <<setprecision(3) <<(m * 1.0) / (n * 1.0);
	return 0;
}
2024/11/20 21:43
加载中...