利用C++求解一元二次方程
题目:求解一元二次方程:ax²+bx+c=0 的解,其中a=1,b=-3,c=2.
分析:大家都知道一元二次方程的解有三种情况,即考虑Δ=(b²-4ac)的算术平方根,当Δ>0时,方程有两个不相等的实根x1=(-b+sqrt(d))/(2a);x2=(-b-sqrt(d))/(2a);当Δ=0时,方程有两个相等的实根x1=x2=(-b)/(2a);当Δ<0时,方程有两个不相等的虚根x1=(-b)/(2a),x2=sqrt(-d)/(2a)。
以上是我们解数学题的思路,可是如果我们用C++来解决一元二次方程组求解的问题该怎么处理呢?首先先要建立一个FindRoot类,并声明a,b,c,d四个float类型的数据成员,d代表Δ,方程的根x1,x2均声明成double类型,为了简单方便同时声明构造函数,程序的主函数进行参数准备并且进行求解和输出,下面是我做的FindRoot类UML图和obj对象UML图:
下面就介绍一下此程序在Visual C++ 6.0中的实现步骤和结果:
步骤:
1.建立一个名为equation的工程,即在project菜单栏中选择“Win32 Console Application“选项。
2.为工程添加一个头文件equation.h,声明FindRoot类并包含需要的头文件。
具体代码:
#if !defined(EQUATION_H)
#define EQUATION_H
#include<iostream>
#include<cmath>
using namespace std;
//声明FindRoot类
class FindRoot
{
private:
float a,b,c,d;
double x1,x2;
public:
FindRoot(float x,float y, float z);
void Find();
void Display();
};
#endif
3.为工程添加equation.cpp文件,在这个文件中实现FindRoot。
具体代码:
#include "equation.h"
//实现FindRoot类
FindRoot::FindRoot(float x,float y,float z) //构造函数
{
a=x;
b=y;
c=z;
d=b*b-4*a*c;
}
void FindRoot::Find() //实现成员函数Find
{
if(d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
return;
}
else if(d==0)
{
x1=x2=(-b)/(2*a);
return;
}
else
{
x1=(-b)/(2*a);
x2=sqrt(-d)/(2*a);
}
}
void FindRoot::Display() //实现成员函数Display
{
if(d>0)
{
cout<<"x1="<<x1<<"\nx2="<<x2<<endl;
return;
}
else if(d==0)
{
cout<<"x1=x2="<<x1<<endl;
return;
}
else
{
cout<<"x1="<<x1<<"+"<<x2<<"i"<<endl;
cout<<"x2="<<x1<<"-"<<x2<<"i"<<endl;
}
}
4.为工程添加Find.cpp文件,并在文件中设计主函数对方程求解。
具体代码:
#include "equation.h"
void Read(float&,float&,float&); //参数使用对象引用方式
void main()
{
float a,b,c;
cout<<"这是一个求方程ax2+bx+c=0的根的程序。"<<endl;
for(;;) //循环求解
{
Read(a,b,c); //准备系数
if(a==0) return; //根据输入系数a决定是否结束for循环
FindRoot obj(a,b,c); //建立对象obj
obj.Find(); //求解
obj.Display(); //输出计算结果
}
}
void Read(float& a,float& b,float& c) //准备系数
{
cout<<"输入方程系数a:";
cin>>a;
if(a==0) //系数为零则退出Read函数
{
getchar(); //消除回车影响
return;
};
cout<<"输入方程系数b:";
cin>>b;
cout<<"输入方程系数c:";
cin>>c;
}
5.编译并运行程序。
运行结果:
结果和计算的结果一样,有了这样的一个程序,我们以后解数学的一元二次方程就不愁了,只要把方程化成一般式,然后在程序中输入相应参数就可快速得到答案了,虽然可以快速得到答案,但是还是不鼓励一直用程序解方程,因为学习贵在理解解题的思路和解题过程,只有这样才能有所感所悟,也会有所提高。
当然这个程序设计的不是特别的好,但是为了具体设计项目的思路,所以做的复杂一点,贵在理解,谢谢,希望可以帮到你。顺便祝你有个好心情。
利用C++求解一元二次方程相关推荐
- Python案例:四种方式编程求解一元二次方程
文章目录 一.一元二方程求解公式 二.编程求解一元二次方程 1.直接求解一元二次方程 2.编写一元二次方程求解函数 3.编写一元二次方程类求解 (1)求实数解 (2)求复数解 4.利用sympy的so ...
- c++ 求解一元二次方程 全面考虑实根和虚根的情况
题目 求解一元二次方程. 一元二次方程的定义为: ax2+bx+c=0 (1)如果b2 -4ac>0,方程有两个不同的实根,分别是: (2)如果b2 -4ac< 0,方程没有实根,但有虚根 ...
- Python求解一元二次方程问题【简单易懂,注释超全,代码可以直接运行】
Python求解一元二次方程问题[简单易懂,注释超全,代码可以直接运行] 业务需求: 解一元二次方程是初中数学中的基本知识,- -般来讲解法有公式法.因式分解法等.可以根据自己 的理解,写- -段求解 ...
- matlab解一元二次方程 函数,MATLAB函数文件(Function)和求解一元二次方程 来研究下吧...
MATLAB函数文件是指可以定义输入参数和返回输出变量的M文件.本文介绍通过建立函数文件(Function)来求解一元二次方程的方法. 工具/材料 MATLAB Function 操作方法 01 第一 ...
- python解一元二次方程步骤-Python实现求解一元二次方程的方法示例
Python实现求解一元二次方程的方法示例 本文实例讲述了Python实现求解一元二次方程的方法.分享给大家供大家参考,具体如下: 1. 引入math包 2. 定义返回的对象 3. 判断b*b-4ac ...
- java 输入 方程,用java 编写一程序,求解一元二次方程:aX2+bX+c=0.参数a、b及c从命令行做参数输入 java...
题目: 用java 编写一程序,求解一元二次方程:aX2+bX+c=0.参数a.b及c从命令行做参数输入 java 答案参考: 以下程序在jdk5.0测试通过 import java.util.Sca ...
- 一元二次方程python脚本_Python实现求解一元二次方程的方法示例
本文实例讲述了Python实现求解一元二次方程的方法.分享给大家供大家参考,具体如下: 1. 引入math包 2. 定义返回的对象 3. 判断b*b-4ac的大小 具体计算代码如下: # -*- co ...
- 【中学】求解一元二次方程
[中学]求解一元二次方程 初中的小明已经开始学习求解一元二次方程了,下面让我们来教计算机如何求解.输入 a,b,c ,求一元二次方程 ax²+bx+c=0 的根. 包括复数根 输入: 假设 a,b,c ...
- C语言(求解一元二次方程的根)
以下程序均在Visual C++6.0中运行成功 例:求方程2x^2-3x-6=0的根 #include <stdio.h> #include <math.h> void ma ...
最新文章
- 大话风险投资的风险-不只是独角戏(上)
- html将图片做成标签,HTML(图片标签)
- Activiti 6.x【11】IntermediateEvent
- python获取时间周数_【手把手教你】Python量化策略风险指标
- linux之less 命令
- 测试RESTful服务的客户端
- Watch online
- linux分区表导出与恢复,Linux下硬盘数据恢复与分区表恢复
- Hive导数据到本地文件
- 转角遇上Volcano,看HPC如何应用在气象行业
- php与ipa接口登录验证失败,thinkPHP5.0开发微信小程序登录接口signature验证失败
- 06. Django基础:GET请求和POST请求
- 【2019杭电多校第二场1005 = HDU6595】Everything Is Generated In Equal Probability(期望-递推)
- 中国无线充电行业发展规模与投资可行性咨询报告2022-2027年版
- 扒一扒那些叫欧拉的定理们(五)——平面几何欧拉定理的证明
- python玩转我的世界_PYTHON玩转我的世界——批量生成铁傀儡
- 最新有效的微视频号视频下载丨vx视频号视频怎么免费下载?
- 使用print时出错 SyntaxError: Missing parentheses in call to ‘print‘ Did you mean print(““)
- java心得!--很好的java学习历程(转自张国宝)
- 微信小程序基础之input输入框控件