HUFEOJ正在加载中...

1625: 方程求解器

金币值:1 定数:1 时间限制:1.000 s 内存限制:128 M
正确:1 提交:348 正确率:0.29% 命题人:
点赞量:0 收藏量:0 题目类型:程序 知识点: java-类和对象

题目描述

实现一个程序,能求解多种类型的方程(如一元一次方程、一元二次方程),且未来可以轻松扩展支持新类型方程(如二元一次方程),要求:
  1. 所有方程都能通过统一的接口被求解,调用者无需关心具体方程类型。
  2. 新增方程类型时,无需修改现有求解逻辑的核心代码。

UML如下:其中:

Equation是抽象类,show()方法显示方程,solve()方法解方程

LinearEquation类继承了Equation,表示一元一次方程形如ax+b=0,a、b为系数

QuadraticEquation类继承了Equation,表示一元二次方程形如ax^2+bx+c=0,a、b、c为系数

EquationService类为解方程业务类,solveEquation()方法用于求解不同形式的方程。

Main类中的主方法代码如下:

Scanner s=new Scanner(System.in); 

Equation equation

EquationService equationService

equation=new LinearEquation(s.nextDouble(),s.nextDouble());//一元一次方程

equationService=new EquationService(equation);

equationService.solveEquation(); 


equation=new QuadraticEquation(s.nextDouble(),s.nextDouble(),s.nextDouble());//一元二次方程

equationService=new EquationService(equation);

equationService.solveEquation();




输入格式

两行,测试数据保证每行的第一个数都不为0:

第一行为2个小数

第二行为3个小数

输出格式

四行:

第1行为一元一次方程的形式

第2行为根(2位小数)

第3行为一元二次方程的形式

第3行为根(2位小数),如果有两个根,用空格分开,先大后小;如果没有实根,显示"no roots"

输入样例1    复制

2.5 4
1 4 4

输出样例1    复制

2.5x+4.0=0
-1.60
1.0x^2+4.0x+4.0=0
-2.00

输入样例2    复制

7.1 10
3 4 5

输出样例2    复制

7.1x+10.0=0
-1.41
3.0x^2+4.0x+5.0=0
no roots