题目1103:二次方程计算器

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std;
double a,b,c;
int f;
char s[105];
void process(char *p){
int i,z,t=1;
double x,k=0;
i=0;
if(p[i]=='-'){t=-1;i++;}
for(z=0;i<strlen(p);i++)
if(p[i]=='x'){z=1;break;}
else k=k*10+p[i]-'0';
if(!z){
c+=f*t*k;}
else {if(!k)k=1;
if(i==strlen(p)-1){
b+=f*t*k;
}
else
a+=f*t*k;
}
}
main(){int i,j,l;
double x;
char str[105];
while(gets(s)){
f=1;
a=b=c=0.0;
l=strlen(s);
str[0]=s[0];
for(i=1,j=1;i<l;i++){
if(s[i]=='-'){
if(j==0){
str[j++]=s[i];
}
else {
str[j]='\0';
process(str);
j=0;
str[j++]=s[i];
}
}
else if(s[i]=='+'||s[i]=='='){
str[j]='\0';
process(str);
j=0;
if(s[i]=='=')f=-1;
}
else str[j++]=s[i];
}
str[j]='\0';
process(str);
x=b*b-4*a*c;
if(b*b-4*a*c<0)puts("No Solution");
else printf("%.2lf %.2lf\n",(-b-sqrt(x))/(2*a),(-b+sqrt(x))/(2*a));
}} 
/**************************************************************
    Problem: 1103
    User: cust123
    Language: C++
    Result: Accepted
    Time:20 ms
    Memory:1028 kb
****************************************************************/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值