Question

Extend the code from Lab6.A template is given to you with CircleHeader.h, Circle.cpp and CircleMain.cpp Use...

Extend the code from Lab6.A template is given to you with CircleHeader.h, Circle.cpp and CircleMain.cpp Use the same Circle UML as below and make extensions as marked and as needed. Given below is a UML for the Painting Class. You will need to write PaintingHeader.h and Painting.cpp. The Painting Class UML contains a very basic skeleton. You will need to flesh out this UML and add more instance variables and methods as needed.

You do NOT need to write a driver. Use the one provided in the template. Name it PaintingMain.cpp

-----------------main.cpp-----------

#include
#include "Circle.h"
#include
#include
#include
#include
#include
#include
#include "Painting.h"
using namespace std;


int main(){
   shared_ptr circleOnePtr = make_shared(0,0,15);
   shared_ptr circleTwoPtr = make_shared(0,0,7);

   // < is the overloaded less than operator
   if (!(*circleOnePtr < circleTwoPtr))
      cout<<" Circle One is bigger "<    else
      cout<<" Circle Two is bigger "<

    Painting p("dataLab7.txt");
    cout<<"Printing Painting p"<     cout<     Painting q=p;
    cout<<"Printing Painting q"<     cout<     cout<<"Changing Painting q"<     q.setRadius(0,99);
    cout<<"Printing Painting p"<     cout<     cout<<"Printing Painting q"<     cout<   
   return 0;

}

--------------circle.h--------------

#include
#include
#include
#include
using namespace std;
#ifndef CIRCLE_H// this is optional
#define CIRCLE_H // works with or without it
class Circle{
//private
   static int count;
   int radius;
   int x,y;
public:
Circle();

-----------painting.cpp-----------

#include "Circle.h"
#include
#include

class Painting{
   vector> paintingVector;
   Painting(){
  
   }
public:
   //regular constructor
   Painting(string filename){
     ifstream inputFile(filename);
istringstream instream;
string data;
int count =0;
int x,y,radius;
try{
if (inputFile){
    while (!inputFile.eof()){
      getline(inputFile,data);
       istringstream instream(data);
       instream>>x;
       instream>>y;
       instream>>radius;
       shared_ptr circle = make_shared(x,y,radius);
       paintingVector.push_back(circle);
       count++;  

    }
  
   }
    else throw string("File Not Found");
}
catch (string message){
    cout<     exit(0);
}
}
public:
//returns a circle at the given index in the painting vector
shared_ptr getCircle(int index) const{
return paintingVector[index];
}
//gets the size of the painting vector
int getSize()const{
return paintingVector.size();
}
//copy constructor for the Painting Class
Painting(const Painting &other) {
   // ****write this code
}


//returns a string containing the painting vector
string toString(){
//****write this code
}
void setRadius(int index,int radius ){
paintingVector[index]->setRadius(radius);
}
~Painting(){
    //delete paintingVector;
}
};

--------------------painting.h-----------

#include "Circle.h"
#include
#include

class Painting{
   vector> paintingVector;
   Painting();
public:
   //regular constructor
   Painting(string filename){
     ifstream inputFile(filename);

public:
//try to remove const and see what happens
shared_ptr getCircle(int index) const{
return paintingVector[index];
}
//try to remove const and see what happens
int getSize()const;

//copy constructor for the Painting class
Painting(const Painting &other);

}
//return a string of the painting
string toString();

void setRadius(int index,int radius ){
paintingVector[index]->setRadius(radius);
}
//destructor
~Painting(){
    //delete paintingVector;
}
};

Circle(int xcoord,int ycoord, int r);
Circle(const shared_ptr &other);
int getY();
int getX();
int getRadius();
static int getCount();
double getArea();
double getCircumference();
double getDistance(Circle other);
bool intersects(Circle other);
Circle resize(int scale);//to copy self to other;
void resize(double scale);//for self

void setX(int xcoord);
void setY(int xcoord);
void setRadius(int r);
bool greaterThan(shared_ptr other);
bool operator<(shared_ptr other);
string toString();
~Circle();
//regular functions
//void inputData(vector);
};

