九度[1103]二次方程计算器

 1 # include<iostream>
 2 # include<string>
 3 # include<iomanip>
 4 # include<cmath>
 5 using namespace std;
 6 int a=0,b=0,c=0;
 7 void getPar(string s,int flag)
 8 {
 9     if(s=="0") return ;
10     int l=s.size();
11     bool neg=true;
12     int i=0;
13     for(i=0;i<l;i++)
14     {
15         int sum=0;
16         if(s[i]==‘-‘) {neg=false;i++;}
17         else if(s[i]==‘+‘){ neg=true;i++;}
18         while(s[i]>=‘0‘ && s[i]<=‘9‘)
19         {
20             sum=sum*10+s[i]-‘0‘;
21             i++;
22         }
23         if(sum==0){ sum=1;}
24         if(!neg) sum=-1*sum;
25         if(i==l)
26         {
27             if(flag) c=c-sum;
28             else c=c+sum;
29         }
30         else if(s[i]==‘x‘)
31         {
32             if(i+1<l && s[i+1]==‘^‘)
33             {
34                 if(flag) a=a-sum;
35                 else a=a+sum;
36                 //a=a+flag?-1*sum:sum;
37                 i=i+2;
38             }
39             else {
40                 //b=b+flag? -1*sum:sum;
41                 if(flag) b=b-sum;
42                 else b=b+sum;
43             }
44         }
45     }
46 }
47 int main(){
48     string s;
49     while(cin>>s){
50         a=b=c=0;
51         int pos=s.find(‘=‘);
52         int l=s.size();
53         string s1=s.substr(0,pos);
54         string s2=s.substr(pos+1,l-1);
55         getPar(s1,0);
56         getPar(s2,1);
57         double dot=b*b-4*a*c;
58         //cout<<a<<" "<<b<<" "<<c<<endl;
59         if(dot<0) cout<<"No Solution"<<endl;
60         else
61         {
62             double b1=(-b-sqrt(dot))/(2.0*a);
63             double b2=(-b+sqrt(dot))/(2.0*a);
64             if(b1>b2)
65             {cout<<fixed<<setprecision(2)<<b2<<" "<<b1<<endl;}
66             else cout<<fixed<<setprecision(2)<<b1<<" "<<b2<<endl;
67         }
68     }
69     return 0;
70 }不知道错那了 标记一下
时间: 2024-08-05 02:40:35

九度[1103]二次方程计算器的相关文章

[JAVA][HDU 1237][九度 1019][简单计算器]

本来以为是一道很简单的stack题目,居然花了四五十分钟来解决,JAVA本身就有stack的应用优势,但还是花了自己很多时间.. 提供一些要点吧: 1.首先是来自九度的测试案例 1 + 2 5 4 + 2 * 5 - 7 / 11 3 0 + 5 1 - 2 * 3 * 4 + 5 * 6 1 * 2 * 3 + 5 + 6 - 7 * 8 + 9 / 10 0 + 0 * 0 1 + 5 * 0 0 + 5 0 2.输入0时结束,但是运算到0的时候不结束,这个应该很容易排除 3.输出之前再检查

1103.二次方程计算器

题目描述: 设计一个二次方程计算器 输入: 每个案例是关于x的一个二次方程表达式,为了简单,每个系数都是整数形式. 输出: 每个案例输出两个实数(由小到大输出,中间由空格隔开),保留两位小数;如果无解,则输出"No Solution". 样例输入: x^2+x=3x+4 样例输出: -1.24 3.24 #include<iostream> #include<cstring> #include<cmath> #include<iomanip&g

九度oj 题目1103:二次方程计算器

题目描述: 设计一个二次方程计算器 输入: 每个案例是关于x的一个二次方程表达式,为了简单,每个系数都是整数形式. 输出: 每个案例输出两个实数(由小到大输出,中间由空格隔开),保留两位小数;如果无解,则输出“No Solution”. 样例输入: x^2+x=3x+4 样例输出: -1.24 3.24 1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 #include <algorit

剑指OFFER之从上往下打印二叉树(九度OJ1523)

题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每个测试案例,输入的第一行一个整数n(1<=n<=1000, :n代表将要输入的二叉树元素的个数(节点从1开始编号).接下来一行有n个数字,代表第i个二叉树节点的元素的值.接下来有n行,每行有一个字母Ci.Ci='d'表示第i个节点有两子孩子,紧接着是左孩子编号和右孩子编号.Ci='l'表示第i个节点有一个左孩子,紧接着是左孩子的编号.Ci='r'表示第i个节点有一个右孩

剑指OFFER之调整数组顺序使奇数位于偶数前面找(九度OJ1516)

题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 输入: 每个输入文件包含一组测试案例.对于每个测试案例,第一行输入一个n,代表该数组中数字的个数.接下来的一行输入n个整数.代表数组中的n个数. 输出: 对应每个测试案例,输入一行n个数字,代表调整后的数组.注意,数字和数字之间用一个空格隔开,最后一个数字后面没有空格. 样例输入: 5 1 2 3 4 5 样例输

九度 1203

#include <cstdio> #include <iostream> using namespace std; #ifdef ONLINE_JUDGE #define FINPUT(file) 0 #define FOUTPUT(file) 0 #else #define FINPUT(file) freopen(file,"r",stdin) #define FOUTPUT(file) freopen(file,"w",stdout)

九度 1205

#include <cstdio> #include <iostream> using namespace std; #ifdef ONLINE_JUDGE #define FINPUT(file) 0 #define FOUTPUT(file) 0 #else #define FINPUT(file) freopen(file,"r",stdin) #define FOUTPUT(file) freopen(file,"w",stdout)

九度 1351 只出现一次的数

#include <cstdio> #include <iostream> using namespace std; #ifdef ONLINE_JUDGE #define FINPUT(file) 0 #define FOUTPUT(file) 0 #else #define FINPUT(file) freopen(file,"r",stdin) #define FOUTPUT(file) freopen(file,"w",stdout)

九度机试 题目1165:字符串匹配 2008年北京航空航天大学计算机研究生机试真题

题目1165:字符串匹配 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2497 解决:858 题目描述: 读入数据string[ ],然后读入一个短字符串.要求查找string[ ]中和短字符串的所有匹配,输出行号.匹配字符串.匹配时不区分大小写,并且可以有一个用中括号表示的模式匹配.如"aa[123]bb",就是说aa1bb.aa2bb.aa3bb都算匹配. 输入: 输入有多组数据. 每组数据第一行输入n(1<=n<=1000),从第二行开始输入n个字符串(