这是个类和对象

来源:互联网 发布:龙城霸业 boss积分数据 编辑:程序博客网 时间:2024/05/23 07:22

这是个关于类和对象的C++程序,这是我们老师留的作业,我做得不太好,这是老师帮着修改之后的程序。这个程序主要是四个类,点,线,三角形,四边形。可能还有不妥之处还望大家海涵,也希望大神能指点一二。

#include<iostream>

#include<math.h>

 

using namespace std;

这是程序运行结果:

 

class point      //这是定义点的类

{

private:

         int x;

       inty;

public:

       point()                                  //构造函数

       {}

      

       voidmove_point()

         {

             inti,j;

             cout<<"输入位移量"<<endl;

                   cin>>i>>j;

                   x=i+x;

                   y=j+y;

         }

        

         void set_point()

         {

 

                   cin>>x>>y;

         }

        

         void show()

         {

                   cout<<"横坐标:"<<x<<" "<<"纵坐标"<<y<<endl;

         }

        

         int getx()

         {

                   return x;

         }

        

         int gety()

         {

                   return y;

         }

        

         void distance()

    {

                   float s;

                   s=sqrt(x*x+y*y);

                   cout<<"点到原点的距离"<<s<<endl;

    }

};

 这是点类运行结果:

 

class line             //这是定义线的类

 

{

private:

         point a1;

         point a2;

        

public:

         line()

    {}

   

     voidset_line()

     {

               cout<<"输入二个点"<<endl;

               a1.set_point();

               a2.set_point();

     }

    

     voiddislinepoint(point &a3)

     {

               floatb,k,d;

              

              k=(a2.gety()-a1.gety())/(float)(a2.getx()-a1.getx());

               b= a1.gety() - k*a1.getx();

              

               d= fabs(k*a3.getx()-a3.gety()+b)/sqrt(k*k+1);

 

              cout<<"点到直线的距离:"<<d<<endl;

     }

    

    

     voidlineshow()

     {

               floatk, b;

 

               k=(a2.gety()-a1.gety())/((a2.getx()-a1.getx())*1.0);

               cout<<"斜率为:"<<endl;

               cout<<k<<endl;

              

               b= a1.gety() - k*a1.getx();

               cout<<"截距为:"<<endl;

               cout<<b<<endl;

   }

 

};

 这是线类运行结果:

 

class triangle                //这是定义三角形的类

 

{

private:

         point a1;

     pointa2;

     pointa3;

public:

         triangle()

       {}

 

         void set_triangle()

         {

                   cout<<"输入三个点"<<endl;

                   a1.set_point();                  

                   a2.set_point();                  

                   a3.set_point();

         }

        

                    

         void show_triangle()

         {       

                   judge_triangle();

         }

 

 

         void judge_triangle()

         {

        

                   float a,b,c,d,s;

        

                   a=sqrt((a1.getx()-a2.getx())*(a1.getx()-a2.getx())+(a1.gety()-a2.gety())*(a1.gety()-a2.gety()));

               b=sqrt((a2.getx()-a3.getx())*(a2.getx()-a3.getx())+(a2.gety()-a3.gety())*(a2.gety()-a3.gety()));

               c=sqrt((a1.getx()-a3.getx())*(a1.getx()-a3.getx())+(a1.gety()-a3.gety())*(a1.gety()-a3.gety()));

    

              if(((a>b-c)&&(a<b+c)) &&((b>a-c)&&(b<a+c)) && ((c>b-a)&&(c<b+a)))

               {

                    cout<<"可以构成三角形"<<endl;

                   }

                   else

                            cout<<"不可以构成三角形"<<endl;

                  

                  

                   if((a==b)&&(b==c)&&(c==a))

                   {

                            cout<<"可以构成等边三角形"<<endl;

                   }

                   else

                            cout<<"不可以构成对等边三角形"<<endl;

      

                   if((a==b)||(b==c)||(c==a))

                   {

                            cout<<"可以构成等腰三角形"<<endl;

                   }

                   else

                            cout<<"不可以构成对等腰三角形"<<endl;

 

         if(((a*a-b*b-c*c)>-0.01)&&((a*a-b*b-c*c)<0.01)||((b*b-a*a-c*c)>-0.01)&&((b*b-a*a-c*c)<0.01)||((c*c-a*a-b*b)>-0.01)&&((c*c-a*a-b*b)<0.01))

                         cout<<"可以构成直角三角形"<<endl;

                 else

                         cout<<"不可以构成直角三角形"<<endl;

 

                d=(a+b+c)*1/2.0;

             s=sqrt(d*(d-a)*(d-b)*(d-c));

                cout<<"三角形的面积"<<s<<endl;

       }

};

