九度[1103]-二次方程计算器
2017-09-12 22:56
239 查看
九度[1103]-二次方程计算器
题目描述:设计一个二次方程计算器
输入
每个案例是关于x的一个二次方程表达式,为了简单,每个系数都是整数形式。
输出
每个案例输出两个实数(由小到大输出,中间由空格隔开),保留两位小数;如果无解,则输出“No Solution”。
样例输入
x^2+x=3x+4
样例输出
-1.24 3.24
解题思路:
判断各个位置字符的出现可能
AC代码:
#include <cstdio> #include <string> #include <iostream> #include <cmath> using namespace std; int a, b, c; string input; void init(string input){ int t = 0; bool flag = true; //cout<<input<<endl; //cout<<"len: "<<input.length()<<endl; for(int i = 0; i < input.length(); i++){ //cout<<input[i]<<endl; // 输入一共有4种可能,数字,+,-,x(^肯定跟在x后面) if('0' <= input[i] && input[i] <= '9') { t = t*10 + (input[i] - '0'); // 如果为最后一个数字,根据flag加减 if(i == input.length()-1){ if(flag) c += t; else c -= t; } // 如果后面紧跟+-,则根据flag +- ,若跟着x,则等下一轮循环 else{ if(input[i+1] == '+' || input[i+1] == '-'){ if(flag) c += t; else c -= t; } } } else{ // 如果输入为x if(input[i] == 'x'){ //如果^跟在x后面,则更新a 否则更新t if(input[i+1] == '^'){ // 如果t=0,则a++ if(t == 0) a += 1; else{ if(flag) a += t; else a -= t; } i += 2; } else{ // 如果t=0,则b++ if(t == 0) b += 1; else{ if(flag) b += t; else b -= t; } } } else if(input[i] == '+'){ flag = true; } else if(input[i] == '-'){ flag = false; } t = 0; } } //cout<<a<<" "<<b<<" "<<c<<endl; } int main(){ //freopen("C:\\Users\\Administrator\\Desktop\\test.txt", "r", stdin); while(getline(cin, input)){ string::size_type idx = input.find("="); init(input.substr(0, idx)); a = -1*a, b = -1*b, c = -1*c; init(input.substr(idx+1)); double f = b*b - 4*a*c; if(a != 0){ if(f < 0) printf("No Solution\n"); else if(f == 0) printf("%.2lf\n", (-1.0*b/(2.0*a))); else { if(a > 0) printf("%.2lf %.2lf\n", (-1.0*b-sqrt(f))/(2.0*a), (-1.0*b+sqrt(f))/(2.0*a)); else printf("%.2lf %.2lf\n", (-1.0*b+sqrt(f))/(2.0*a), (-1.0*b-sqrt(f))/(2.0*a)); } } else printf("%.2lf\n", (-1.0*c/b)); a = b = c = 0; } //fclose(stdin); return 0; }
相关文章推荐
- 九度-题目1103 二次方程计算器
- 九度[1103]二次方程计算器
- 九度OJ-1103:二次方程计算器
- 九度OJ 1103:二次方程计算器 (解方程)
- 九度 oj 题目1103:二次方程计算器
- 九度 Online Judge 算法 刷题 题目1103:二次方程计算器
- 九度 1103:二次方程计算器
- 九度OJ 1103 二次方程计算器
- 九度oj 1103
- 九度oj-题目1103:二次方程计算器
- 正则表达式练习之题目1103:二次方程计算器
- 人生艰难之九度OJ 1103 1101
- 九度OJ 1103 二次方程计算器
- 题目1103:二次方程计算器
- 九度oj 题目1103:二次方程计算器
- jobdu 1103 二次方程计算器
- OJ_1103 二次方程计算器
- 九度OJ 1103:二次方程计算器 (解方程)
- 题目1103:二次方程计算器(字符串操作以及基础数学知识)
- 题目1103:二次方程计算器