求救!75pts
查看原帖
求救!75pts
923248
Lian_zy楼主2023/12/2 19:52
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

const int maxn = 2e2 + 10;
char op, str[maxn];
int z, uk, num[3];
double cal(int a, int op, int b) {
	if (op == '+') return a + b;
	if (op == '-') return a - b;
	if (op == '*') return a * b;
	if (op == '/') {
		if (b) return double(a) / double(b);
		return 0.00;
	}
	return -11.4514;
}
char f(char c) {
	if (c == '+') return '-';
	if (c == '-') return '+';
	if (c == '*') return '/';
	if (c == '/') return '*';
	return 'E';
}
int main() {
	for (int p = 0; op ^ '\n';) {
		scanf("%c", &op);
		if (op ^ ' ' && op ^ '\n') str[p++] = op; 
	}
	for (int i = 0; str[i]; i++) {
		if (str[i] == '?') uk = z;
		if (str[i] == '=') z++;
		if ('0' <= str[i] && str[i] <= '9') num[z] = num[z] * 10 + str[i] - '0';
		if (str[i] == '+' || str[i] == '-' || str[i] == '*' || str[i] == '/') {
			op = str[i];
			z++;
		}
	}
	if (uk == 1) {
		printf("%.2lf", cal(num[2], f(op), num[0]));
	} else if (uk) {
		printf("%.2lf", cal(num[0], op, num[1]));
	} else {
		printf("%.2lf", cal(num[2], f(op), num[1]));
	}
	return 0;
}
2023/12/2 19:52
加载中...