15,844,011 members
See more:
This the output I am supposedv to get but I am getteing many errors . Please help me
C++
int main()
{
int size = 5;

Shape** shapes = new Shape*[size];

Point* centre = new Point(5,5);
Rectangle* rectangle1 = new Rectangle(*centre, 4, 3);
shapes[0] = rectangle1;

shapes[1] = new Rectangle (*new Point(10, -10), 4, 4);

Rectangle* rectangle3 = new Square(*new Point(-8.5,-10), 2.5);
shapes[2] = rectangle3;

Square* square2 = new Square (*new Point(-1,-1), 1.5);
shapes[3] = square2;

Circle* circle = new Circle(*new Point(100,100), 25.4);
shapes[4] = circle;

cout << "\n11111111111111111111111111\n";

for (int i = 0; i < size; ++i)
shapes[i] -> display();

cout << "\n22222222222222222222222222\n";

cout << "\nthe area of the first rectangle is: ";
cout << rectangle1->area() << endl;

cout << "It is a square, the area is: ";
Square* square = dynamic_cast<Square*> (rectangle3);
cout << square->area() << endl;

cout << "the perimeter of the circle is: ";
cout << circle->perimeter() << endl;

cout << "\n33333333333333333333333333\n";

cout << "\nThe four vertices of the first rectangle are: (clockwise from top-left)\n";
rectangle1->printFourVertices();

cout << "\nThe four vertices of the third rectangle are:\n";
rectangle3->printFourVertices();

cout << "\n44444444444444444444444444\n";

rectangle1->reflectX();

shapes[2] -> translate(1.5, 3);

shapes[4] -> translate(-100,-100);

cout << "\nAfter reflection and translation, here are the moved shapes:\n" ;
for (int i = 0; i < size; ++i)
shapes[i] -> display();

cout << "\n55555555555555555555555555\n";

cout << "\nNow, the four vertices of the first rectangle are:\n";
rectangle1->printFourVertices();

cout << "\nNow, the four vertices of the third rectangle are:\n";
rectangle3->printFourVertices();

cout << "\n66666666666666666666666666\n\n";

for (int i = 0; i < size; ++i)
cout << shapes[i] -> area() << endl;

// From the following statements, understand how setLength() and setWidth()
// work for rectangles and squares.

cout << "\n777777777777777777777777777\n";

shapes[1] -> display();
dynamic_cast<Rectangle*> (shapes[1]) -> setLength(8.2);
cout << "\nAfter setLength(8.2), the rectangle is: ";
shapes[1] -> display();
dynamic_cast<Rectangle*> (shapes[1]) -> setWidth(5);
cout << "\nAfter setWidth(5), the rectangle is: ";
shapes[1] -> display();

square2 -> display();
square2 -> setLength(8.2);
cout << "\nAfter setLength(8.2), the rectangle is: ";
square2 -> display();
square2 -> setWidth(5);
cout << "\nAfter setWidth(5), the rectangle is: ";
square2 -> display();

system("pause");
return 0;
}

/*
11111111111111111111111111

Rectangle:
Centre: (5, 5)
Length: 4
Width: 3

Rectangle:
Centre: (10, -10)
Length: 4
Width: 4

Square:
Centre: (-8.5, -10)
Side Length: 2.5

Square:
Centre: (-1, -1)
Side Length: 1.5

Circle:
Centre: (100, 100)

22222222222222222222222222

the area of the first rectangle is: 12
It is a square, the area is: 6.25
the perimeter of the circle is: 159.512

33333333333333333333333333

The four vertices of the first rectangle are: (clockwise from top-left)
(3, 6.5)
(7, 6.5)
(7, 3.5)
(3, 3.5)

The four vertices of the third rectangle are:
(-9.75, -8.75)
(-7.25, -8.75)
(-7.25, -11.25)
(-9.75, -11.25)

44444444444444444444444444

After reflection and translation, here are the moved shapes:

Rectangle:
Centre: (5, -5)
Length: 4
Width: 3

Rectangle:
Centre: (10, -10)
Length: 4
Width: 4

Square:
Centre: (-7, -7)
Side Length: 2.5

Square:
Centre: (-1, -1)
Side Length: 1.5

Circle:
Centre: (0, 0)

55555555555555555555555555

Now, the four vertices of the first rectangle are:
(3, -3.5)
(7, -3.5)
(7, -6.5)
(3, -6.5)

Now, the four vertices of the third rectangle are:
(-8.25, -5.75)
(-5.75, -5.75)
(-5.75, -8.25)
(-8.25, -8.25)

66666666666666666666666666

12
16
6.25
2.25
2025.8

777777777777777777777777777

Rectangle:
Centre: (10, -10)
Length: 4
Width: 4

After setLength(8.2), the rectangle is:
Rectangle:
Centre: (10, -10)
Length: 8.2
Width: 4

After setWidth(5), the rectangle is:
Rectangle:
Centre: (10, -10)
Length: 8.2
Width: 5

Square:
Centre: (-1, -1)
Side Length: 1.5

After setLength(8.2), the rectangle is:
Square:
Centre: (-1, -1)
Side Length: 8.2

After setWidth(5), the rectangle is:
Square:
Centre: (-1, -1)
Side Length: 5
*/

What I have tried:

C++
// jianger.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
# include<iostream>
# include<cmath>
# include<string>

using namespace std;
class Point
{
private:
double x;
double y;
public:
Point();
Point(const double &x,const double &y);
void setX(const double &x);
void setY(const double &y);
double getX()const;
double getY()const;
double DisFromOrigin()const;
virtual void translate(const double &xDis, const double &yDis);
void reflectX(); // chnage my private members
void reflectY();
virtual void PrintName()const;
};
Point::Point()
{
x=0;
y=0;
}
Point::	Point(const double &x,const double &y)
{
this->x=x;
this->y=y;
}
void  Point::setX(const double &x)
{
this->x=x;
this->y=y;
}
void Point:: setY(const double &y)
{
this->y =y;
}
double Point:: getX()const
{
return x;
}
double Point:: getY()const
{
return y;
}
double  Point::DisFromOrigin()const
{
return (sqrt(x*x + y*y));
}
void Point:: translate(const double &xDis, const double &yDis)
{
double a;
double b;
a = this->x + xDis;
b= this->y + yDis;
this->x= a;
this->y=b;
}
void Point::reflectX()
{
this->y = -1 *y;
}
void Point::reflectY()
{
this->x= -1*x;
}
void Point::PrintName()const
{
cout<<"Point ("<<getX()<<" , "<<getY()<<")"<<endl;
}
class Shape
{
public:
virtual double Peri()const=0;
virtual void PrintName()const=0;
virtual void translate(double x1,double y1)=0;
virtual void reflectX()=0;
virtual void reflectY()=0;
virtual double getArea()const=0;
virtual double getPeri()=0;
virtual string getName()const=0;
}
class Circle:public Shape
{

public:
Circle();
Circle(const Point &p, const double &r);
double getR()const;
void setR(const double &r);
virtual double getPeri()const;
virtual void PrintName()const;
virtual void translate(const double &x1, const double  &y1);
virtual void reflectX();
virtual void reflectY();
virtual double getArea()const;
virtual string getName()const;
protected:
Point center;
string name;

};
Circle::Circle()
{
name = "Circle";
center = Point(0,0);
}
Circle::Circle(const Point &p, const double &r)
{
name = "Circle";
this->center= p;
}

double Circle::getPeri()const
{
return (2*3.14*getR());
}
double Circle::getR()const
{
}
void Circle::setR(const double &r)
{
}
void Circle:: PrintName()const
{
cout<<"Circle"<<endl;
}
void Circle::translate(const double &x1, const double &y1)
{
this->center.translate(x1 , y1);
}
void Circle::reflectX()
{
this->center.reflectX();
}
void Circle::reflectY()
{
this->center.reflectY();
}
double Circle::getArea()const
{
return (3.14*this->getR()*this->getR());
}
string Circle::getName()const
{
return this->name;
}
class Rectangle:public Shape
{
private:
double len;
double width;
Point center;
string name;
public:
Rectangle();
Rectangle(const Point &p, const double &len , const double &width);
void setLen(double len);
void setWid(double width);
double getLen()const;
double getWid()const;
virtual double getPeri()const;
virtual void PrintName()const;
virtual void translate(const double &x1, const double  &y1);
virtual void reflectX();
virtual void reflectY();
virtual double getArea()const;
virtual string getName()const;
};
Rectangle::Rectangle()
{
len =1;
width=1;
this->name = "Rectangle";
center = Point(0,0);
}

