题目描述
给一个方程,形如X+Y=Z或X-Y=Z。给出了其中两个未知数,请求出第三个数。未知数用‘?’表示,等式中也许会出现一些多余的空格。
输入格式
一行,方程。
输出格式
‘?’代表的值
输入输出样例
输入 #1 复制
样例输入1
1+2=?
样例输入2
3 +? = 2
输出 #1 复制
样例输出1
3
样例输出1
-1
说明/提示
0<=X,Y,Z<1,000,000,000
#include<bits/stdc++.h>
using namespace std;
string s;
long long x, y, z;
char ch;
int main(){getline(cin , s);int i = 0, len = s.size(), flag = 1;while(i < len){if(flag == 1){//x:第一项数字if(isdigit(s[i]))x = x * 10 + s[i]-'0';else if(s[i] == '?')x = -1;}else if(flag == 0){//y:第二项数字if(isdigit(s[i])){y = y * 10 + s[i]-'0';}else if(s[i] == '?')y = -1;}else if(flag == -1){//z:等于号后面的数字if(isdigit(s[i]))z = z * 10 + s[i]-'0';else if(s[i] == '?')z = -1;}if(s[i] == '+' || s[i] == '-')//ch:运算符ch = s[i],flag = 0;else if(s[i] == '=')flag = -1;i++; }//运算结果if(x == -1){if(ch == '+')cout << z - y;else if(ch == '-')cout << z + y;}else if(y == -1){if(ch == '+')cout << z - x;else if(ch == '-')cout << x - z;}else if(z == -1){if(ch == '+')cout << x + y;else if(ch == '-') cout << x - y;}return 0;
}
思考:怎么把代码变短一点。
本文发布于:2024-02-02 19:20:54,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170687285245901.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |