1000. Circle and Rectangle

#include<iostream>
#include<cmath>
using namespace std;

class Point{

private:

double x,y;

public:

Point();

Point(double xv,double yv);

Point(Point& pt);

double getx();

double gety();

};

Point::Point(){
 x=0;y=0;
}

Point::Point(double xv,double yv){
 x=xv;y=yv;
}

Point::Point(Point& pt){
 this->x = pt.x;
 this->y = pt.y;
}

double Point::getx(){
 return x;
}
double Point::gety(){
 return y;
}

class Circle : public Point{
 public:
  Circle(double x,double y,double r);
  Circle();
  Circle(Circle &);
     int position(Point &pr){
      double a = pow(pr.getx() - this->getx(),2) + pow(pr.gety() - this->gety(),2);
      if(a==r*r) return 0;
      if(a>r*r) return 1;
      if(a<r*r) return -1;
      }
    private:
     double r;
};

Circle::Circle(double x,double y,double r) : Point(x,y){
 this->r=r;
}

Circle::Circle() : Point(){
 r=0;
}

Circle::Circle(Circle &t) : Point(t.getx(),t.gety()){
 r = t.r;
}

class Rectangle : public Point{
 public:
  
     Rectangle(double x,double y,double len,double wid) : Point(x,y){
      this->len=len;
      this->wid=wid;
     }
     Rectangle();
  Rectangle(Rectangle &);
     int position(Point &pr){
      double a = pr.getx() - this->getx();
      double b = pr.gety() - this->gety();
//      cout<<a<<"KKKK"<<b<<endl;
//      if((a==0&&b<=wid&&b>0)||(a>0&&a<=len&&b==0)||(a==len&&b<=wid&&b>0)||(a>0&&a<=len&&b==wid)) return 0;
      if(a<len&&a>0&&b<wid&&b>0) return -1;
      else if(a>len||b>wid||a<0||b<0) return 1; //wai
      else return 0; //zai
      }
    private:
     double len;
     double wid;
};

Rectangle::Rectangle() : Point(){
 len=1;
 wid=1;
}
Rectangle::Rectangle(Rectangle &t): Point(t.getx(),t.gety()){
 len = t.len;
 wid = t.wid;
}

时间: 2024-08-27 01:00:35

1000. Circle and Rectangle的相关文章

继承与派生类Circle and Rectangle和The Person, Student, Employee, Faculty and Staff Class

C++为了更加的灵活,更加是程序员自由随性的编写程序,定义了类类型.我们在其中自定义类型,在其中封装函数,甚至在其中重载运算符来改变其原有的属性.类的继承又将类应用的更加开拓.我们用类来使用原有的类,充分体现了C++的开放与包容 派生类(或子类,继承类)拥有基类(或父类,超类)的所有属性及行为,又定义了自己的属性及行为,派生类能够访问基类,但基类就没有访问派生类的权限.二者的关系并不可逆.基类是派生类的抽象,派生类是基类的具体化.从一个基类派生出来的叫做单继承,从多个基类派生出来的叫做多继承.由

创建一个接口Shape,其中有抽象方法area,类Circle 、Rectangle实现area方法计算其面积并返回。又有Star实现Shape的area方法,其返回值是0,Star类另有一返回值boolean型方法isStar;在main方法里创建一个Vector,根据随机数的不同向其中加入Shape的不同子类对象(如是1,生成Circle对象;如是2,生成Rectangle对象;如是3,生成S

题目补充: 创建一个接口Shape,其中有抽象方法area,类Circle .Rectangle实现area方法计算其面积并返回. 又有Star实现Shape的area方法,其返回值是0,Star类另有一返回值boolean型方法isStar: 在main方法里创建一个Vector,根据随机数的不同向其中加入Shape的不同子类对象(如是1,生成Circle对象: 如是2,生成Rectangle对象:如是3,生成Star对象).然后将Vector中元素依次取出,判断其是否为Star类.如是返回其

java学习笔记8--接口总结

接着前面的学习: java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--对象的初始化与回收 java学习笔记3--类与对象的基础 java学习笔记2--数据类型.数组 java学习笔记1--开发环境平台总结 本文地址:http://www.cnblogs.com/archimedes/p/java-study-note8.html,转载请注明源地址. 生活中的接口: 什么是接口? 一个Java接口是一些方法特

python之路,Day24 常用设计模式学习

python之路,Day24 常用设计模式学习 本节内容 设计模式介绍 设计模式分类 设计模式6大原则 1.设计模式介绍 设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一

初步了解设计模式

一.设计模式介绍 1.设计模式 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解. 保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样. 项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题, 以及该问题的核

点线面圆平面几何计算

转载来自csdn资源下载,这里做记录. #include<cstdlib> #include<cmath> #include<cstdio> #include<algorithm> #define max(a,b) (((a)>(b))?(a):(b)) #define min(a,b) (((a)>(b))?(b):(a)) #define sign(x) ((x)>eps?1:((x)<-eps?(-1):(0))) using

HTML5创建高德地图

创建高德地图 功能真的很好很强大,有图有证据! 1.申请key值 去官网2.https://webapi.amap.com/maps?v=1.4.11&key=e22196035aaa10db3b0b6eb1ab64619e <script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.11&key=e22196035aaa10db3b0b6eb1ab64619e"

MSDN搬运 之 [事件]

在发生其他类或对象关注的事情时,类或对象可通过事件通知它们.发送(或引发)事件的类称为“发行者”,接收(或处理)事件的类称为“订户”. 在典型的 C# Windows 窗体或 Web 应用程序中,可订阅由控件(如按钮和列表框)引发的事件.可使用 Visual C# 集成开发环境 (IDE) 来浏览控件发布的事件,选择要处理的事件.IDE 会自动添加空事件处理程序方法和订阅事件的代码.有关更多信息,请参见如何:订阅和取消订阅事件(C# 编程指南). 事件概述 事件具有以下特点: 发行者确定何时引发

java的RTTI和反射机制

RTTI,即Run-Time Type Identification,运行时类型识别.它假定我们在编译时已经知道了所有的类型.那么在运行时就能够自动识别每个类型. 很多时候需要进行向上转型,比如Base类派生出Derived类,但是现有的方法只需要将Base对象作为参数,实际传入的则是其派生类的引用.那么RTTI就在此时起到了作用,比如通过RTTI能识别出Derive类是Base的派生类,这样就能够向上转型为Derived.类似的,在用接口作为参数时,向上转型更为常用,RTTI此时能够判断是否可