Rectangle::	Rectangle(const Point &p, const double &len , const double &width)
{
this->name ="Rectangle";
this->center = p;
this->len = len;
this->width = width;
}
double Rectangle:: getPeri()const
{
return (2*getLen() + 2*getWid());
}
void Rectangle::PrintName()const
{
cout<<"Rectangle"<<endl;
}
void Rectangle::translate(const double &x1, const double  &y1)
{
this->center.translate(x1, y1);
}
void Rectangle::reflectX()
{
this->center.reflectX();
}
void Rectangle::reflectY()
{
this->center.reflectY();
}
double Rectangle::getArea()const
{
return(getLen()*getWid());
}
string Rectangle::getName()const
{
return name;
}
void Rectangle::setLen(double len)
{
this->len = len;
}
void Rectangle::setWid(double width)
{
this->width = width;
}
double Rectangle::getLen()const
{
return len;
}
double Rectangle::getWid()const
{
return width;
}
class Square:public Rectangle
{
private:
Point center;
string name;
double side;
public:
Square();
Square(const double &side);
void setSide(const double &side);
double getSide()const;
virtual double getPeri()const;
virtual void PrintName()const;
virtual void translate(const double &x1, const double  &y1);
virtual void reflectX();
virtual void reflectY();
virtual double getArea()const;
virtual string getName()const;
};
Square::Square()
{
side=0;
}
Square::Square(const double &side)
{
this->side = side;
}
void Square::setSide(const double &side)
{
this->side = side;
this->Rectangle::setLen(side);
this->Rectangle::setWid(side);
}
double Square::getSide()const
{
return this->Rectangle::getLen();
}
double Square:: getPeri()const
{
return(this->Rectangle::getLen()* 4);
}
void Square::PrintName()const
{
cout<<"Square"<<endl;
}
void Square::translate(const double &x1, const double  &y1)
{
this->Rectangle::translate(x1, y1);
}
void Square::reflectX()
{
this->Rectangle::reflectX();
}
void Square::reflectY()
{
this->Rectangle::reflectY();
}
double Square::getArea()const
{
return(this->Rectangle::getLen()* this->Rectangle::getLen());
}
string Square::getName()const
{
return name;
}

int _tmain(int argc, _TCHAR* argv[])
{
int size = 5;

Shape** shapes = new Shape*[size];

Point* centre = new Point(5,5);
Rectangle* rectangle1 = new Rectangle(*centre, 4, 3);// it means that this can not be abstract class!!! coz it is calling object of itself so no virtual functions
shapes[0] = rectangle1;

shapes[1] = new Rectangle (*new Point(10, -10), 4, 4);

Rectangle* rectangle3 = new Square(*new Point(-8.5,-10), 2.5);
shapes[2] = rectangle3;

Square* square2 = new Square (*new Point(-1,-1), 1.5);
shapes[3] = square2;

Circle* circle = new Circle(*new Point(100,100), 25.4);
shapes[4] = circle;

cout << "\n11111111111111111111111111\n";

for (int i = 0; i < size; ++i)
shapes[i] -> display();

return 0;
}
Posted
Updated 22-Jul-17 10:46am
v2
Patrice T 22-Jul-17 17:30pm
"but I am getteing many errors"
You forgot to tell us the error messages and positions.
Are they compile time errors or runtime ereors ?
kumn1d 22-Jul-17 18:18pm
Everything works fine but I am now able to implement given below output. Please can u tell me how to implement four vertices . I am confused because I have only one Point center in my each class so I dont know how to find four vertices ?
cout << "\nThe four vertices of the first rectangle are: (clockwise from top-left)\n";
rectangle1->printFourVertices();

cout << "\nThe four vertices of the third rectangle are:\n";
rectangle3->printFourVertices();
David Crow 24-Jul-17 16:21pm
There is no printFourVertices() method. Is that the error you are referring to?
Richard MacCutchan 23-Jul-17 3:14am
Please edit your question and explain exactly what the errors are and where they occur.
David Crow 24-Jul-17 16:20pm
I'm seeing a redundant assignment operation in the Point::setX() method. Is this intentional?