数据是否有缺陷呢?
查看原帖
数据是否有缺陷呢?
592342
WA_automat楼主2022/5/24 16:12

AC了

但是输入2a+1=-a-2;答案是a=-3.000

#include<iostream>
#include<cstdio>
#include<string>
#include<cctype>
using namespace std;
int exchange(char data) {
	if (data == '0') {
		return 0;
	}
	else if (data == '1') {
		return 1;
	}
	else if (data == '2') {
		return 2;
	}
	else if (data == '3') {
		return 3;
	}
	else if (data == '4') {
		return 4;
	}
	else if (data == '5') {
		return 5;
	}
	else if (data == '6') {
		return 6;
	}
	else if (data == '7') {
		return 7;
	}
	else if (data == '8') {
		return 8;
	}
	else if (data == '9') {
		return 9;
	}
}
int main(void) {
	string str;
	char ch = '0';
	double num = 0;
	double result = 0;
	double pointer = 0;
	bool flag[2] = { true,true };
	cin >> str;
	for (int i = 0; i < str.size(); ++i) {
		char value = str[i];
		if (isdigit(value)) {
			if (flag[1]) {
				num = 10 * num + exchange(value);
			}
			else {
				num = 10 * num - exchange(value);
			}
		}
		else if (isalpha(value)) {
			ch = value;
			if (flag[0]) {
				if (num == 0) {
					pointer += 1;
				}
				pointer += num;
			}
			else {
				if (num == 0) {
					pointer -= 1;
				}
				pointer -= num;
			}
			num = 0;
		}
		else if (value == '+') {
			flag[1] = true;
			if (!isalpha(str[i - 1])) {
				if (flag[0]) {
					result -= num;
				}
				else {
					result += num;
				}
			}
			num = 0;
		}
		else if (value == '-') {
			flag[1] = false;
			if (!isalpha(str[i - 1])) {
				if (flag[0]) {
					result -= num;
				}
				else {
					result += num;
				}
			}
			num = 0;
		}
		else if (value == '=') {
			flag[1] = true;
			if (!isalpha(str[i - 1])) {
				if (flag[0]) {
					result -= num;
				}
				else {
					result += num;
				}
			}
			num = 0;
			flag[0] = false;
		}
		if (i == str.size() - 1&&isdigit(value)) {
			if (!isalpha(str[i - 1])) {
				if (flag[0]) {
					result -= num;
				}
				else {
					result += num;
				}
			}
		}
	}
	printf("%c=%.3lf\n", ch, result / pointer);
	return 0;
}
2022/5/24 16:12
加载中...