C++项目参考解答:三角形类

【项目 - 三角形类雏形】

(1)下面设计一个三角形类,请给出各成员函数的定义

class Triangle
{
public:
    void setABC(double x, double y, double z);//置三边的值,注意要能成三角形
    double perimeter();//计算三角形的周长
    double area();//计算并返回三角形的面积
private:
    double a,b,c; //三边为私有成员数据
};
int main()
{
    Triangle tri1;  //定义三角形类的一个实例(对象)
    tri1.setABC(4,5,6); //为三边置初值
    cout<<"三角形的周长为:"<< tri1.perimeter()<<'\t'<<"面积为:"<< tri1.area()<<endl;
    return 0;
}
//请在下面定义Triangle类中的各个成员函数

[参考解答]

#include<iostream>
#include<cstdlib>
#include<Cmath>
using namespace std;
class Triangle
{
public:
    void setABC(double x, double y, double z);//置三边的值,注意要能成三角形
    double perimeter();//计算三角形的周长
    double area();//计算并返回三角形的面积
private:
    double a,b,c; //三边为私有成员数据
};
int main()
{
    Triangle tri1;  //定义三角形类的一个实例(对象)
    tri1.setABC(4,5,6); //为三边置初值
    cout<<"三角形的周长为:"<< tri1.perimeter()<<'\t'<<"面积为:"<< tri1.area()<<endl;
    return 0;
}
//请在下面定义Triangle类中的各个成员函数
void Triangle::setABC(double x, double y, double z)
{
    if(x+y>z&&x+z>y&&y+z>x)
    {
        a=x;
        b=y;
        c=z;
    }
    else
    {
        cout<<"不能构成三角形"<<endl;
        exit(0);  //直接退出程序的执行
    }
}

double Triangle::perimeter(void)
{
    return a+b+c;
}

double Triangle::area(void)
{
    double p=(a+b+c)/2;
    return sqrt(p*(p-a)*(p-b)*(p-c));
}

(2)在上面程序的基础上,重新定义Triangle类,其中逻辑特别简单的set和get成员函数,要处理为内联成员函数,直接在类内定义。

int main()
{
    Triangle tri1;  //定义三角形类的一个实例(对象)
    double x,y,z;
    cout<<"请输入三角形的三边:";
    cin>>x>>y>>z;
    tri1.setA(x);
    tri1.setB(y);
    tri1.setC(z);   //为三边置初值
    if(tri1.isTriangle())  //isTriangle()返回值为布尔型,用于判断给出的三边是否能构成一个三角形
    {
        cout<<"三条边为:"<<tri1.getA()<<','<<tri1.getB()<<','<<tri1.getC()<<endl;
        cout<<"三角形的周长为:"<< tri1.perimeter()<<'\t'<<"面积为:"<< tri1.area()<<endl;
    }
    else
        cout<<"不能构成三角形"<<endl;
    return 0;
}  

[参考解答]

#include<iostream>
#include<Cmath>
using namespace std;
class Triangle
{
public:
    void setA(double x)
    {
        a=x;
    };
    void setB(double y)
    {
        b=y;
    };
    void setC(double z)
    {
        c=z;
    };

    double getA()
    {
        return a;
    }
    double getB()
    {
        return b;
    }
    double getC()
    {
        return c;
    }
    bool isTriangle();//判断是否构成三角形
    double perimeter(void);//计算三角形的周长
    double area(void);//计算并返回三角形的面积
private:
    double a,b,c; //三边为私有成员数据
};
int main()
{
    Triangle tri1;  //定义三角形类的一个实例(对象)
    double x,y,z;
    cout<<"请输入三角形的三边:";
    cin>>x>>y>>z;
    tri1.setA(x);
    tri1.setB(y);
    tri1.setC(z);   //为三边置初值
    if(tri1.isTriangle())
    {
        cout<<"三条边为:"<<tri1.getA()<<','<<tri1.getB()<<','<<tri1.getC()<<endl;
        cout<<"三角形的周长为:"<< tri1.perimeter()<<'\t'<<"面积为:"<< tri1.area()<<endl;
    }
    else
        cout<<"不能构成三角形"<<endl;
    return 0;
}
//请在下面定义Triangle类中的各个成员函数
bool Triangle::isTriangle()
{
    return (a+b>c&&a+c>b&&b+c>a);
}

double Triangle::perimeter()
{
    return a+b+c;
}

double Triangle::area()
{
    double p=(a+b+c)/2;
    return sqrt(p*(p-a)*(p-b)*(p-c));
}

(3)设计三角形类带参数的构造函数,即Triangle(double x, double y, double z),三边长在调用时由实参直接给出,使对象在定义时能够进行初始化。需要的测试函数是:

