c++程序设计实验报告6-4

原创 2012年03月28日 23:02:21
/  * 程序的版权和版本声明部分 

      * Copyright (c) 2011, 烟台大学计算机学院学生

      * All rights reserved. .      

      * 文件名称: CTriangle.cpp 

      * 作 者: 计114-3 杨坛坛

      * 完成日期: 2012年 3 月 28日

      * 版 本 号: V C

.    * 对任务及求解方法的描述部分

    * 输入描述: 输入三角形的三个顶点

    * 问题描述:

  1)这个问题需要用到两个类,顶点类参照任务3中的CPoint类;

 2)三角形类参考下面CTriangle类的声明;

.3)充分利用CPoint类中已有的代码实现;

 4)关于三条边的处理,可以增加三个私有属性,在初始化时求出来备用,也可以在需要时计算得到。

   * 程序输出: 求出其面积、周长,并判断其是否为直角三角形和等腰三角形。

   * 程序头部的注释结束

    */

 

#include <iostream>  

#include <cmath>  


using namespace std;   
class CPoint  
{  
private:     double x;  
			 
			 double y;  
			 
public:  
	
	CPoint (double xx=0,double yy=0);  
	
    double Distance(CPoint p) const;  
	
	void input();  
	
	void output();  
	
};  

CPoint::CPoint(double xx ,double yy )  
{  
	x=xx;  
	y=yy;  
}  

double CPoint:: Distance(CPoint p) const  
{  
	double d;  
	
	d=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));  
	
	return d;  
	void CPoint::input()  
	{  
		char c;    
		cout<<"请按x,y的形式输入:";  
		
		while(1)  
			
		{  
			cin>>x>>c>>y;  
			
			if(c != ',')  
				
				cout<<"格式错误!重新输入"<<endl;  
			else  
				break;  
		}  
	}  
	
	void CPoint::output() //以(x,y) 形式输出坐标点     
	{    
		cout<<'('<<x<<','<<y<<')'<<endl;    
	}    
	
	class CTriangle  
	{  
	public:  
		
		CTriangle(CPoint &X,CPoint &Y,CPoint &Z):A(X),B(Y),C(Z){} //给出三点的构造函数  
		
		void setTriangle(CPoint &X,CPoint &Y,CPoint &Z);  
		
		double  perimeter(void);//计算三角形的周长  
		
		double area(void);//计算并返回三角形的面积  
		
		bool isRightTriangle(); //是否为直角三角形  
		bool isIsoscelesTriangle(); //是否为等腰三角形  
		
	private:  
		
		CPoint A,B,C; //三顶点  
	};  
	
	void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z)  
	{  
		A=X;  
		
		B=Y;  
		
		C=Z;  
		
	}  
	double  CTriangle::perimeter(void)//计算三角形的周长  
	{  
		double a=B.Distance(C);  
		double b=C.Distance(A);  
		double c=A.Distance(B);  
		return (a+b+c);  
		
	}  
	
	double CTriangle::area(void)//计算并返回三角形面积
	{  
		double a=B.Distance(C);  
		
		double b=C.Distance(A);  
		double c=A.Distance(B);  
		double s=(a+b+c)/2;  
		return sqrt((s-a)*(s-b)*(s-c)*s);  
	}  
	bool CTriangle::isRightTriangle() //是否为直角三角形  
	{  
		double a=B.Distance(C);  
		double b=C.Distance(A);  
		double c=A.Distance(B);  
		if(abs(a*a+b*b-c*c)<1e-6||abs(b*b+c*c-a*a)<1e-6||abs(a*a+c*c-b*b)<1e-6)  
			return true;  
		else   
			return false;  
	}  
	bool CTriangle::isIsoscelesTriangle() //是否为等腰三角形  
	{  
		double a=B.Distance(C);  
		double b=C.Distance(A);  
		double c=A.Distance(B);  
		
		if(abs(a-b)<1e-6||abs(b-c)<1e-6||abs(a-c)<1e-6)  
			
			return true;  
		
		else   
			return false;  
	}  
	void main()  
	{  
		CTriangle Tri1(CPoint(2,5),CPoint(5,2),CPoint(1,1));  
		
		cout<<"该三角形的周长为:"<<Tri1.perimeter();  
		
		cout<<endl;  
		
		cout<<"该三角形的面积为:"<<Tri1.area();  
		
		cout<<endl;  
		
		cout<<(Tri1.isIsoscelesTriangle()? "是":"不是")<<"直角三角形"<<endl;  
		
		cout<<(Tri1.isRightTriangle()? "是":"不是")<<"等腰三角形"<<endl;
		return ;
	}
	


 

C++程序设计实验报告6-3

/** 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:设计平面坐标点类      ...

C++程序设计实验报告 6-2

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

C++程序设计实验报告(9-4)

/* 实验内容:实现Time类中的运算符重载 * 程序的版权和版本声明部分  * Copyright (c) 2011, 烟台大学计算机学院学生  * All rights reser...

C++程序设计实验报告(六十)---第九周任务4

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

山东大学Java程序设计课程实验报告4条件和循环语句

实验目的: 熟悉布尔运算 熟练使用分支语句和循环语句控制程序执行流程 利用Swich语句实现多分支。 学习控制循环终止条件、循环的正常退出、使用 continue 语句、break 语句. 实验步...

C++程序设计实验报告(9-1)

/* 实验内容:实现Time类中的运算符重载 * 程序的版权和版本声明部分  * Copyright (c) 2011, 烟台大学计算机学院学生  * All rights reser...

C++程序设计实验报告(八十四) --- 第十七周任务一

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

C++程序设计实验报告(九)

实验目的:学会使用循环控制语句解决实际问题 实验内容:编写大奖赛用计分程序 * 程序头部注释开始(为避免提交博文中遇到的问题,将用于表明注释的斜杠删除了) * 程序的版权和版本声明部分 *...

C++程序设计实验报告(十一)

第12周报告3: 实验目的:学会使用switch语句解决实际问题 实验内容:计算存款利息。 * 程序头部注释开始(为避免提交博文中遇到的问题,将用于表明注释的斜杠删除了) * 程序的版权和...

C++程序设计实验报告(二十六)

第18周报告2:二维数组 实验目的:学会二维数组的操作 实验内容:二维数组的操作 * 程序头部注释开始 * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c++程序设计实验报告6-4
举报原因:
原因补充:

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