这是三角形运行结果:

 

 

class polyangle                         //这是定义四边形的类

 

{

        

private:

         point A;

         point B;

         point C;

         point D;

public:

  polyangle()

  {}

 

         void set_polyangle()

         {

                   cout<<"输入四个点"<<endl;

                   A.set_point();          

                   B.set_point();          

                   C.set_point();          

                   D.set_point();

         }

 

         void judge_polyangle()

         {

                floatk1,k2,k3,k4;

                floata,b,c,d;

                   float e,f;

                   float s1,s2,s;

                   float l,i;

               

                k1=(float)(A.gety()-B.gety())/((A.getx()-B.getx()));

                k2=(float)(B.gety()-C.gety())/((B.getx()-C.getx()));

                k3=(float)(C.gety()-D.gety())/((C.getx()-D.getx()));

                k4=(float)(D.gety()-A.gety())/((D.getx()-A.getx()));

                               

                   a=sqrt((A.getx()-B.getx())*(A.getx()-B.getx())+(A.gety()-B.gety())*(A.gety()-B.gety()));

                b=sqrt((B.getx()-C.getx())*(B.getx()-C.getx())+(B.gety()-C.gety())*(B.gety()-C.gety()));

                c=sqrt((C.getx()-D.getx())*(C.getx()-D.getx())+(C.gety()-D.gety())*(C.gety()-D.gety()));

                d=sqrt((D.getx()-A.getx())*(D.getx()-A.getx())+(D.gety()-A.gety())*(D.gety()-A.gety()));

               

                e=sqrt((C.getx()-A.getx())*(C.getx()-A.getx())+(C.gety()-A.gety())*(C.gety()-A.gety()));

                f=sqrt((D.getx()-B.getx())*(D.getx()-B.getx())+(D.gety()-B.gety())*(D.gety()-B.gety()));

               

                if(((d!=b)&&(k4==k2)&&(a==c))||((a!=c)&&(k1==k3)&&(b==d)))

                {

                         cout<<"是等腰梯形"<<endl;

                }

                else

                         cout<<"不是等腰梯形"<<endl;

 

                if((k1==k3)&&(a==c))

                {

                         cout<<"是平行四边形"<<endl;

                         if(a==b==c==d)

                                   cout<<"该四边形为菱形"<<endl;

                            else

                                   cout<<"该四边形不为菱形"<<endl;;

                }

                else

                {

                         cout<<"不是平行四边形"<<endl;

                }

 

                   if((k1==k3)&&(a==c)&&(k1*k2==-1))

                   {

                            cout<<"该四边形为矩形"<<endl;

                   }

                   else

                            cout<<"该四边形不为矩形"<<endl;

            

                   i=(a+b+e)*(1/2.0);

             s1=sqrt(i*(i-a)*(i-b)*(i-e));

            

             i=(d+c+e)*(1/2.0);

             s2=sqrt(i*(i-d)*(i-c)*(i-e));

            

            

             s=s1+s2;

             cout<<"面积"<<s<<endl;

             l=a+b+c+d;

             cout<<"周长"<<l<<endl;

   }

 

};

这是四边形运行结果:

 

int main()

{

         point a;

         cout<<"输入一个点"<<endl;

         a.set_point();

         a.show();

         a.distance();

 

         line q;

         q.set_line();

         q.lineshow();

 

         triangle p;

         p.set_triangle();

         p.show_triangle();

        

         polyangle s;

         s.set_polyangle();

         s.judge_polyangle();

这是程序运行结果:






0 0