C++ Primer 第五版 第七章编程练习节选(函数指针数组)

本文介绍了一个使用函数指针的C++程序,该程序实现了四种不同类型的平均值计算:调和平均数、几何平均数、算术平均数和平方平均数。通过控制台输入两个数字,程序将展示这些平均值之间的关系,并验证了它们的不等式关系。

问题描述:设计一个函数指针用于完成两个数字(x, y)的"平均值"计算,并验证:调和平均数<=几何平均数<=算术平均数<=平方平均数,当且仅当x = y 是等号成立。

要求:1,(x, y)可从控制台连续输入;

           2,函数指针原型 double calculate(double x, double y, double (*pf)(double x, double y));

           3, 函数值初始化 double (*pf[4])(double x, double y).

代码实现:

#include<iostream>
#include<cmath>

using namespace std;

const int Arsize = 4;

double Hn(double x, double y);
double Gn(double x, double y);
double An(double x, double y);
double Qn(double x, double y);

double calculate(double x, double y, double(*pf)(double x, double y));

int main()
{
	double x, y;
	
	double(*pf[Arsize])(double x,double y);
	pf[0] = Hn;
	pf[1] = Gn;
	pf[2] = An;
	pf[3] = Qn;
	cout << "Enter two munbers(x, y) : ";
	while (cin >> x >> y)
	{
		cout << "The Hornmic mean of x and y is : " << (*pf[0])(x, y) << endl;
		cout << "The Geometic mean of x and y is : " << (*pf[1])(x, y) << endl;
		cout << "The Arithmetic mean of x and y is : " << (*pf[2])(x, y) << endl;
		cout << "The Quadratic mean of x and y is : " << (*pf[3])(x, y) << endl;
		cout << "Enter the next two numbers (Q or q to quit): ";
	}
	return 0;
}

double calculate(double x, double y, double(*pf)(double x, double y))
{
	return (*pf)(x, y);
}

double Hn(double x, double y)
{
	return 2 * x*y / (x + y);
}

double Gn(double x, double y)
{
	return sqrt(x*y);
}

double An(double x, double y)
{
	return (x + y) / 2;
}

double Qn(double x, double y)
{
	return sqrt((x*x + y * y) / 2);
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值