2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Перегрузить -, ввод, вывод
Сообщение10.04.2013, 22:35 


10/04/13
1
Добрый день!

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

Надо перегрузить :
Код:
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 
Заслуженный участник


16/02/13
4196
Владивосток
А в чём проблема, собственно? Не считая какой-то странной путаницы цилиндра с кольцом.

 Профиль  
                  
 
 Re: Перегрузить -, ввод, вывод
Сообщение11.04.2013, 15:19 
Заслуженный участник


27/04/09
28128
Kirill_Y в сообщении #708393 писал(а):
окружность наследует точку, являющуюся ее центром, цилиндр наследует окружность, являющуюся его основанием
Экзотическое задание. :roll:

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

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

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

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group