Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstring>
- using namespace std;
- enum Color {RED, GREEN, BLUE};
- class Shape
- {
- private:
- char id[5];
- double area;
- Color color;
- public:
- // Shape(){}
- Shape(char *id = "", Color color = RED, double area = 0.0)
- { this->area=area;
- strcpy(this->id,id);
- this->color=color;
- }
- Shape(const Shape &s)
- {
- this->area=s.area;
- strcpy(this->id,s.id);
- this->color=s.color;
- }
- double getArea() { return this->area; }
- char *getId() { return this->id; }
- void setArea(double area) { this->area=area; }
- void setId(char *id) { strcpy(this->id,id); }
- char * printColor ()
- {
- if (color == RED) return "RED";
- else if (color == GREEN) return "GREEN";
- else return "BLUE";
- }
- void draw() {
- cout<<id<<" "<<printColor()<<" "<<area<<endl;
- }
- void reduceArea ()
- { area/=2; }
- friend class Canvas;
- };
- class Canvas
- {
- private: Shape shape [100];
- int n;
- public: Canvas()
- {
- this->n=0;
- }
- Canvas(const Canvas &c)
- {
- this->n=c.n;
- for(int i = 0; i < n ; i++)
- {
- shape[i]=c.shape[i];
- }
- }
- void setN(int n) { this->n=n; }
- int getN() { return n; }
- void addShape (Shape s)
- {
- shape[n] = s;
- n++;
- }
- void drawAll()
- {
- for(int i = 0; i < n ; i++)
- { shape[i].draw();
- }
- }
- void drawOnly(Color c)
- {
- for(int i = 0; i < n ; i++)
- {
- if (shape[i].color == c)
- shape[i].draw();
- }
- }
- double totalArea()
- {
- double sum = 0.0;
- for(int i = 0; i < n ; i++)
- {
- sum += shape[i].area;
- }
- return sum;
- }
- Canvas getHalfCanvas()
- {
- Canvas copy (*this);
- for (int i=0;i<copy.n;i++)
- {
- copy.shape[i].reduceArea();
- }
- return copy;
- }
- };
- int main ()
- {
- int n;
- cin>>n;
- //cout<<n;
- cout<<"ADITION OF SHAPES IN THE CANVAS"<<endl;
- Canvas canvas;
- for (int i=0; i<n; i++)
- {
- char id [5];
- int color;
- double area;
- cin>>id>>color>>area;
- //cout<<id<<color<<area<<n<<endl;
- Shape s (id, (Color) color, area);
- //s.draw();
- cout<<endl;
- canvas.addShape(s);
- //s.draw();
- }
- cout<<"TESTING DRAW ALL"<<endl;
- canvas.drawAll();
- cout<<"TESTING DRAW RED SHAPES"<<endl;
- canvas.drawOnly(RED);
- cout<<"TESTING TOTAL AREA"<<endl;
- cout<<canvas.totalArea()<<endl;
- cout<<"TESTING HALF CANVAS"<<endl;
- Canvas reducedCanvas = canvas.getHalfCanvas();
- cout<<canvas.totalArea()<<" "<<reducedCanvas.totalArea()<<endl;
- if (reducedCanvas.totalArea() == canvas.totalArea())
- {
- cout<<"DO NOT CHANGE THE AREA OF THE OBJECT IN THE CURRENT CANVAS. JUST IN THE NEW CANVAS"<<endl;
- }
- return 0;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement