博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
牛客网——二次方程计算器
阅读量:5250 次
发布时间:2019-06-14

本文共 1418 字,大约阅读时间需要 4 分钟。

设计一个二次方程计算器

输入描述:

每个案例是关于x的一个二次方程表达式,为了简单,每个系数都是整数形式。

输出描述:

每个案例输出两个实数(由小到大输出,中间由空格隔开),保留两位小数;如果无解,则输出“No Solution”。
链接:https://www.nowcoder.com/questionTerminal/071f1acaada4477f94193f8c0b9054f4来源:牛客网#include
#include
#include
#include
#include
#include
using namespace std;int cba[3],epos;char str[100]; void Read(int &co,int &eo,int &i){ if(str[i]==0) {eo=-1; return ;} int flag=0; if(str[i]=='=') {++i;} if(str[i]=='-') {++i;++flag;} if(str[i]=='+') ++i; if(i>epos) ++flag; if(str[i]=='x'){ co=1; if(str[i+1]=='^'){i+=2; eo=str[i]-'0'; ++i;} else {i++; eo=1;} } else{ co=0; while(str[i]>='0'&&str[i]<='9') {co=co*10+str[i]-'0'; ++i;} if(str[i]=='x'){ if(str[i+1]=='^'){i+=2; eo=str[i]-'0';++i;} else {i++; eo=1;} } else {eo=0;++i;} } if(flag%2){ co=0-co; }}int main(){ while(scanf("%s",str)==1){ for(int i=0;;++i){ if(str[i]==0)break; if(str[i]=='=') {epos=i; break;} } int co,eo,i=0; memset(cba,0,sizeof(cba)); while(1){ Read(co,eo,i); if(eo==-1) break; cba[eo]+=co; } int a=cba[2],b=cba[1],c=cba[0]; // printf("a:%d,b:%d,c:%d\n",a,b,c); double delta=b*b-4*a*c; if(delta<0) printf("No Solution\n"); else { double x1,x2; x1=(0-b-sqrt(delta))/(2*a); x2=(0-b+sqrt(delta))/(2*a); if(x1>x2) swap(x1,x2); printf("%.2f %.2f\n",x1,x2); } } return 0;}

 

转载于:https://www.cnblogs.com/JAYPARK/p/10330281.html

你可能感兴趣的文章
283. Move Zeroes把零放在最后面
查看>>
Visual Studio Code 打开.py代码报Linter pylint is not installed解决办法
查看>>
Python 数据类型
查看>>
S5PV210根文件系统的制作(一)
查看>>
centos下同时启动多个tomcat
查看>>
slab分配器
查看>>
数据清洗
查看>>
【读书笔记】C#高级编程 第三章 对象和类型
查看>>
针对sl的ICSharpCode.SharpZipLib,只保留zip,gzip的流压缩、解压缩功能
查看>>
【转】代码中特殊的注释技术——TODO、FIXME和XXX的用处
查看>>
【SVM】libsvm-python
查看>>
C++循环单链表删除连续相邻重复值
查看>>
Jmeter接口压力测试,Java.net.BindException: Address already in use: connect
查看>>
ASP.NET使网页弹出窗口不再困难
查看>>
Leetcode Balanced Binary Tree
查看>>
Leetcode 92. Reverse Linked List II
查看>>
windown快速安装xgboost
查看>>
Linux上安装Libssh2
查看>>
九.python面向对象(双下方法内置方法)
查看>>
go:channel(未完)
查看>>