编写一个程序,设计一个类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;
}