利用点、线、面的基本知识,声明Point,Line,Friangle,PolyAngle四个类,完成以下功能。
Point类功能://实验88888
(1) 移动一个点;
(2) 显示一个点;
(3) 可计算这个点到原点的距离。
Line类功能:
(1) 计算点到直线的距离;
(2) 直线的斜率;
(3) 判断两条直线的关系(平行/相交(交点坐标能够给出来并显示)/垂直);
Friangle类功能:
(1) 判断三点能否构成三角形;
(2) 判断三角形是等边,等腰或者是直角;
(3) 计算三角形的面积。
PolyAngle类功能:
(1) 判断四点能否构成四边形,并判断其是凹的,还是凸的;
(2) 判断四边形是否是等腰梯形;
(3) 判断四边形是否是平行四边形,菱形;
(4) 判断它是否是一个矩形;
(5) 计算四边形的面积和周长。

---恢复内容开始---

#include<iostream>
#include<math.h>

using namespace std;

class point
{
private:
 int x;
   int y;
public:
   point()
   {}
   
   void move_point()
 {
     int i,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()
    {}
   
    void set_line()
    {
     cout<<"输入二个点"<<endl;
     a1.set_point();
     a2.set_point();
    }
    
    void dislinepoint(point &a3)
    {
     float b,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;
    }
    
    
    void lineshow()
    {
     float k, 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;
    point a2;
    point a3;
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()
 {
    float k1,k2,k3,k4;
    float a,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();
}

c++实验,需要的人都知道是啥的更多相关文章

  1. 上传伪技术~很多人都以为判断了后缀,判断了ContentType,判断了头文件就真的安全了。是吗?

    今天群里有人聊图片上传,简单说下自己的经验(大牛勿喷) 0.如果你的方法里面是有指定路径的,记得一定要过滤../,比如你把 aa文件夹设置了权限,一些类似于exe,asp,php之类的文件不能执行,那 ...

  2. 99%的人都理解错了HTTP中GET与POST的区别(转载

    GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己 ...

  3. 99%的人都理解错了HTTP中GET与POST的区别

    GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己 ...

  4. 身处IT的你对身边人都有哪些影响

    前不久,跟外甥一起吃饭:他明年就要中考了,我就想,这马上就到人生的关键路口了,看他自己对将来有什么想法没:就问了句:勇勇,你以后想学习哪些方面的东西或者想从事什么工作呢?他简单的说了句:我要跟你一样学 ...

  5. 一道月薪3W的java面试题 (小明和小强都是张老师的学生,张老师的生日是某月某日,2人都不知道张老师的生日)

    小明和小强都是张老师的学生,张老师的生日是M月N日,2人都知道张老师的生日 是下列10组中的一天,张老师把M值告诉了小明,把N值告诉了小强,张老师问他们知道他的生日是那一天吗? 3月4日 3月5日 3 ...

  6. 很多人都在埋怨没有遇到好的团队,但好的团队不可能凭空出现,一流的团队不能仅靠团队成员努力,作为Leader,要有可行的规划,并坚定地执行、时势地调整(转)

    <西游记>中的唐僧团队历经千难万险,终于求得真经,目标明确.分工合理为这支队伍最终走向成功奠定了基础.唐僧从一开始,就为这个团队设定了西天取经的目标,虽然经历各种挫折与磨难,但目标从未动摇 ...

  7. 所有人都可以是开发人员——《Office 365开发入门指南》视频教程即将上市

      今天是春节假期的最后一天,在这里给全国的朋友们拜个晚年,祝大家身体健康,晚年幸福啊.这个春节大家过的怎么样啊,我自己是在老家过的年,家乡的年味还是比较浓的,也再次感谢朋友圈的大家给我看了各地的风光 ...

  8. tex---就是tex文件,这个地球人都知道,是文章所在的主要文件

    本demo中包括两个文件example.tex和myref.bib,用的时候參照改即可啦. example.tex:用的时候将'\'和后面文字中间的空格去掉 ----------------- \do ...

  9. Bugku-CTF之web2-听说聪明的人都能找到答案

    Day1   听说聪明的人都能找到答案   http://123.206.87.240:8002/yanzhengma/  

  10. MSDN离线版 发现不少人都在找这个

    MSDN离线版 发现不少人都在找这个,无意中找到 VS2012旗舰版 选好语言,建议选那个ISO的下载

随机推荐

  1. iOS 两行代码解决数据持久化

    在实际的iOS开发中,有些时候涉及到将程序的状态保存下来,以便下一次恢复,或者是记录用户的一些喜好和用户的登录信息等等. 这就需要涉及到数据的持久化了,所谓数据持久化就是数据的本地保存,将数据从内存中 ...

  2. backbonejs使用

    backbone是一个非常好的前端MVC框架,将数据与逻辑分离出来,在稍大一点项目中,backbone都有用武之地. 个人感觉backbone最好的地方就是通过事件来管理数据改变导致的视图改变,bac ...

  3. C# 默认以管理员权限运行程序

    /** * 当前用户是管理员的时候,直接启动应用程序 * 如果不是管理员,则使用启动对象启动程序,以确保使用管理员身份运行 */ //获得当前登录的Windows用户标示 //URL:http://w ...

  4. CodeForces462 A. Appleman and Easy Task

    A. Appleman and Easy Task time limit per test 1 second memory limit per test 256 megabytes input sta ...

  5. xml转义字符

    解析XML文件时,如果有多个转义学符可以用 <![CDATA[含有转义字符的内容]]

  6. 通用数据库操作类,前端easyui-datagrid,form

    实现功能:     左端datagrid显示简略信息,右侧显示选中行详细信息,数据库增删改 (1)点击选中行,右侧显示详细信息,其中[新增].[修改].[删除]按钮可用,[保存]按钮禁用 (2)点击[ ...

  7. 【BZOJ】3523: [Poi2014]Bricks

    题意 \(n(n \le 1000000)\)个物品,颜色分别为\(a[i]\),现在要求排在一排使得相邻两个砖块的颜色不同,且限定第一个砖块和最后一个砖块的颜色,输出一个合法解否则输出-1. 分析 ...

  8. ZeroMQ接口函数之 :zmq_inproc – ØMQ 本地进程内(线程间)传输方式

    ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ——————————————————————————————————— ...

  9. 新手程序员随笔2——初识html、css和javascript

    翻看博客,发现好久木有发blog了.纠其原因,一则是近来工作上卡到了一个编程难题,我是一个单线程的小猿,当我手头有事情做的时候,我不想分心去做其它事情,如写blog.二则是我个人的写作能力不佳,想到写 ...

  10. 【java基础学习】反射

    1. 什么是反射 Class.Method.Field.Constructor,它们是反射对象.它们是类.方法.成员变量.构造器,在内存中的形式. 也就是万物皆对象!类是类型.方法是类型.成员变量是类 ...