2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Перегрузить -, ввод, вывод
Сообщение10.04.2013, 22:35 
Добрый день!

Помогите пожалуйста!

Надо перегрузить :
Код:
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();
}

 
 
 
 Re: Перегрузить -, ввод, вывод
Сообщение11.04.2013, 01:00 
А в чём проблема, собственно? Не считая какой-то странной путаницы цилиндра с кольцом.

 
 
 
 Re: Перегрузить -, ввод, вывод
Сообщение11.04.2013, 15:19 
Kirill_Y в сообщении #708393 писал(а):
окружность наследует точку, являющуюся ее центром, цилиндр наследует окружность, являющуюся его основанием
Экзотическое задание. :roll:

-- Чт апр 11, 2013 18:23:35 --

Kirill_Y, чтобы перегрузить ввод и вывод, посмотрите, какие типы у cin и cout. Потом соберите типы получающихся operator>> и operator<<, учитывая, что они возвращают свой левый аргумент (иначе их нельзя было бы собирать в цепочки вида cout << 2 << " " << endl). Телом процедур будет кое-что из того, что у вас уже есть.

-- Чт апр 11, 2013 18:27:26 --

(И не надо было приводить (тем более весь целиком) код. Чтобы написать метод для класса, нужно знать не код, а способ получения этого кода.)

 
 
 [ Сообщений: 3 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group