题目:求解一元二次方程: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++求解一元二次方程相关推荐

  1. Python案例:四种方式编程求解一元二次方程

    文章目录 一.一元二方程求解公式 二.编程求解一元二次方程 1.直接求解一元二次方程 2.编写一元二次方程求解函数 3.编写一元二次方程类求解 (1)求实数解 (2)求复数解 4.利用sympy的so ...

  2. c++ 求解一元二次方程 全面考虑实根和虚根的情况

    题目 求解一元二次方程. 一元二次方程的定义为: ax2+bx+c=0 (1)如果b2 -4ac>0,方程有两个不同的实根,分别是: (2)如果b2 -4ac< 0,方程没有实根,但有虚根 ...

  3. Python求解一元二次方程问题【简单易懂,注释超全,代码可以直接运行】

    Python求解一元二次方程问题[简单易懂,注释超全,代码可以直接运行] 业务需求: 解一元二次方程是初中数学中的基本知识,- -般来讲解法有公式法.因式分解法等.可以根据自己 的理解,写- -段求解 ...

  4. matlab解一元二次方程 函数,MATLAB函数文件(Function)和求解一元二次方程 来研究下吧...

    MATLAB函数文件是指可以定义输入参数和返回输出变量的M文件.本文介绍通过建立函数文件(Function)来求解一元二次方程的方法. 工具/材料 MATLAB Function 操作方法 01 第一 ...

  5. python解一元二次方程步骤-Python实现求解一元二次方程的方法示例

    Python实现求解一元二次方程的方法示例 本文实例讲述了Python实现求解一元二次方程的方法.分享给大家供大家参考,具体如下: 1. 引入math包 2. 定义返回的对象 3. 判断b*b-4ac ...

  6. 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 ...

  7. 一元二次方程python脚本_Python实现求解一元二次方程的方法示例

    本文实例讲述了Python实现求解一元二次方程的方法.分享给大家供大家参考,具体如下: 1. 引入math包 2. 定义返回的对象 3. 判断b*b-4ac的大小 具体计算代码如下: # -*- co ...

  8. 【中学】求解一元二次方程

    [中学]求解一元二次方程 初中的小明已经开始学习求解一元二次方程了,下面让我们来教计算机如何求解.输入 a,b,c ,求一元二次方程 ax²+bx+c=0 的根. 包括复数根 输入: 假设 a,b,c ...

  9. C语言(求解一元二次方程的根)

    以下程序均在Visual C++6.0中运行成功 例:求方程2x^2-3x-6=0的根 #include <stdio.h> #include <math.h> void ma ...

最新文章

  1. 大话风险投资的风险-不只是独角戏(上)
  2. html将图片做成标签,HTML(图片标签)
  3. Activiti 6.x【11】IntermediateEvent
  4. python获取时间周数_【手把手教你】Python量化策略风险指标
  5. linux之less 命令
  6. 测试RESTful服务的客户端
  7. Watch online
  8. linux分区表导出与恢复,Linux下硬盘数据恢复与分区表恢复
  9. Hive导数据到本地文件
  10. 转角遇上Volcano,看HPC如何应用在气象行业
  11. php与ipa接口登录验证失败,thinkPHP5.0开发微信小程序登录接口signature验证失败
  12. 06. Django基础:GET请求和POST请求
  13. 【2019杭电多校第二场1005 = HDU6595】Everything Is Generated In Equal Probability(期望-递推)
  14. 中国无线充电行业发展规模与投资可行性咨询报告2022-2027年版
  15. 扒一扒那些叫欧拉的定理们(五)——平面几何欧拉定理的证明
  16. python玩转我的世界_PYTHON玩转我的世界——批量生成铁傀儡
  17. 最新有效的微视频号视频下载丨vx视频号视频怎么免费下载?
  18. 使用print时出错 SyntaxError: Missing parentheses in call to ‘print‘ Did you mean print(““)
  19. java心得!--很好的java学习历程(转自张国宝)
  20. 微信小程序基础之input输入框控件

热门文章

  1. 歌尔首次闪耀CES Asia,展示全面创新力量
  2. java红宝石是哪本_以月/年红宝石显示帖子
  3. 开启VScode中最简单的内部浏览器 - 可以访问外网 - Browser Preview
  4. javaScript实现通过鼠标滑轮改变元素大小
  5. 学会这些方法,扩展磁盘分区还不是轻轻松松?
  6. android 拦截鼠标按键
  7. 移动网页支付(微信H5支付和支付宝网页支付)
  8. 美的集团的命,智能家居来续?
  9. db2 日期英式写法_英式与美式日期写法 基数与序数词辨析
  10. 【Python笔记】pyqt5进度条-多线程图像分块处理防止窗体卡顿