《C++第六周实验报告5-1》---将任务4的解决用一个项目多个文件的方式实现

原创 2012年03月26日 22:02:50
//main.cpp
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称:    CTriangle.cpp            
* 作    者:    计114-3 王兴锋             
* 完成日期:   2012年  3  月  26  日
* 版 本 号:    V 1.0

* 对任务及求解方法的描述部分
* 输入描述: 输入三角形的三个顶点
* 问题描述:
(1)这个问题需要用到两个类,顶点类参照任务3中的CPoint类;
(2)三角形类参考下面CTriangle类的声明;
(3)充分利用CPoint类中已有的代码实现;
(4)关于三条边的处理,可以增加三个私有属性,在初始化时求出来备用,也可以在需要时计算得到。
* 程序输出: 求出其面积、周长,并判断其是否为直角三角形和等腰三角形。
* 程序头部的注释结束
*/
#include <iostream>
#include <cmath>
#include "class.h"

using namespace std;

int main()
{
	CPoint a(0, 0), b(1, 1), c(0, 2);//定义三个点
	CTriangle ct(a, b, c);

	a.output(), b.output(), c.output();
	cout << "构成的三角形:" << endl;
	cout << "周长为:" << ct.perimeter() << endl;
	cout << "面积为:" << ct.area() << endl;
	cout << (ct.isRightTriangle() ? "是" : "不是") << "直角三角形。" << endl;
	cout << (ct.isIsoscelesTriangle() ? "是" : "不是") << "等腰三角形。" << endl;

	cout << endl;
	CPoint a2(0, 0), b2(0, 3), c2(4, 0);//定义三个点
	CTriangle ct2(a2, b2, c2);

	a2.output(), b2.output(), c2.output();
	cout << "构成的三角形:" << endl;
	cout << "周长为:" << ct2.perimeter() << endl;
	cout << "面积为:" << ct2.area() << endl;
	cout << (ct2.isRightTriangle() ? "是" : "不是") << "直角三角形。" << endl;
	cout << (ct2.isIsoscelesTriangle() ? "是" : "不是") << "等腰三角形。" << endl;

	system("PAUSE");
	return 0;
}

//class.h
//点类
class CPoint
{
private:
	float x;  // 横坐标
	float y;  // 纵坐标
public:
	CPoint(float xx = 0, float yy = 0);
	float Distance(CPoint p) const;   // 两点之间的距离(一点是当前点,另一点为参数p)
	void input();  //以x,y 形式输入坐标点
	void output(); //以(x,y) 形式输出坐标点
};
//三角形类
class CTriangle
{
public:
	CTriangle(CPoint &X, CPoint &Y, CPoint &Z):A(X),B(Y),C(Z){} //给出三点的构造函数
	void setTriangle(CPoint &X, CPoint &Y, CPoint &Z);//
	float perimeter(void);//计算三角形的周长
	float area(void);//计算并返回三角形的面积
	bool isRightTriangle(); //是否为直角三角形
	bool isIsoscelesTriangle(); //是否为等腰三角形
private:
	CPoint A, B, C; //三顶点
};

//CPoint.cpp
#include <iostream>
#include <cmath>
#include "class.h"

using namespace std;

CPoint::CPoint(float xx, float yy)
{
	x = xx, y = yy;
}
float CPoint::Distance(CPoint p) const
{
	return sqrt((p.x-x)*(p.x-x) + (p.y-y)*(p.y-y));
}
void CPoint::input()
{
	char ch;
	
	do{
		cout << "请输入点的坐标(例:x,y):" << endl;
		
		cin >> x >> ch >> y;
	}while(ch != ',');
}
void CPoint::output()
{
	cout << "(" << x << "," << y << ")";
}

//CTriangle.cpp
#include <iostream>
#include <cmath>
#include "class.h"

using namespace std;

void CTriangle::setTriangle(CPoint &X, CPoint &Y, CPoint &Z)
{
	A = X, B = Y, C = Z;
}
float CTriangle::perimeter(void)
{
	return (A.Distance(B) + B.Distance(C) + C.Distance(A));
}
float CTriangle::area(void)
{
	float AB = A.Distance(B), BC = B.Distance(C), AC = A.Distance(C);
	
	float p = (AB + BC + AC)/2;
	
	return (sqrt(p * (p-AB) * (p-BC) * (p-AC)));
}
bool CTriangle::isRightTriangle()
{
	float AB = A.Distance(B), BC = B.Distance(C), AC = A.Distance(C);
	
	return (AB*AB + BC*BC == AC*AC || AB*AB +  AC*AC== BC*BC || AC*AC + BC*BC == AB*AB);
}
bool CTriangle::isIsoscelesTriangle()
{
	float AB = A.Distance(B), BC = B.Distance(C), AC = A.Distance(C);
	
	return (AB == AC || AB == BC || AC == BC);
}
/*
利用对文件对程序能够进行更好的管理。
*/

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C++第六周任务5:解决用一个项目多个文件的方式实现,其中两个类的声明放在一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件。体会这样安排的优点。

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: 设...

《C++第六周实验报告4-1》---设计一个三角形类,能够输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: CT...

第六周实验报告 任务4 设计一个三角形类 输入三角形的三个顶点 求面积周长

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生  * All rights reserved. * 文件名称:设计...

第六周实验报告(任务4)

程序头部注释开始 * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:   三角形类...

《第六周实验报告任务4》

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:  ...

第六周实验报告(任务5)

程序头部注释开始 * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:       ...

《第六周实验报告任务1》

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:  ...

C++程序设计实验报告(四十五)---第六周任务三

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2012, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:计算...

第六周实验报告任务 1 下面程序存在编译错误。有两种修改方案,更倾向于那一种?为什么?

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生  * All rights reserved. * 文件名称:下面...

第六周实验报告任务1

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《C++第六周实验报告5-1》---将任务4的解决用一个项目多个文件的方式实现
举报原因:
原因补充:

(最多只允许输入30个字)