#endif

-------------circle.cpp-----------------

//#include
//#include // no need for this as is in header
#include "Circle.h"
#include
#include


Circle::Circle(){
//if you have regular constructor you must
//define default constructor
//C++ will not auto create for you
x=0;
y=0;
radius=1;
count++;
}
Circle::Circle(int xcoord,int ycoord, int r){
      x=xcoord;
      y=ycoord;
      radius=r;
      count++;
   }

//copy constructor for the Circle Class
//************* Examine this code ********

Circle::Circle( const shared_ptr &other){
   shared_ptr temp = make_shared();
   temp->setX(other->getX());
   temp->setY(other->getY());
   temp->setRadius(other->getRadius());
   x=temp->getX();
   y=temp->getY();
   radius=temp->getRadius();
}
int Circle::getX(){
      return x;
   }
   int Circle::getY(){
      return y;
   }

   int Circle::getRadius(){
      return radius;
   }
   int Circle::getCount(){
     return count;
   }
void Circle::setX(int xcoord){
       x=xcoord;
}
void Circle::setY(int xcoord){
       x=xcoord;
}
void Circle::setRadius(int r){
       radius=r;
}
double Circle::getArea(){
    return M_PI*pow(radius,2);
}
double Circle::getCircumference(){
    return M_PI*radius/2;
}
double Circle::getDistance(Circle other){
       return sqrt(pow(x-other.getX(),2)+pow((y-other.getY()),2));
}
bool Circle::intersects(Circle other){
    return (this->getDistance(other)<=radius);
}
void Circle::resize(double scale){
    radius = scale*radius;
}
Circle Circle::resize(int scale){
    Circle c(x,y,radius*scale);
    return c;
}
string Circle::toString(){
    return "(" +to_string(x)+","+to_string(y)+"):"+to_string(radius);
}
bool Circle::greaterThan(shared_ptr other){
    return radius>other->getRadius();
}
bool Circle::operator< (shared_ptr other){
    return this->radius< other->getRadius();
}
Circle::~Circle(){

}
int Circle::count=0;

DataLab7.txt

0 0 4
0 0 12
-2 -9 11
4 5 7
7 8 9
2 -5 11

The output

circle one is bigger
Printing Painting p
[ (0,0):4 (0,0):12 (-2,-9):11 (4,5):7 (7,8):9 (2,-5):11 ]
printing Painting q
[ (0,0):4 (0,0):12 (-2,-9):11 (4,5):7 (7,8):9 (2,-5):11 ]
changing Painting q
printing Painting p
[ (0,0):4 (0,0):12 (-2,-9):11 (4,5):7 (7,8):9 (2,-5):11 ]
printing Painting q
[ (0,0):99 (0,0):12 (-2,-9):11 (4,5):7 (7,8):9 (2,-5):11 ]

0 0
Add a comment Improve this question Transcribed image text
Answer #1

///////////////////////////////////// Circle.h

#pragma once
#include<string>
#include <vector>
#include <memory>
#include<iostream>
using namespace std;
#ifndef CIRCLE_H
#define CIRCLE_H
class Circle {
   static int count;
   int radius;
   int x, y;
public:
   Circle();
   Circle(int xcoord, int ycoord, int r);
   Circle(const shared_ptr<Circle> &other);
   int getY();
   int getX();
   int getRadius();
   static int getCount();
   double getArea();
   double getCircumference();
   double getDistance(Circle other);
   bool intersects(Circle other);
   Circle resize(int scale);
   void resize(double scale);
   void setX(int xcoord);
   void setY(int xcoord);
   void setRadius(int r);
   bool greaterThan(shared_ptr<Circle> other);
   bool operator<(shared_ptr<Circle> other);
   string toString();
   ~Circle();
};

