Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include "cmath"
- #include <vector>
- using namespace std;
- class Line;
- class Shape;
- class Triangle;
- class Quadrangle;
- class Point{
- private:
- double x;
- double y;
- public:
- Point(double x, double y){
- this->x = x;
- this->y = y;
- }
- double getX(){
- return this->x;
- }
- double getY(){
- return this->y;
- }
- double getDistance(Point *punkt){
- return sqrt(pow((punkt->getX() - this->getX()), 2) + pow((punkt->getY() - this->getY()), 2));
- }
- };
- class Line{
- private:
- Point* A;
- Point* B;
- public:
- Line(Point *A, Point *B){
- this->A = A;
- this->B = B;
- }
- double getA(){
- return (this->B->getY() - this->A->getY())/(this->B->getX() - this->A->getX());
- }
- double getB(){
- double y = (this->A->getY() - (this->A->getY() - this->B->getY())/(this->A->getX() - this->B->getX()) * this->A->getX());
- return y;
- }
- double getLength(){
- return sqrt(pow((this->B->getX() - this->A->getX()), 2) + pow((this->B->getY() - this->A->getY()), 2));
- }
- };
- class Shape{
- protected:
- vector<Point*> punkty;
- public:
- Shape(){
- };
- virtual double getArea()=0;
- void addPoint(Point *punkt){
- this->punkty.push_back(punkt);
- }
- Point *getPoint(int i){
- return this->punkty[i];
- }
- double getCircumference(){
- double obw = 0;
- for(int i = 0; i < punkty.size(); i++){
- if(i == punkty.size() - 1){
- obw += getPoint(i)->getDistance(getPoint(0));
- }else {
- obw += getPoint(i)->getDistance(getPoint(i+1));
- }
- }
- return obw;
- }
- };
- class Triangle : public Shape{
- public:
- Triangle(Point *punktA, Point *punktB, Point *punktC){
- addPoint(punktA);
- addPoint(punktB);
- addPoint(punktC);
- }
- double getArea(){
- double a = getPoint(0)->getDistance(getPoint(1));
- double b = getPoint(1)->getDistance(getPoint(2));
- double c = getPoint(2)->getDistance(getPoint(0));
- double p = 0.5*(a+b+c);
- return sqrt(p *(p-a)*(p-b)*(p-c));
- }
- };
- class Quadrangle : public Shape{
- public:
- Quadrangle(Point *punktA, Point *punktB, Point *punktC, Point *punktD){
- addPoint(punktA);
- addPoint(punktB);
- addPoint(punktC);
- addPoint(punktD);
- }
- double getArea() {
- Triangle *trojkat1 = new Triangle(getPoint(0),getPoint(1),getPoint(2));
- Triangle *trojkat2 = new Triangle(getPoint(3), getPoint(0), getPoint(2));
- return trojkat1->getArea() + trojkat2->getArea();
- }
- };
- int main() {
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment