C++简单的应用方程类极其成员函数

学了很多了没有一个可以连起来的例子下面设计一个简单的一元二次方程的函数,以ax²+bx+c=0 的

1、设计方程类

2、设计成员函数

(1)设计构造函数

FindRoot::FindRoot(float x,float y,float z)
{
	a=x;
	b=y;
	c=z;
	d=b*b-4*a*c;
}
(2)设计成员函数

函数Find可以根据d大于、等于或小于零来决定求解方法

if(d>0){
	
} else if(d == 0){

}else{
	
}

二、编程实现

(1)设计一个工程名为equation的工程

(2)为工程设计一个头文件equation.h声明class FindRoot类并切包含需要的头文件

(3)为工程设计equation.cpp的文件,在这个文件中实现FindRoot的类。

(4)在equation.cpp的文件中包含头文件equation.h

(5)在Find.cpp文件中设计主函数对方程求解

三、主函数求解的思想如下

(1)首先使用接受的系数创建该类的一个对象为obj即 FindRoot obj(a,b,c);

(2)构造函数自动计算d的值

(3)对象obj调用成员函数Find求方程的根,然后将根存入相应的属性中,即obj.find();

(4)对象obj调用成员函数Display输出自己的跟即obj.Display();

下面是整个完整的程序代码

#ifndef EQUATION_
#define EQUATION_H
#include <iostream>
#include <cmath>
using namespace std;

class FindRoot{
	private :
		float a,b,c,d;
		double x1,x2;
	public :
		FindRoot(float a1,float b1,float c1);
		void Find();
		void Display();
};
#endif

#include "equation.h" 

//***********************
//*    实现FindRoot类 
//***********************

FindRoot::FindRoot(float a1,float b1,float c1){
	a=a1;
	b=b1;
	c=c1;
	d=b*b-4*a*c;
}

void FindRoot::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;
		return;
	}
}

void FindRoot::Display(){
	if(d>0){
	cout<<"X1="<<x1<<","<<"X2="<<x2<<endl; 
		return;
	}else if(d == 0){
		cout<<"X1="<<x1<<","<<"X2="<<x2<<endl; 
		return;
	}else{
		cout<<"X1="<<x1<<"+"<<x2<<endl; 
		cout<<"X1="<<x1<<"-"<<x2<<endl; 
		return;
	}
}


#include <iostream>
#include "equation.h" 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

void Read(float &a,float &b,float &c);
int main(int argc, char** argv) {
	float a,b,c;
	cout<<"这是一个求方程ax2+bx+c=0的根的程序"<<endl;
	for(;;){
		Read(a,b,c);
		if(a == 0){
			return 0;
		}
		FindRoot obj(a,b,c);
		obj.Find();
		obj.Display();
	} 
	return 0;
}

void Read(float &a,float &b,float &c){
	cout<<"请输入方程式系数a:";
	cin>>a;
	if(a == 0){
		return;
	} 
	cout<<"输入方程系数b:";
	cin>>b;
	cout<<"输入方程系数c:";
	cin>>c; 
}


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值