#endif

/////////////////////////////////////   Circle.cpp

#define _USE_MATH_DEFINES

#include "Circle.h"
#include <cmath>
#include <iostream>
using namespace std;

Circle::Circle()
{
   x = 0;
   y = 0;
   radius = 1;
   count++;
}
Circle::Circle(int xcoord, int ycoord, int r)
{
   x = xcoord;
   y = ycoord;
   radius = r;
   count++;
}
Circle::Circle(const shared_ptr<Circle> &other)
{
   shared_ptr<Circle> temp = make_shared<Circle>();
   temp->setX(other->getX());
   temp->setY(other->getY());
   temp->setRadius(other->getRadius());
   x = temp->getX();
   y = temp->getY();
   radius = temp->getRadius();
}
int Circle::getX() {
   return x;
}
int Circle::getY() {
   return y;
}

int Circle::getRadius() {
   return radius;
}
int Circle::getCount() {
   return count;
}
void Circle::setX(int xcoord) {
   x = xcoord;
}
void Circle::setY(int xcoord) {
   x = xcoord;
}
void Circle::setRadius(int r) {
   radius = r;
}
double Circle::getArea() {
   return M_PI*pow(radius, 2);
}
double Circle::getCircumference() {
   return M_PI*radius / 2;
}
double Circle::getDistance(Circle other) {
   return sqrt(pow(x - other.getX(), 2) + pow((y - other.getY()), 2));
}
bool Circle::intersects(Circle other) {
   return (this->getDistance(other) <= radius);
}
void Circle::resize(double scale) {
   radius = scale*radius;
}
Circle Circle::resize(int scale) {
   Circle c(x, y, radius*scale);
   return c;
}
string Circle::toString() {
   return "(" + to_string(x) + "," + to_string(y) + "):" + to_string(radius);
}
bool Circle::greaterThan(shared_ptr<Circle> other) {
   return radius>other->getRadius();
}
bool Circle::operator< (shared_ptr<Circle> other) {
   return this->radius< other->getRadius();
}
Circle::~Circle() {

}
int Circle::count = 0;

/////////////////////////////////////   Painting.h

#pragma once
#include "Circle.h"
#include <fstream>
#include <sstream>
#include <string>


class Painting {
   vector<shared_ptr<Circle>> paintingVector;
   Painting();
public:
   Painting(string filename);
   shared_ptr<Circle> getCircle(int index) const;
   int getSize()const;
   Painting(const Painting &other);

   string toString();
   void setRadius(int index, int radius);
   ~Painting();
};

/////////////////////////////////////   Painting.cpp

#pragma once
#include "Circle.h"
#include"Painting.h"
#include <fstream>
#include <sstream>

using namespace std;


Painting::Painting(string filename) {
   ifstream inputFile(filename);
   istringstream instream;
   string data;
   int count = 0;
   int x, y, radius;


   try {
       if (inputFile.fail() == false) {
           while (!inputFile.eof()) {
               getline(inputFile, data);
               istringstream instream(data);
               instream >> x;
               instream >> y;
               instream >> radius;

               shared_ptr<Circle> circle = make_shared<Circle>(x, y, radius);
               paintingVector.push_back(circle);
               count++;

           }

       }
       else throw string("File Not Found");
   }
   catch (string message) {
       cout << message << endl;
       exit(0);
   }
}
shared_ptr<Circle> Painting::getCircle(int index) const {
   return paintingVector[index];
}
int Painting::getSize()const {
   return paintingVector.size();
}
Painting::Painting(const Painting &other) {
   // get vector size
   int n = other.getSize();
   // clear vector content
   paintingVector.clear();

   for (int i = 0;i < n;i++) {
       int x = other.getCircle(i)->getX();
       int y = other.getCircle(i)->getY();
       int radius = other.getCircle(i)->getRadius();
       // new object create
       shared_ptr<Circle> circle = make_shared<Circle>(x, y, radius);
       // add in vector
       paintingVector.push_back(circle);
   }
}


