Добрый день! Помогите пожалуйста! Надо перегрузить :
Код:
float Kol::getIndicator()
{
return (M_PI*radius2*radius2)-(M_PI*getRadius()*getRadius());
}
и ввод , и вывод!
Вот код на всю программу(без перегруза):
Код:
/*Описать иерархию классов:
точка (целые координаты), окружность наследует точку,
являющуюся ее центром, цилиндр наследует окружность, являющуюся его основанием.
Реализовать методы: конструкторы классов без параметров, конструкторы классов с параметрами,
функции вывода значений закрытых полей данных, функции доступа к закрытым данным, виртуальные функции:
для класса точка возвращает нуль, для класса окружность возвращает ее длину,
для класса цилиндр вычисляет площадь его поверхности.*/
#include <iostream>
#include <math.h>
#include <fstream>
#include <conio.h>
using namespace std;
#define M_PI 3.14159265358979323846
class Point
{
public:
Point();
Point(int x, int y);//Конструктор с параметрами
void setX(int x);
void setY(int y);
int getX();//координаты х
int getY();//координаты у
virtual float getIndicator(); //Точка возвращает 0
private:
int x;
int y;
};
Point::Point()
{
x = 0;
y = 0;
}
Point::Point(int x1, int y1)
{
x = x1;
y = y1;
}
void Point::setX(int x1)
{
x = x1;
}
void Point::setY(int y1)
{
y = y1;
}
int Point::getX()
{
return x;
}
int Point::getY()
{
return y;
}
float Point::getIndicator()
{
return 0;
}
class Circle: public Point
{
public:
Circle();
Circle(Point p, int r);
Circle(int x, int y, int r);//Конструктор с параметрами
void setRadius(int r);//Конструктор с параметрами 2
int getRadius();//Радиус окружности
virtual float getIndicator();//Круг возвращает длину окружности
private:
int radius;
};
Circle::Circle()
{
}
Circle::Circle(int x1, int y1, int r)
: Point(x1, y1)
{
radius = r;
}
Circle::Circle(Point p, int r)
: Point(p.getX(), p.getY())
{
radius = r;
}
void Circle::setRadius(int r)
{
radius = r;
}
int Circle::getRadius()
{
return radius;
}
float Circle::getIndicator()
{
return radius*M_PI*2.0;
}
class Kol: public Circle
{
public:
Kol();
Kol(int x, int y, int r, int rr);//Конструктор с параметрами
Kol(Circle c, int rr);//Конструктор с параметрами 2
void setRadius2(int rr);
int getRadius2();//Высота цилиндра
virtual float getIndicator();//Цилиндр возвращает площадь поверхности
private:
int radius2;
};
Kol::Kol()
{
}
Kol::Kol(int x1, int y1, int r, int rr)
: Circle(x1, y1, r)
{
radius2 = rr;
}
Kol::Kol(Circle c, int rr)
: Circle(c.getX(), c.getY(), c.getRadius())
{
radius2 = rr;
}
void Kol::setRadius2(int rr)
{
radius2 = rr;
}
int Kol::getRadius2()
{
return radius2;
}
float Kol::getIndicator()
{
return (M_PI*radius2*radius2)-(M_PI*getRadius()*getRadius());
}
void Show(Point p, Circle c, Kol k)
{
cout<<p.getIndicator()<<" - возврат нуля"<<endl;
cout<<c.getIndicator()<<" - длина круга"<<endl;
cout<<k.getIndicator()<<" - площадь кольца"<<endl;
}
void main()
{
setlocale (LC_ALL, "Russian");
int x1, y1, r1, rr;
Point p;
Circle circle;
Kol kol;
cout<<"-------------------"<<endl;
cout<<"Координаты точки:"<<endl;
cout<<"X1= "; cin>>x1;
cout<<"Y1= "; cin>>y1;
cout<<"-------------------"<<endl;
cout<<"Радиус:"<<endl;
cout<<"R1= "; cin>>r1;
cout<<"-------------------"<<endl;
cout<<"R2 ( R2 > R1 )= "; cin>>rr;
cout<<"-------------------"<<endl;
Point t(1, 2);
Circle K(t, 4);
Kol Kol(K, rr);
Show(t, K, Kol);
getch();
}