南昌航空大学实验报告2构造函数.docx
《南昌航空大学实验报告2构造函数.docx》由会员分享,可在线阅读,更多相关《南昌航空大学实验报告2构造函数.docx(9页珍藏版)》请在冰豆网上搜索。
南昌航空大学实验报告2构造函数
南昌航空大学实验报告
2011年11月16日
课程名称:
面向对象程序设计B实验名称:
构造函数
班级:
102022姓名:
林书晨
指导老师评定:
签名:
实验二构造函数
1、实验目的
通过实验理解构造函数的概念与其特殊应用。
2、实验内容
应用VC++6.0的编辑环境构造一个类Triangle,该类主要实现三角形的基本操作,例如初始化(构造函数及构造函数的重载)、求三角形的周长、面积、判断该三角形是什么三角形(等边、等腰、直角、等边直角、一般三角形、非三角形)、输出等,具体说明如下:
classTriangle{
public:
Triangle(double,double,double);
Triangle(double,double);
Triangle(double);
Triangle();
doubleGetArea();
doubleGetPerimeter();
doubleShow();
private:
doublea,b,c;
};
3.概要设计
a.构造函数
classTriangle{
public:
Triangle(doublex,doubley,doublez)
{
a=x;
b=y;
c=z;
}
Triangle(doublex,doubley)
{
a=x;
b=y;
c=5;
}
Triangle(doublex)
{
a=x;
b=4;
c=5;
}
Triangle(void)
{
a=3;
b=4;
c=5;
}
b.实现功能
1.DoubleGetArea()//求面积
{
doublem=GetPerimeter()/2;
returnsqrt(m*(m-a)+m*(m-b)+m*(m-c));
}
2.
DoubleGetPerimeter()//求周长
{
returna+b+c;
}
3.VoidShow()//判断是什么三角形
{
if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)
{
if(a==b||a==c||b==c)
{
cout<<"rightangledisoscelestriangle"<}
else
{
cout<<"rightangledtriangle"<}
}
else
{
if(a==b||a==c||b==c)
{
if(a==b&&b==c)
{
cout<<"regulartriangle"<}
else
{
cout<<"isoscelestriangle"<}
}
else
{
cout<<"Generaltriangle"<}
else
{
cout<<"Notatriangle"<}
return;
4.详细设计
#include
#include
classTriangle{
public:
Triangle(doublex,doubley,doublez)
{
a=x;
b=y;
c=z;
}
Triangle(doublex,doubley)
{
a=x;
b=y;
c=5;
}
Triangle(doublex)
{
a=x;
b=4;
c=5;
}
Triangle(void)
{
a=3;
b=4;
c=5;
}
doubleGetArea()//求面积
{
doublew=GetPerimeter()/2;
returnsqrt(w*(w-a)+w*(w-b)+w*(w-c));
}
doubleGetPerimeter()//求周长
{
returna+b+c;
}
voidShow()//判断是什么三角形
{
if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)
{
if(a==b||a==c||b==c)
{
cout<<"rightangledisoscelestriangle"<}
else
{
cout<<"rightangledtriangle"<}
}
else
{
if(a==b||a==c||b==c)
{
if(a==b&&b==c)
{
cout<<"regulartriangle"<}
else
{
cout<<"isoscelestriangle"<}
}
else
{
cout<<"Generaltriangle"<}
else
{
cout<<"Notatriangle"<}
return;
}
voidPrint()
{
cout<<"TheAreais:
"<"<Show();
cout<return;
}
private:
doublea,b,c;
};
voidmain()
{
Triangletr1(6.0);
Triangletr2(5.0,4.0);
Triangletr3(6.0,6.0,6.0);
Triangletr4;
tr1.Print();
tr2.Print();
tr3.Print();
tr4.Print();
return;
}
5.程序调试
a.
(1)未初始化函数
(2)三角形形状判断函数不明
(3)没有正确的数据输出
(4)调试加入初始化函数
(5)该了判断函数三角形函数
(6)程序可运行
(7)输入数据
(8)结果正确
b.运行结果
输入:
3,4,5
输出:
rightangledtriangle
TheAreais:
6
ThePerimeteris:
12
输入:
4,4,5
输出:
Notatriangle
输入:
4,4,4
输出:
regulartriangle
rightangledtriangle
TheAreais:
12
ThePerimeteris:
6.9282
输入:
4,4,5
输出:
rightangledtriangle
TheAreais:
13
ThePerimeteris:
7.8062
输入:
2,2,2*2^(1/2)
输出:
rightangledisoscelestriangle
TheAreais:
4+2*2^(1/2)
ThePerimeteris:
2
输入:
3,5,6
输出:
Generaltriangle
TheAreais:
14
ThePerimeteris:
4.5
6.实验总结
在实验中其实程序的写入并不难,只是我们应该注意一些具体的细节,比如函数的初始化,函数的具体方法等等。
7.附录
#include
#include
classTriangle{
public:
Triangle(doublex,doubley,doublez)
{
a=x;
b=y;
c=z;
}
Triangle(doublex,doubley)
{
a=x;
b=y;
c=5;
}
Triangle(doublex)
{
a=x;
b=4;
c=5;
}
Triangle(void)
{
a=3;
b=4;
c=5;
}
doubleGetArea()
{
doublew=GetPerimeter()/2;
returnsqrt(w*(w-a)+w*(w-b)+w*(w-c));
}
doubleGetPerimeter()
{
returna+b+c;
}
voidShow()
{
if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)
{
if(a==b||a==c||b==c)
{
cout<<"rightangledisoscelestriangle"<}
else
{
cout<<"rightangledtriangle"<}
}
else
{
if(a==b||a==c||b==c)
{
if(a==b&&b==c)
{
cout<<"regulartriangle"<}
else
{
cout<<"isoscelestriangle"<}
}
else
{
cout<<"Generaltriangle"<}
else
Cout<<"NOtatriangle"<}
return;
}
voidPrint()
{
cout<<"TheAreais:
"<Perimeteris:
"<Show();
cout<return;
}
private:
doublea,b,c;
};
voidmain()
{
Triangletr1(6.0);
Triangletr2(5.0,4.0);
Triangletr3(6.0,6.0,6.0);
Triangletr4;
tr1.Print();
tr2.Print();
tr3.Print();
tr4.Print();
return;
}