string Painting::toString() {
   string result = "[";

   for (shared_ptr<Circle> s_vector : paintingVector)
   {
       result += s_vector->toString();
       result += " ";
   }

   result += "]";
   return result;
}
void Painting::setRadius(int index, int radius) {
   paintingVector[index]->setRadius(radius);
}
Painting::~Painting() {
   //delete paintingVector;
}

///////////////////////////////////// main.cpp

#include<iostream>
#include "Circle.h"
#include <fstream>
#include <vector>
#include <memory>
#include<cstdlib>
#include <fstream>
#include <sstream>
#include "Painting.h"
using namespace std;


int main() {
   shared_ptr<Circle> circleOnePtr = make_shared<Circle>(0, 0, 15);
   shared_ptr<Circle> circleTwoPtr = make_shared<Circle>(0, 0, 7);

   // < is the overloaded less than operator
   if (!(*circleOnePtr < circleTwoPtr))
       cout << " Circle One is bigger " << endl;
   else
       cout << " Circle Two is bigger " << endl;

   Painting p("dataLab7.txt");
   cout << "Printing Painting p" << endl;
   cout << p.toString() << endl;
   Painting q = p;
   cout << "Printing Painting q" << endl;
   cout << q.toString() << endl;
   cout << "Changing Painting q" << endl;
   q.setRadius(0, 99);
   cout << "Printing Painting p" << endl;
   cout << p.toString() << endl;
   cout << "Printing Painting q" << endl;
   cout << q.toString() << endl;

   system("pause");
   return 0;

}

/////////////////////////////////////

dataLab7 File Edit Format V 004 0 0 12 -2-9 11 457 7 8 9 2-5 11

