#include <iostream>
#include <cstdio>
#include <string>
#include <cctype>
#include <cmath>
using namespace std;
string str;
int a, b, c, i, flag, f;
int getdigit(char *s) {
int tmp = 0, j = 0;
while(isdigit(s[j])) {
tmp = tmp * 10 + s[j] - '0';
i++, j++;
}
return tmp;
}
void sign() {
if(str[i] == '+')
f = 1;
if(str[i] == '-')
f = -1;
if(str[i] == '=')
flag = -1;
}
void solve() {
cin >> str;
int len = str.length();
flag = 1, f = 1;
a = b = c = 0;
for(i = 0; i < len; i++) {
sign();
if(str[i] == 'x') {
if(str[i + 1] == '^') {
a += f * flag;
i += 2;
continue;
}
else {
b += f * flag;
}
}
if(isdigit(str[i])) {
int tmp = getdigit(&str[i]);
if(str[i] == 'x') {
if(str[i + 1] == '^'){
a += tmp * f * flag;
i += 2;
}
else b += tmp * f * flag;
}
else {
c += tmp * f * flag;
sign();
}
}
}
int delta = b * b - 4 * a * c;
if(delta < 0) printf("No Resolution\n");
else {
double x1 = - b / (2.0 * a) - sqrt(1.0 * delta) / (2.0 * a), x2 = - b / (2.0 * a) + sqrt(1.0 * delta) / (2.0 * a);
printf("%.2f %.2f\n", x1, x2);
}
}
int main() {
solve();
return 0;
}
二次方程计算器
最新推荐文章于 2022-07-03 17:30:54 发布