友元函数练习:1.给出三边求三角形面积 2.三个银行存款总和问题

编写一个程序,设计一个类Trig,给定三角形的三条边长x, y, z,包含一个友元函数计算两个三角形面积之和。

    #include<iostream>
    #include<cmath>
    using namespace std;
    class Trig {
    private:
    	double x, y, z;
    	double area()                           //求三角形面积  
    	{
    		double d = (x + y + z) / 2;
    		return sqrt(d*(d - x)*(d - y)*(d - z));
    	}
    public:
    	Trig(int i, int j, int k) { x = i; y = j; z = k; }
    	int istrig()                            //判断是否构成三角形  
    	{
    		if ((x + y)>z && (x + z)>y && (y + z)>x)
    			return 1;
    		else
    			return 0;
    	}
    
    	friend double twoarea(Trig&t1, Trig&t2);   //友元函数声明  
    };
    double twoarea(Trig &t1, Trig &t2)         //友元函数实现  
    {
    	return t1.area() + t2.area();
    }
    void main()
    {
    	Trig t1(6, 5, 8), t2(10, 6, 12);
    	if (t1.istrig() && t2.istrig())
    		cout << "两三角形面积之和:" << twoarea(t1, t2) << endl;
    	else
    		cout << "三边不能构成三角形!" << endl;
    }

设计一个程序,其中有三个类,CBank,BBank,GBank. 分别为中国银行类,工商银行类,农业银行类。每个类都包含一个私有数据balance,用于存放储户在该行的存款数,另有一个友元函数total,用于计算储户在这3家银行中的总存款数。

    #include<iostream>
    using namespace std;
    class BBank;
    class GBank;                       //Total同时是三个类的友元函数,必须在创建类前先声明所有类 
    class CBank;
    
    class CBank{
    private:
    	double balance;
    
    public:
    	CBank(double i=0)
    	{
    		balance = i;
    	}
    
    	friend void total(CBank &c, BBank &b, GBank &g);
    };
    
    class BBank { 
    private:
    	double balance;
    public:
    	BBank(double i=0)
    	{
    		balance = i;
    	}
    
    	friend void total(CBank &c, BBank &b, GBank &g);
    };
    
    class GBank {
    private:
    	double balance;
    
    public:
    	GBank(double i)
    	{
    		balance = i;
    	}
    	friend void total(CBank &c, BBank &b, GBank &g);
    };
    
    void total(CBank & c, BBank & b, GBank & g)
    {
    	double sum = 0;
    	sum = c.balance + b.balance + g.balance;
    	cout << "总存款数:" << sum << "元" << endl;
    }
    
    
    int main()
    {
    	CBank c(777.7);
    	BBank b(443.1);
    	GBank g(4396.7);
    	total(c, b, g);
    	return 0;
    }
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个可行的程序设计: ```cpp #include <iostream> using namespace std; // 定义银行类CBank class CBank { private: double balance; // 存款数 public: CBank(double bal = 0) { // 构造函数 balance = bal; } friend double total(CBank b1, CBank b2, CBank b3); // 友元函数 }; // 定义银行类BBank class BBank { private: double balance; // 存款数 public: BBank(double bal = 0) { // 构造函数 balance = bal; } friend double total(CBank b1, CBank b2, CBank b3); // 友元函数 }; // 定义银行类GBank class GBank { private: double balance; // 存款数 public: GBank(double bal = 0) { // 构造函数 balance = bal; } friend double total(CBank b1, CBank b2, CBank b3); // 友元函数 }; // 友元函数total,用于计算储户在这3家银行中的总存款数 double total(CBank b1, CBank b2, CBank b3) { double sum = b1.balance + b2.balance + b3.balance; return sum; } // 主函数 int main() { // 分别创建3个银行类的对象 CBank c(1000); BBank b(2000); GBank g(3000); // 输出3家银行中储户的总存款数 cout << "Total balance: " << total(c, b, g) << endl; return 0; } ``` 在上面的程序中,我们创建了3个类CBank、BBank和GBank,分别代表中国银行、工商银行和农业银行。每个类都包含一个私有数据成员balance,用于存放储户在该行的存款数。我们还定义了一个友元函数total,用于计算储户在这3家银行中的总存款数。在主函数中,我们创建了3个银行类的对象,并输出了总存款数。 需要注意的是,为了让友元函数total能够访问到3个银行类的私有数据成员balance,我们在3个类中都声明了该函数为友元函数。这样,total函数就可以访问到这3个类的私有数据成员,从而计算出储户在这3家银行中的总存款数。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值