int main()
{
    Triangle Tri(7,8,9);    //定义三角形类的一个实例(对象)
    Tri.showMessage(); //定义一个能显示三角形信息的成员函数
    return 0;
}

[参考解答]

#include<iostream>
#include<Cmath>
using namespace std;
class Triangle
{
public:
    Triangle(double x, double y, double z)//(1)使用带参数构造函数
    {
        a=x;
        b=y;
        c=z;
    }
    double perimeter();//计算三角形的周长
    double area();//计算并返回三角形的面积
    void showMessage();
private:
    double a,b,c; //三边为私有成员数据
};

double Triangle::perimeter()
{
    return (a + b + c);
}

double Triangle::area()
{
    double s = (a + b + c) / 2;
    return sqrt(s * (s - a) * (s - b) * (s - c));
}

void Triangle::showMessage()
{
    cout<<"三角形的三边长分别为:"<<a<<' '<<b<<' '<<c<<endl;
    cout<<"该三角形的周长为"<<perimeter()<<",面积为"<<area()<<endl<<endl;
}

int main()
{
    Triangle Tri(7,8,9);    //定义三角形类的一个实例(对象)
    Tri.showMessage();
    return 0;
}

(4)使用有默认参数的构造函数,不给定实参时,默认边长为1;注意——只需要一个构造函数即可。需要的测试函数是:

int main()
{
    Triangle Tri1;   //定义边长为1 1 1的三角形类实例
    Tri1.showMessage();
    Triangle Tri2(1.5);//定义边长为1.5 1 1的三角形类实例
    Tri2.showMessage();
    Triangle Tri3(1.5,1.5);//定义边长为1.5 1.5 1的三角形类实例
    Tri3.showMessage();
    Triangle Tri4(7,8,9); //定义边长为7 8 9的三角形类实例
    Tri4.showMessage();
    return 0;
}

[参考解答]

#include<iostream>
#include<Cmath>
using namespace std;
class Triangle
{
public:
    Triangle(double x=1, double y=1, double z=1);//(3)声明使用默认参数的构造函数,不给定实参时,默认边长为1;
    double perimeter();//计算三角形的周长
    double area();//计算并返回三角形的面积
    void showMessage();
private:
    double a,b,c; //三边为私有成员数据
};

//本参考解答在类声明之外实现
Triangle::Triangle(double x, double y, double z)
{
    a=x;
    b=y;
    c=z;
}

double Triangle::perimeter()
{
    return (a + b + c);
}

double Triangle::area()
{
    double s = (a + b + c) / 2;
    return sqrt(s * (s - a) * (s - b) * (s - c));
}

void Triangle::showMessage()
{
    cout<<"三角形的三边长分别为:"<<a<<' '<<b<<' '<<c<<endl;
    cout<<"该三角形的周长为"<<perimeter()<<",面积为"<<area()<<endl<<endl;
}

int main()
{
    Triangle Tri1;   //定义边长为1 1 1的三角形类实例
    Tri1.showMessage();
    Triangle Tri2(1.5);//定义边长为1.5 1 1的三角形类实例
    Tri2.showMessage();
    Triangle Tri3(1.5,1.5);//定义边长为1.5 1.5 1的三角形类实例
    Tri3.showMessage();
    Triangle Tri4(7,8,9); //定义边长为7 8 9的三角形类实例
    Tri4.showMessage();
    return 0;
}

(5)使用复制构造函数,能用一个已有的三角形对象,复制出新的三角形对象:

int main()
{
    Triangle Tri1(3,4,5);   //定义边长为1 1 1的三角形类实例
    Tri1.showMessage();
    Triangle Tri2(Tri1); //调用复制构造函数
    Tri2.showMessage();
    return 0;
}

[参考解答]

#include<iostream>
#include<Cmath>
using namespace std;
class Triangle
{
public:
    Triangle(double x=1, double y=1, double z=1);
    Triangle(const Triangle &t);
    double perimeter();//计算三角形的周长
    double area();//计算并返回三角形的面积
    void showMessage();
private:
    double a,b,c; //三边为私有成员数据
};

Triangle::Triangle(double x, double y, double z)
{
    a=x;
    b=y;
    c=z;
}

Triangle::Triangle(const Triangle &t)
{
    a=t.a;
    b=t.b;
    c=t.c;
}

double Triangle::perimeter()
{
    return (a + b + c);
}

double Triangle::area()
{
    double s = (a + b + c) / 2;
    return sqrt(s * (s - a) * (s - b) * (s - c));
}

