主程序:
#include<iostream>
#include"1.1 hanshu.h"
using namespace std;
/*
设计一个类,该类可以表示一个一元二次函数。
1.该类数据成员包括:函数的参数、变量的取值区间、函数在该区间内的最大值和最小值。
2.该类成员函数包括:求最大值、求最小值。
3.编写一个主程序,能够根据所设计的类定义一元二次函数对象,调用成员函数,分别实现最大值和最小值的计算。
*/
int main()
{
double a, b, c, m, n;
cin >> a >> b >> c >> m >> n;
hanshu s(a, b, c);
s.maximum(m, n);
s.show();
return 0;
}
头文件:
#pragma once
#include<iostream>
using namespace std;
class hanshu
{
public:
hanshu(double aa, double bb, double cc);//构造函数
void maximum(double m, double n);//求最大值、求最小值的函数
void show();//展示函数
private:
double a, b, c;//函数的参数
double m, n;//函数的定义域(取值区间)
double max, min;//最大值与最小值
};
类的内容:
#include"1.1 hanshu.h"
hanshu::hanshu(double aa, double bb, double cc) :a(aa), b(bb), c(cc) {}//构造函数的实现
void hanshu::show()//展示函数的实现
{
cout << "最大值为:" << max << endl;
cout << "最小值为:" << min << endl;
}
void hanshu::maximum(double m, double n)//求最大值、求最小值函数的实现
{
double e = (-b) / (2 * a);
double ym = a * m * m + b * m + c;
double yn = a * n * n + b * n + c;
double h = (-b * b) / (4 * a) + c;
if (a > 0)
{
if (e >= m && e <= n)
{
min = h;
if (ym > yn)
{
max = ym;
}
else
{
max = yn;
}
}
else if (e >= n)
{
max = ym;
min = yn;
}
else if (e <= m)
{
max = yn;
min = ym;
}
}
else if (a < 0)
{
if (e >= m && e <= n)
{
max = h;
if (ym > yn)
{
min = yn;
}
else
{
min = ym;
}
}
else if (e >= n)
{
max = yn;
min = ym;
}
else if (e <= m)
{
max = ym;
min = yn;
}
}
else
{
if (b > 0)
{
max = yn;
min = ym;
}
else if (b < 0)
{
max = ym;
min = yn;
}
else
{
max = c;
min = c;
}
}
}
实验案例:
要点讲解:
1.以上代码使用的是类的分文件编写,运用了构造函数,使得在定义对象的时候可以附上对应的值。
2.一元二次函数的最值判断需要5个参数,分别是a,b,c,m,n,其中abc是定义一元二次函数的参数,m和n分别是取值范围的左右区间。
3.对此代码中所有变量的属性,建议统一使用double或float类型,原因在于即使输入的参数全为整数,结果的数字也有小数的可能,为了计算准确,建议使用浮点型进行编写。