九度 oj 题目1103:二次方程计算器
2017-02-05 11:06
267 查看
http://ac.jobdu.com/problem.php?pid=1103
#include <stdio.h>
#include <cstring>
#include <cmath>
static int a,b,c,symbol,left;
void read_equalor(char line[]){
int len = (int) strlen(line);
int i = 0,temp=0;
while(i<len){
if('0'<=line[i]&& line[i] <='9' ){
temp *=10;
temp += line[i] - '0';
i++;
}else if((line[i] == 'x' || line[i] == 'X' )
&& (i+1<len && line[i+1] == '^')) {
if(temp != 0) a = a + symbol * left * temp;
else a = a + symbol * left * 1;
temp = 0;
symbol = 1;
i = i + 3;
}else if(line[i] == 'x' || line[i] == 'X' ){
if(temp != 0) b = b + symbol * left * temp;
else b = b + symbol * left * 1;
temp = 0;
symbol = 1;
i++;
}else if (line[i] == '+'){
if(temp != 0) c = c + symbol * left * temp;
symbol = 1;
temp = 0;
i++;
}else if(line[i] == '-'){
if(temp != 0) c = c + symbol * left * temp;
symbol = -1;
temp = 0;
i++;
}else if(line[i] == '=') {
if(temp != 0) c = c + symbol * left * temp;
symbol = 1;
left = -1;
temp = 0;
i++;
}else {
i++;
}
}
if(temp != 0) c = c + symbol * left * temp;
}
int main(){
//freopen("in/1103.in","r",stdin);
char line[200];
while(gets(line) !=NULL){
symbol = 1,left = 1;
a = b = c = 0;
read_equalor(line);
//printf("%d %d %d\n",a,b,c);
double r1,r2,delta;
delta = b * b - 4 * a * c;
if(delta <-1e-5) printf("No Solution\n");
else{
r1 = (-b-sqrt(delta))/(2*a);
r2 = (-b+sqrt(delta))/(2*a);
printf("%.2lf %.2lf\n",a >0 ? r1: r2,a >0? r2:r1);
}
}
}
#include <stdio.h>
#include <cstring>
#include <cmath>
static int a,b,c,symbol,left;
void read_equalor(char line[]){
int len = (int) strlen(line);
int i = 0,temp=0;
while(i<len){
if('0'<=line[i]&& line[i] <='9' ){
temp *=10;
temp += line[i] - '0';
i++;
}else if((line[i] == 'x' || line[i] == 'X' )
&& (i+1<len && line[i+1] == '^')) {
if(temp != 0) a = a + symbol * left * temp;
else a = a + symbol * left * 1;
temp = 0;
symbol = 1;
i = i + 3;
}else if(line[i] == 'x' || line[i] == 'X' ){
if(temp != 0) b = b + symbol * left * temp;
else b = b + symbol * left * 1;
temp = 0;
symbol = 1;
i++;
}else if (line[i] == '+'){
if(temp != 0) c = c + symbol * left * temp;
symbol = 1;
temp = 0;
i++;
}else if(line[i] == '-'){
if(temp != 0) c = c + symbol * left * temp;
symbol = -1;
temp = 0;
i++;
}else if(line[i] == '=') {
if(temp != 0) c = c + symbol * left * temp;
symbol = 1;
left = -1;
temp = 0;
i++;
}else {
i++;
}
}
if(temp != 0) c = c + symbol * left * temp;
}
int main(){
//freopen("in/1103.in","r",stdin);
char line[200];
while(gets(line) !=NULL){
symbol = 1,left = 1;
a = b = c = 0;
read_equalor(line);
//printf("%d %d %d\n",a,b,c);
double r1,r2,delta;
delta = b * b - 4 * a * c;
if(delta <-1e-5) printf("No Solution\n");
else{
r1 = (-b-sqrt(delta))/(2*a);
r2 = (-b+sqrt(delta))/(2*a);
printf("%.2lf %.2lf\n",a >0 ? r1: r2,a >0? r2:r1);
}
}
}
相关文章推荐
- 九度OJ 1103:二次方程计算器 (解方程)
- 九度OJ-1103:二次方程计算器
- 九度 Online Judge 算法 刷题 题目1103:二次方程计算器
- 九度-题目1103 二次方程计算器
- 九度OJ 题目1063:整数和
- 九度OJ 题目1022:游船出租
- 题目1103:二次方程计算器(字符串操作以及基础数学知识)
- 九度OJ 题目1134:密码翻译
- 九度OJ 题目1130:日志排序
- 【学习笔记】〖九度OJ〗题目1156:谁是你的潜在朋友
- 二叉树之由前序遍历和中序遍历求后序遍历——九度OJ题目1078:二叉树遍历
- 九度 oj 题目1076:N的阶乘
- 九度 oj 题目1112:拦截导弹
- 九度 oj 题目1096:日期差值
- 九度OJ-题目1520:树的子结构
- 九度oj 题目1181:遍历链表
- 九度OJ-题目1350:二叉树的深度
- 九度OJ-题目1361:翻转单词顺序
- 【九度OJ】题目1185:特殊排序 解题报告
- 九度oj题目1002:Grading