void Triangle::showMessage()
{
    cout<<"三角形的三边长分别为:"<<a<<' '<<b<<' '<<c<<endl;
    cout<<"该三角形的周长为"<<perimeter()<<",面积为"<<area()<<endl<<endl;
}
int main()
{
    Triangle Tri1(3,4,5);   //定义边长为1 1 1的三角形类实例
    Tri1.showMessage();
    Triangle Tri2(Tri1); //调用复制构造函数
    Tri2.showMessage();
    return 0;
}
时间: 2024-09-18 10:39:52

C++项目参考解答:三角形类的相关文章

C++程序设计实践学材系列(27)——1.8 实践“项目”参考解答

回到系列文章的目录--[系列文章目录] 回到本章目录--[第1章目录] 1.8 实践"项目"参考解答 本节与前面各节相关性极大,建议由前面各节看清项目要求,必要时再阅读本节. [项目1.1] #include <iostream> using namespace std; int main( ) { cout<<"C++,我会爱上你!"<<endl; return 0; } [项目1.2] #include <iostrea

2013-C++第15周项目参考解答链接集

课程主页在:http://blog.csdn.net/sxhelijian/article/details/11890759 [项目1-折腾二维数组]创建一个长度为5行4列的二维整型数组,通过初始化,为数组中的前两列的10个元素赋初值,然后通过键盘输入,使后两列的10个元素获得值,将所有元素值乘以3后保存在数组中.输出数组时,按行序优先输出,再按列序优先输出(输出的第一行是数组中的第一列--,其实输出的就是"转置"),再将数组"倒"着输出(即最后一行最后一列的最先输

C++项目参考解答-太乐了

[项目-太乐了] (1)先听故事,再编程序.故事是这样的:话说sin和cos是一对夫妇.一天,sin去听相声了,cos在家.过了一会,有人敲门,cos开门一看,是一个不认识的多项式函数.cos问:你是谁啊?他说:我是你的老公sin啊.cos说:你不是去听相声了吗?怎么成这幅摸样了?sin说:是啊,太乐了!故事讲完了.下面是sin函数的泰勒展式:(注:x取弧度值,而非角度值)用sin泰勒展式编写程序,求出sin(π/2)和sin(56°)的值,精度要求达到小数点后6位(即当最后一项的绝对值小于0.

C++第5周项目1 - 设计三角形类

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8723847 [项目1]设计三角形类,通过增加构造函数,使对象在定义时能够进行初始化 #include<iostream> using namespace std; class Triangle {public: double perimeter(void);

C++项目参考解答:求Fibonacci数列

[项目:求Fibonacci数列] Fibonacci数列在计算科学.经济学等领域中广泛使用,其特点是:第一.二个数是1,从第3个数开始,每个数是其前两个数之和.据此,这个数列为:1 1 2 3 5 8 13 21 34 55 89 --,请设计程序,输出这个数列,直到这个数字超过10000. [提示]数列可以表示为: {f1=f2=1fn=fn−1+fn−2,n>2 [参考解答] #include <iostream> using namespace std; int main( )

C++项目参考解答-求最大公约数

[项目-求最大公约数](1)输入两个数,并求出其最大公约数 #include <iostream> using namespace std; //自定义函数的原型(即函数声明) int main() { int a,b,g; cin>>a>>b; g=gcd(a,b); cout<<"最大公约数是: "<<g; return 0; } int gcd(int x,int y) //定义用于求两数的最大公约数的函数,函数只管求值

2013-C++第12周项目参考解答链接集

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759 [项目1-当年第几天] 定义一个函数,其参数为年.月.日的值,返回这一天为该年的第几天.要求在main函数中输入年月日,然后调用这个函数求值,并在main函数中输出结果. 参考解答在:http://blog.csdn.net/sxhelijian/article/details/16330759 [项目2-太乐了]先听故事,再编程序. 故事是这样的:话说sin和cos是一

C++项目参考解答——小学生算术能力测试系统

[项目-小学生算术能力测试系统]通过本题学习一些系统函数. 设计一个程序,用来实现帮助小学生进行算术运算练习,它具有以下功能:提供10道加.减.乘.除四种基本算术运算的题目,每道题中的操作数是随机产生的,且操作数不超过2位数的正整数:练习者根据显示的题目输入自己的答案,程序自动判断输入的答案是否正确并显示出相应的信息.最后显示做对了几道题. 参考解答: #include <iostream> #include<ctime> #include<cstdlib> int q

C++项目参考解答:累加求圆周率

[项目-累加求圆周率] 用如下公式求π的近似值(计算直到最后一项的绝对值小于10−5) π4=1−13+15−17+... [参考解答] #include <iostream> using namespace std; int main( ) { int n,sign; double total,f; n=1; total=0; sign=1; f=1; //用f代表待累加的每一项的绝对值 while(f>1e-5) { total+=(sign*f); n+=2; f=1.0/n; s