Circle One is bigger Printing Painting p [(0,0):4 (0,0):12 (-2,-9):11 (4,5):7 (7,8):9 (2,-5):11 ] Printing Painting a [(0,0):

Circle One is bigger Printing Painting p [(0,0):4 (0,0):12 (-2,-9):11 (4,5):7 (7,8):9 (2,-5):11 ] Printing Painting a [(0,0):

Add a comment
Know the answer?
Add Answer to:
Extend the code from Lab6.A template is given to you with CircleHeader.h, Circle.cpp and CircleMain.cpp Use...
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
  •     class Circle    {    public:        enum Color {UNDEFINED, BLACK, BLUE, GREEN, CYAN,...

        class Circle    {    public:        enum Color {UNDEFINED, BLACK, BLUE, GREEN, CYAN, RED};        Circle(int = 0, int = 0, double = 0.0, Color = UNDEFINED);        void setX(int);        void setY(int);        void setRadius(double);        void setColor(Color);        int getX() const;        int getY() const;        double getRadius() const;        Color getColor() const;           private:        int x;        int y;   ...

  • #include <iostream> using namespace std; class Circle{ // private member variable named radius private: double radius;...

    #include <iostream> using namespace std; class Circle{ // private member variable named radius private: double radius; // get function for radius public: double getRadius(){ return radius; } // set function for radius void setRadius(double rad){ radius=rad; } // returning area = 3.14159 * radius * radius double getArea(){ return (3.14159 * radius * radius); } }; // Sample run int main() { // Declaring object of Circle Circle myCircle; myCircle.setRadius(5); // printing radius of circle cout<<"Radius of circle is: "<<(myCircle.getRadius())<<endl;...

  • Create a class named Circle with fields named radius, diameter, and area. Include a constructor that...

    Create a class named Circle with fields named radius, diameter, and area. Include a constructor that sets the radius to 1 and calculates the other two values. Also include methods named setRadius() and getRadius(). The setRadius() method not only sets the radius, but it also calculates the other two values. (The diameter of a circle is twice the radius, and the area of a circle is pi multiplied by the square of the radius. Use the Math class PI constant...

  • /* FILE: ./shapes7/shape.h */ #include <iostream> using std::ostream; class shape{ int x,y; public: shape( ) {...

    /* FILE: ./shapes7/shape.h */ #include <iostream> using std::ostream; class shape{ int x,y; public: shape( ) { x=y=0;} shape(int xvalue, int yvalue); void setShape(int new_x, int new_y); void setX(int new_x); void setY(int new_y); int getX( ) const; int getY( ) const; virtual void move(int x, int y) = 0; virtual void shift(int dx, int dy) = 0; virtual void draw( ) = 0; virtual void rotate(double r) = 0; virtual void print(ostream&)const; friend ostream & operator<<(ostream & os, const shape& s);...

  • Please help fix my code C++, I get 2 errors when running. The code should be...

    Please help fix my code C++, I get 2 errors when running. The code should be able to open this file: labdata.txt Pallet PAG PAG45982IB 737 4978 OAK Container AYF AYF23409AA 737 2209 LAS Container AAA AAA89023DL 737 5932 DFW Here is my code: #include <iostream> #include <string> #include <fstream> #include <vector> #include <cstdlib> #include <iomanip> using namespace std; const int MAXLOAD737 = 46000; const int MAXLOAD767 = 116000; class Cargo { protected: string uldtype; string abbreviation; string uldid; int...

  • A library maintains a collection of books. Books can be added to and deleted from and...

    A library maintains a collection of books. Books can be added to and deleted from and checked out and checked in to this collection. Title and author name identify a book. Each book object maintains a count of the number of copies available and the number of copies checked out. The number of copies must always be greater than or equal to zero. If the number of copies for a book goes to zero, it must be deleted from the...

  • Need to implement Account.cpp and AccountManager.cpp code //Account.hpp #ifndef _ACCOUNT_HPP_ #define _ACCOUNT_HPP_ #include <string> using std::string;...

    Need to implement Account.cpp and AccountManager.cpp code //Account.hpp #ifndef _ACCOUNT_HPP_ #define _ACCOUNT_HPP_ #include <string> using std::string; class Account { public: Account(); Account(string, double); void deposit(double); bool withdraw(double); string getName() const; double getBalance() const; private: string name; double balance; }; #endif ////////////////////////////////////////////// //AccountManager.hpp #ifndef _ACCOUNT_MANAGER_HPP_ #define _ACCOUNT_MANAGER_HPP_ #include "Account.hpp" #include <string> using std::string; class AccountManager { public: AccountManager(); AccountManager(const AccountManager&); //copy constructor void open(string); void close(string); void depositByName(string,double); bool withdrawByName(string,double); double getBalanceByName(string); Account getAccountByName(string); void openSuperVipAccount(Account&); void closeSuperVipAccount(); bool getBalanceOfSuperVipAccount(double&) const;...

  • You are given a partial implementation of two classes. GroceryItem is a class that holds the...

    You are given a partial implementation of two classes. GroceryItem is a class that holds the information for each grocery item. GroceryInventory is a class that holds an internal listing of GroceryItems as well as the tax rate for the store. Your inventory could be 100 items it could be 9000 items. You won’t know until your program gets the shipment at runtime. For this you should use the vector class from the C++ standard library. I've completed the GroceryItem.h...

  • I am having trouble understanding how this code is able to use the contents of the...

    I am having trouble understanding how this code is able to use the contents of the header file. Can someone please provide comments in the main code to describe what is happening? (especially on the bool isNumber) THE MAIN CODE: #include<bits/stdc++.h> #include "MyCartesianPoint.h" #include <math.h> #include <iostream> using namespace std; bool isNumber(string s) {    if(!isdigit (s[0]))    {        if(s[0] != '-')        return false;               else if(s.length() == 1)        return false;...

ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT