『C++言語基礎』実践参考——三角形類1

2183 ワード

戻ってきます:賀先生の授業のリンク
【項目1-三角形クラス1】次に三角形クラスを設計し、各メンバー関数の定義を与えてください
#include<iostream>
#include<Cmath>
using namespace std;
class Triangle
{
public:
	void setABC(double x, double y, double z);//     ,        
	void getABC(double *x, double *y, double *z);//     
	double perimeter(void);//        
	double area(void);//           
private:
	double a,b,c; //         
};
int main()
{
	Triangle tri1;	//           (  )
	tri1.setABC(4,5,6);	//      
	double x,y,z;
	tri1.getABC (&x,&y,&z);   //      x,y,z  
	cout<<"    :"<<x<<'\t'<<y<<'\t'<<z<<endl;
	cout<<"       :"<< tri1.perimeter()<<'\t'<<"   :"<< tri1.area()<<endl;
	return 0;
}
//      Triangle         


[参考解答]
#include<iostream>
#include<Cmath>
#include<cstdlib>
using namespace std;
class Triangle
{
public:
    void setABC(double x, double y, double z);//     ,        
    void getABC(double *x, double *y, double *z);//     
    double perimeter(void);//        
    double area(void);//           
private:
    double a,b,c; //         
};
int main()
{
    Triangle tri1;	//           (  )
    tri1.setABC(4,5,6);	//      
    double x,y,z;
    tri1.getABC (&x,&y,&z);   //      x,y,z  
    cout<<"    :"<<x<<'\t'<<y<<'\t'<<z<<endl;
    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);
    }
}

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

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));
}