计算器的改良
程序员文章站
2022-04-07 09:04:12
...
6a-5+1=2-2a
a=0.750
一元二次方程
最后可以化成
再化简可得
所以只需要求出(将常数相加,等号右边的要)
和(将未知数的系数相加,等号右边同上)
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int n, m, l = 1, k, t = 1, tot;
char s, a;
int main()
{
while(cin>>s)
{
if(s == '+')m += t * k * l, l = 1, tot = 0, k = 0;
if(s == '-')m += t * k * l, l = -1, tot = 0, k = 0;
if(s == '=')m += t * k * l, t = -1, tot = 0, k = 0, l = 1;
if(s >= '0' && s <= '9')
{
k = k * 10 + s - '0', tot = 1;
}
if(s >= 'a' && s <= 'z')
{
a = s;
if(tot)n += t * k * l;
else n += l * t;
k = 0, tot = 1;
}
}
m += t * k * l;
double ans = double(-m * 1.0 / n);
if (ans == -0.0) ans = 0;
printf("%c=%.3f", a, ans);
return 0;
}
上一篇: 看完这篇Redis缓存三大问题,保你能和面试官互扯。
下一篇: 【NOIP】计算器的改良