c++实验,需要的人都知道是啥
利用点、线、面的基本知识,声明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++实验,需要的人都知道是啥的更多相关文章
- 上传伪技术~很多人都以为判断了后缀,判断了ContentType,判断了头文件就真的安全了。是吗?
今天群里有人聊图片上传,简单说下自己的经验(大牛勿喷) 0.如果你的方法里面是有指定路径的,记得一定要过滤../,比如你把 aa文件夹设置了权限,一些类似于exe,asp,php之类的文件不能执行,那 ...
- 99%的人都理解错了HTTP中GET与POST的区别(转载
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己 ...
- 99%的人都理解错了HTTP中GET与POST的区别
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己 ...
- 身处IT的你对身边人都有哪些影响
前不久,跟外甥一起吃饭:他明年就要中考了,我就想,这马上就到人生的关键路口了,看他自己对将来有什么想法没:就问了句:勇勇,你以后想学习哪些方面的东西或者想从事什么工作呢?他简单的说了句:我要跟你一样学 ...
- 一道月薪3W的java面试题 (小明和小强都是张老师的学生,张老师的生日是某月某日,2人都不知道张老师的生日)
小明和小强都是张老师的学生,张老师的生日是M月N日,2人都知道张老师的生日 是下列10组中的一天,张老师把M值告诉了小明,把N值告诉了小强,张老师问他们知道他的生日是那一天吗? 3月4日 3月5日 3 ...
- 很多人都在埋怨没有遇到好的团队,但好的团队不可能凭空出现,一流的团队不能仅靠团队成员努力,作为Leader,要有可行的规划,并坚定地执行、时势地调整(转)
<西游记>中的唐僧团队历经千难万险,终于求得真经,目标明确.分工合理为这支队伍最终走向成功奠定了基础.唐僧从一开始,就为这个团队设定了西天取经的目标,虽然经历各种挫折与磨难,但目标从未动摇 ...
- 所有人都可以是开发人员——《Office 365开发入门指南》视频教程即将上市
今天是春节假期的最后一天,在这里给全国的朋友们拜个晚年,祝大家身体健康,晚年幸福啊.这个春节大家过的怎么样啊,我自己是在老家过的年,家乡的年味还是比较浓的,也再次感谢朋友圈的大家给我看了各地的风光 ...
- tex---就是tex文件,这个地球人都知道,是文章所在的主要文件
本demo中包括两个文件example.tex和myref.bib,用的时候參照改即可啦. example.tex:用的时候将'\'和后面文字中间的空格去掉 ----------------- \do ...
- Bugku-CTF之web2-听说聪明的人都能找到答案
Day1 听说聪明的人都能找到答案 http://123.206.87.240:8002/yanzhengma/
- MSDN离线版 发现不少人都在找这个
MSDN离线版 发现不少人都在找这个,无意中找到 VS2012旗舰版 选好语言,建议选那个ISO的下载
随机推荐
- 请问MVC4是不是类似于html页+ashx页之间用JSON通过AJAX交换数据这种方式、?
不是,可以讲mvc模式是借鉴于java下面的mvc开发模式,为开发者公开了更多的内容和控制,更易于分工合作,与单元测试,借用官方的说法:MVC (Model.View.Controller)将一个We ...
- React的双向绑定
以前对于双向绑定概念来自于Angular.js,现在我用我感兴趣的react.js来实现这样的方式.有2种方式分析,1:不用插件,2:用插件 (引入react.js操作省略...) 不用插件: 先创建 ...
- 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest
A. Toda 2 按题意模拟即可. #include <bits/stdc++.h> using namespace std ; typedef pair < int , int ...
- [BZOJ1501][NOI2005] 智慧珠游戏
Input 文件中包含初始的盘件描述,一共有10行,第i行有i个字符.如果第i行的第j个字符是字母”A”至”L”中的一个,则表示第i行第j列的格子上已经放了零件,零件的编号为对应的字母.如果第i行的第 ...
- ZeroMQ接口函数之 :zmq_msg_copy - 把一个消息的内容复制到另一个消息中
ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq_msg_copy zmq_msg_copy(3) ØMQ Manual - ØMQ/3.2.5 Name zm ...
- 【Alpha】Daily Scrum Meeting第九次
一.本次Daily Scrum Meeting主要内容 汇报情况. 上次提到的数据库字段问题,已经和合作队伍统一完毕. 在服务器上解析Json数据仍在解决中,现在直接使用手机发过去的数据进行解析. 二 ...
- Win 10 文件浏览器无法打开
今天遇到个很奇怪的问题,文件浏览器File Explorer无法正常显示,点击打开后任务栏上已经显示打开了,但是屏幕上却看不到任何窗口,开始以为机子中了恶意的木马,然后就疯狂的查毒,然而并没有解决问题 ...
- oracle 11g RAC 补丁升级方法
一.自动升级方法 使用auto方式在两节点分别进行PSU的安装,安装PSU前注意更新opatch工具至PSU所要求版本,p22191577补丁包括GI和DB,分别执行即可. 两节点分别grid用户执行 ...
- bzoj2523 聪明的学生
bzoj第一题,ctsc2001. 黑书上的递归例题,我们定义time()函数,递归求解即可. 这个题用到了一个小技巧:可以使用枚举来搞算法. #include <iostream> #i ...
- angular前端开发环境
1.代码编辑工具 webstorm 2.断点调试工具 chrome插件Batarang 3.版本管理工具 git(仅仅是命令行工具) git小乌龟--tortoisegit(图形化工具) 首先在git ...