Answer:
Aee explaination
Explanation:
1) class_circle.h
#include<iostream>
#include<cmath>
#include<iomanip>
#define PI 3.14159
using namespace std;
class circle
{
private:
double radius,xPos,yPos;
public:
double diameter();
double area();
double circumference();
double getRadius();
double getX();
double getY();
void setX(double x);
void setY(double y);
double distanceToOrigin();
bool intersect(const circle& otherCircle);
bool setRadius(double r);
};
class CircleDriver:public circle
{
private:
circle circ1;
circle circ2;
void obtainCircles();
void printCircleInfo();
public:
void run();
};
2) class_circle.cpp
#include "class_circle.h"
double circle::diameter()
{
return (radius * 2);
}
double circle::area()
{
return PI * radius * radius;
}
double circle::circumference()
{
return 2 * PI * radius;
}
double circle::distanceToOrigin()
{
return sqrt((xPos * xPos) + (yPos * yPos));
}
double circle::getRadius()
{
return radius;
}
double circle::getX()
{
return xPos;
}
double circle::getY()
{
return yPos;
}
void circle::setX(double x)
{
xPos = x;
}
void circle::setY(double y)
{
yPos = y;
}
bool circle::setRadius(double r)
{
if(r > 0)
{
radius = r;
return true;
}
else
{
radius = 0;
return false;
}
}
bool circle::intersect(const circle& otherCircle)
{
double dist1 = (radius - otherCircle.radius) * (radius - otherCircle.radius);
double dist2 = ((xPos - otherCircle.xPos) * (xPos - otherCircle.xPos)) + ((yPos - otherCircle.yPos)*(yPos - otherCircle.yPos));
double dist3 = (radius + otherCircle.radius) * (radius + otherCircle.radius);
if((dist1 <= dist2 ) && (dist2 <= dist3) && (dist1 < dist3))
return true;
else
return false;
}
void CircleDriver::obtainCircles()
{
double x,y,rad;
cout<<"Enter xPos yPos circle 1 :";
cin>>x>>y;
do
{
cout<<"\n\nEnter radius for circle 1 :";
cin>>rad;
}while(rad <= 0);
circ1.setX(x);
circ1.setY(y);
circ1.setRadius(rad);
cout<<"\n\nEnter xPos yPos circle 2 :";
cin>>x>>y;
do
{
cout<<"\n\nEnter radius for circle 2 :";
cin>>rad;
}while(rad <= 0);
circ2.setX(x);
circ2.setY(y);
circ2.setRadius(rad);
}
void CircleDriver::printCircleInfo()
{
cout<<setprecision(6)<<endl;
cout<<"\n\nInformation for Circle 1:"<<endl;
cout<<"location:( "<<circ1.getX()<<" ,"<<circ1.getY()<<" )"<<endl;
cout<<"diameter: "<<circ1.diameter()<<endl;
cout<<"area: "<<circ1.area()<<endl;
cout<<"circumference: "<<circ1.circumference()<<endl;
cout<<"distance from the origin: "<<circ1.distanceToOrigin()<<endl;
cout<<"\n\nInformation for Circle 2:"<<endl;
cout<<"location:( "<<circ2.getX()<<" ,"<<circ2.getY()<<" )"<<endl;
cout<<"diameter: "<<circ2.diameter()<<endl;
cout<<"area: "<<circ2.area()<<endl;
cout<<"circumference: "<<circ2.circumference()<<endl;
cout<<"distance from the origin: "<<circ2.distanceToOrigin()<<endl<<endl;
if(circ1.intersect(circ2))
cout<<"The circles intersect."<<endl;
else
cout<<"The circles does not intersect."<<endl;
}
void CircleDriver::run()
{
obtainCircles();
printCircleInfo();
}
3) main.cpp
#include "class_circle.h"
int main()
{
CircleDriver myDriver;
myDriver.run();
return(0);
}
Please refer below output for reference
Enter xPos yPos circle 1 :0.0 50.0
Enter radius for circle 1 :100.0
Enter xPos yPos circle 2 :50.0 0.0
Enter radius for circle 2 :100.0
Information for Circle 1:
location:( 0 ,50 )
diameter: 200
area: 31415.9
circumference: 628.318
distance from the origin: 50
Information for Circle 2:
location:( 50 ,0 )
diameter: 200
area: 31415.9
circumference: 628.318
distance from the origin: 50
The circles intersect.
Process returned 0 (0x0) execution time : 18.245 s
Press any key to continue.