以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  求adt一道题的解答  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=83422)


--  作者:succi
--  发布时间:2/2/2010 1:14:00 PM

--  求adt一道题的解答
题目如下:
设计并执行一个ADT代表一个三角形。此ADT的数据要包括三角的三边,并且要在ADT中类的private中。此ADT要包括以下功能:
一个default函数构造器,不含参量
一个以三角形三边为参数的函数
可以设定三边
可以取得三边的值
可以计算周长   p = side1 + side2 + side3
可以计算面积    SP = 1/2 p
                             Area = √sp(sp-side1)(sp-side2)(sp-side3)
可以判断是否为等腰三角形
可以判断是否为等边三角形
可以判断是否为直角三角形
写一个主功能测试所有三角形类的功能。允许输入三边的值,以查证三边均大于0,且任意2边之和大于第三边,任两边之差小于第三边。
谢谢~~~~~
自己写的 不知道哪里出错~~~请高人指导!
trinagle.h


#include <iostream>
#include <math.h>
using namespace std;
class Ctrinagle
{
private:
   int A,B,C;
public:
void SetRevised(int a,int b,int c)
{
  A=a;
  B=b;
  C=c;
  
}
double Perimeter();
double Area();
bool IsIsosceles() const;
bool IsCongruent() const;
bool IsRightAngled() const;
}


trinagle.cpp


#include <iostream>
#include <math.h>
#include "trinagle.h"
void Triangle::Read()
{
cout<<"input side 1"<<endl;
a.Read();
cout<<"input side 2"<<endl;
b.Read();
cout<<"input side 3"<<endl;
c.Read();
}
double Perimeter()
{
  return A+B+C;
}
double Area()
{double p=Pperimeter();
  return sqrt(p/2*(p/2-A)*(p/2-B)*(p/2-C));
}
bool Triangle::IsIsosceles() const
{
return A() == B() || B() == C() || A() == C();
}

bool Triangle::IsCongruent() const
{
   return A() == B() && B() == C();
}

bool Triangle::IsRightAngled() const
{
double a2= A*A;
double b2= B*B;
double c2= C*C;

return a2+b2=c2|| a2+c2=b2 || a2+c2=b2;
}
  
}

testtrinagle.cpp

#include "trinagle.h"
#include <iostream>
#include <math.h>
int main()
{   Ctrinagle t1;
    int a,b,c;
    cin>>a>>b>>c;
 if (a>0&&b>0&&c>0&&(a+b)>c&&(a-b)<c)
 t1.SetRevised(a,b,c)
 cout<<Perimeter<<Area<<IsIsosceles<<IsCongruent<<IsRightAngled;
 else cout<<"It is wrong";
}


[/B][/I][/I][/I][/I][/I]

[此贴子已经被作者于2010-2-4 1:04:49编辑过]

W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms