用C++ 定义一个三角形类(Triangle)。属性为三条边,计算周长和面积。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C++ 定义一个三角形类(Triangle)。属性为三条边,计算周长和面积。相关的知识,希望对你有一定的参考价值。
提供一下思路,具体代码需要用到“两点间的距离公式”和“点到直线的距离公式”,这些方程很久没用了,忘了,所以就提供一下思想:首先,c++基本数据类型中没有“边”这个东东,如果LZ一定要用“边”做属性的话那最好是定义一个“边类”,class Side; 然后用类的组合来定义三角形类。
边:
由两个端点确定,所以边中的成员要包含两端点的坐标,由于端点没有必要用到函数,所以为了节约,用个2*2的数组Point[2][2]来储存端点坐标即可
需要包含的函数:1.构造函数,传入4个浮点型数据,依次赋值给数组
2.拷贝构造函数,可能会用到
3.计算长度函数,返回浮点型,由先前提到的“两点间的距离公式”辅助
ps:构造函数中没有申请新的内存空间,析构函数可以不要
三角形:
由三个边类的实例作为成员;
包含的函数:1.构造函数,传入6个浮点型数据依次代表3顶点的两坐标,分别调用不同的两个点来构造边,并且把这些“边”依次赋值给三个“成员边”
2.拷贝构造函数,可能会用到
3.计算周长,这个很容易了,分别调用三个“成员边”的长度计算函数,把3个返回值加起来就搞定了
4.计算面积,这个需要用到“点到直线的距离公式”来辅助,任选取一条边做底边,1/2(底*高),搞定
ps:同边类,构造函数没有分配新的内存空间,所以可以不要析构函数 参考技术A #include<iostream>
#include<string>
#include<math.h>
using namespace std;
class Triangle
int a,b,c;
public:
double Area()
double s=(a+b+c)/2;
return sqrt(s*(s-a)*(s-b)*(s-c));
;
int Perimeter()
return a+b+c;
void Input()
cin>>a>>b>>c;
;
void main()
Triangle t1;
t1.Input();
cout<<t1.Area()<<" "<<t1.Perimeter();
自己写的 可运行 参考技术B #include<iostream>
#include<Math.h> //数学函数
using namespace std;
class Triangle
private: //三边为属性
double a;
double b;
double c;
public:
Triangle(double newA,double newB,double newC)
a=newA;
b=newB;
c=newC;
double OpPerimete() //计算周长
double perimete=a+b+c;
return perimete;
double OpArea() //计算面积
double p=(a+b+c)/2;
double area=sqrt(p*(p-a)*(p-b)*(p-c)); //海伦公式
return area;
;
void main()
double a,b,c;
cin>>a>>b>>c;
if(((a+b)>c)&&((a+c)>b)&&(b+c)>a) //能不能构成三角形
cout<<"It is't a Triangle"<<endl;
else //能构成三角形就输出周长和面积
Triangle *t=new Triangle(a,b,c);
cout<<"Perimete="<<t->OpPerimete()<<endl;
cout<<"Area="<<t->OpArea()<<endl;
JAVA 三角形类Triangle(GeometricObject继承)
package triangletest;
import java.util.*;
public class TriangleTest{
public static void main(String args[]){
Scanner ss=new Scanner(System.in);
System.out.println("please input there sides and color of triangle ");
double a=ss.nextDouble();
double b=ss.nextDouble();
double c=ss.nextDouble();
String co=ss.nextLine();
System.out.println("please input a boolean date to indicate this object if be filled");
boolean k=ss.nextBoolean();
Triangle cs=new Triangle(a,b,c);
cs.setColor(co);
cs.setFilled(k);
System.out.println(cs.toString());
System.out.println("the area = "+cs.getArea());
System.out.println("the Perimeter = "+cs.getPerimeter());
System.out.println("the object filled is "+cs.isFilled());
}
}
class Triangle extends GeometricObject{
double side1=1.0;
double side2=1.0;
double side3=1.0;
public Triangle(){};
public Triangle(double side1,double side2,double side3){
this.side1=side1;
this.side2=side2;
this.side3=side3;
}
public double getSide1(){
return side1;
}
public double getSide2(){
return side2;
}
public double getSide3(){
return side3;
}
public double getArea(){
double s=(side1+side2+side3)/2;
return Math.sqrt(s*(s-side1)*(s-side1)*(s-side1));
}
public double getPerimeter(){
return side1+side2+side3;
}
public String toString(){
return "Triangle: side1= "+side1+"\nside2= "+side2+"\nside3= "+side3;
}
}
class GeometricObject{
private String color;
private boolean filled;
private java.util.Date dateCreated;
public GeometricObject(){};
public GeometricObject(String color,boolean filled){
this.color=color;
this.filled=filled;
}
public String getColor(){
return color;
}
public void setColor(String color){
this.color=color;
}
public boolean isFilled(){
return filled;
}
public void setFilled(boolean filled){
this.filled=filled;
}
public java.util.Date getDateCreated(){
return dateCreated;
}
public String toString(){
return "this object‘s color is "+color+"\nthis object filled "+filled;
}
}
以上是关于用C++ 定义一个三角形类(Triangle)。属性为三条边,计算周长和面积。的主要内容,如果未能解决你的问题,请参考以下文章
337用三角形triangle方形square圆形circle等“基本图形“来表示任意的 图形 如菱形 半圆