《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);
}
/*
利用对文件对程序能够进行更好的管理。
*/

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

第六周上机任务项目5-一个项目多个文件

01/* 02.* 程序的版权和版本声明部分 03.* Copyright (c)2013, 烟台大学计算机学院学生 04.* All rightsreserved...
  • zgz1992319
  • zgz1992319
  • 2013年04月05日 13:42
  • 588

machine-learning第六周 上机作业

1、如何评估算法好坏:高偏差与高方差的问题; 2、当某个集合中,一个类别远小于另一个类别的时候(如患癌),如何评估在面对偏斜类(Skewed classes)的算法好坏:查准率和召回率; 3、如何选择...
  • dialoal
  • dialoal
  • 2016年02月02日 16:21
  • 1258

coursera机器学习课程第六周——课程笔记

本周的内容主要分为两部分,第一部分:主要内容是偏差、方差以及学习曲线相关的诊断方法,为改善机器学习算法的决策提供依据;第二部分:主要内容是机器学习算法的错误分析以及数值评估标准:准确率(交叉验证集的误...
  • ccblogger
  • ccblogger
  • 2017年11月27日 17:47
  • 101

如何在SSH项目中布置多个定时任务?

如何在一个项目中布置多个定时任务
  • bestcxx
  • bestcxx
  • 2016年03月23日 15:38
  • 947

07 eclipse C/ C++编译含有多个main函数的项目

前言今天 闲的蛋疼的时候, 突然想起了使用eclipse构建C/ C++项目, 下载好mingw编译器之后, 创建了一个项目, 之后写了两个”类” [.. java用惯了], 但是 却发现了和visu...
  • u011039332
  • u011039332
  • 2015年12月23日 21:50
  • 1665

第六周任务4:三角形类

/* * 程序的版权和版本声明部分 * Copyright (c)2013, 烟台大学计算机学院学生 * All rightsreserved. * 文件名称:...
  • lihui18363829082
  • lihui18363829082
  • 2013年04月10日 13:15
  • 400

多态与虚函数-编程题#3(C++程序设计第6周)

编程题 #3 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 ...
  • abc8730866
  • abc8730866
  • 2017年03月06日 17:16
  • 233

第六周,任务3

* * 程序的版权和版本声明部分 * Copyright (c)2013, 烟台大学计算机学院学生 * All rightsreserved. * 文件名称:score.cpp * 作 ...
  • ydwanglei
  • ydwanglei
  • 2013年04月15日 21:48
  • 352

第六周 任务三

/* * 程序的版权和版本声明部分 * Copyright (c)2013, 烟台大学计算机学院学生 * All rightsreserved. * 文件名称:score.cpp ...
  • liuyujin0812
  • liuyujin0812
  • 2013年04月10日 19:49
  • 527

2013第六周上机任务【项目4 三角形类】

/* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. ...
  • fanlulu3017
  • fanlulu3017
  • 2013年04月08日 11:41
  • 774
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《C++第六周实验报告5-1》---将任务4的解决用一个项目多个文件的方式实现
举报原因:
原因补充:

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