1103.二次方程计算器

题目描述:

设计一个二次方程计算器

输入:

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

输出:

每个案例输出两个实数(由小到大输出,中间由空格隔开),保留两位小数;如果无解,则输出“No Solution”。

样例输入:
x^2+x=3x+4
样例输出:
-1.24 3.24
#include<iostream>
#include<cstring>
#include<cmath>
#include<iomanip>
using namespace std;

void operate(string str,int &a,int &b,int &c){
    for(int i=0;i<str.length();i++){
        if(str[i]==‘+‘) continue;
        else if(str[i]==‘-‘){
        } else if(str[i]==‘x‘){
            if(i+1<str.length()&&str[i+1]==‘^‘){
                if(i-1>=0&&str[i-1]==‘-‘)
                a=a-1;
                else a+=1;
                i+=3;
            }
            else {
                if(i-1>=0 &&str[i-1]==‘-‘)
                b--;
                else b++;
                i++;
            }
        }
        else {
            int temp=0;
            int j=i;
            while(isdigit(str[i])){
                temp=temp*10+str[i]-‘0‘;
                i++;
            }
            if(j-1>=0&&str[j-1]==‘-‘)
            temp=0-temp;
            if(i<str.length()&&str[i]==‘x‘){
                if(i+1<str.length()&&str[i+1]==‘^‘){
                    a+=temp;
                    i+=3;
                }
                else {
                    b+=temp;
                    i++;
                }
            }
            else c+=temp;
        }
    }
}

int main(){
    string str;
    while(cin>>str){
        int j=0;
        for(int i=0;i<str.length();i++){
            if(str[i]==‘=‘)
            j=i;
        }
        string strleft,strright;
        strleft=str.substr(0,j);
        strright=str.substr(j+1);
        int a1=0,b1=0,c1=0;
        int a2=0,b2=0,c2=0;
        operate(strleft,a1,b1,c1);
        operate(strright,a2,b2,c2);
        int a=a1-a2;
        int b=b1-b2;
        int c=c1-c2;
        int temp=b*b-4*a*c;
        if(temp<0) cout<<"No Solution"<<endl;
        else {
            double x1,x2;
            x1=(double)(0-b+sqrt(temp))/(2*a);
            x2=(double)(0-b-sqrt(temp))/(2*a);
            if(x1<x2)
            cout<<fixed<<setprecision(2)<<x1<<" "<<x2<<endl;
            else
            cout<<fixed<<setprecision(2)<<x2<<" "<<x1<<endl;
        }
    }
    return 0;
}

原文地址:https://www.cnblogs.com/bernieloveslife/p/9736488.html

时间: 2024-10-15 00:31:55

1103.二次方程计算器的相关文章

九度[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; 1

九度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

上交大 2011 二次方程计算器

题目:输入关于x的二次方程表达式(系数为整数),输出两个解(由小到大输出,保留两位小数);如果无解,则输出"No Solution". 思路:先确定等号位置,分成左右两个字符串,从中分别提取系数,再综合.然后求解.提取系数的过程如图: 过程:介绍两个函数:atoi()函数可以识别"+""-"号,并正确转化成int. string str="-2980"; string s="+12"; cout<&l

结对项目-增强型科学计算器

题目:增强型计算器   1. 题目简介:       项目采用结对编程方式编写,完成一个图形界面的计算器,可以在标准计算器和科学计算器之间切换,标准计算器的基本功能有:加.减.乘.除基本算术运算:科学计算器的基本功能有:三角函数.进制转换.对数.阶乘:在普通科学计算器基础上新增加:求解一元二次方程,求解勾股定理. 2.基本功能与要求: 1).标准计算器:加.减.乘.除.求平方根: 2).科学计算器:进制转换.求解三角函数.对数运算.阶乘: 3).一元二次方程:求一元二次方程的解: 4).勾股定理

c#基础 1,100以内的与7相关的数字;2,计算器,3,判断是不是一个正整数,4,判断体重

//输出语句   Console.ReadLine();           //输入语句    Console.WriteLine();            /// 给函数加注解:            /**/  //一段区域           // 数据类型            //  1,整型 int:            //  2,浮点型 double:            //  3,字符串型 string;            //  4,布尔型 bool (1)tr

【自动化__GUI自动化】__java__Windows应用程序识别__计算器

一.代码如下 package www.woniu.gui.one; import java.awt.AWTException; import java.awt.Robot; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.aw

bzoj2242: [SDOI2011]计算器.

2242: [SDOI2011]计算器 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 4353  Solved: 1679[Submit][Status][Discuss] Description 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数: 3.给定y,z,p,计算满足Y^x ≡ Z ( mod P)的最小非负整数. In

j2ee-JSP之简单计算器

来源韩顺平.j2ee视频实战教程jsp第1讲(下集) -------------------------------------------------------------------------------------------------------- 简单计算器,可以控制输入的数(仅第一个数)不能为空且不能为字符串 myCal.jsp代码 1 <!--这是计算器的界面 --> 2 <!-- 可以控制输入的数不能为空且不能为字符串 --> 3 <%@ page co

通过键盘接收数值和字符,实现计算器功能。

import java.util.Scanner; /** * @author 蓝色以太 * 通过键盘接收数值和字符,实现计算器功能. */ public class Calculator { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入第一个数值:"); double num1=sc.nextDouble(); System.out