Помогите с классами в C++
Помогите экзамен, нужно сделать такие задания до 18:00, что успеете пожалуйста.
1.Создать класс прямоугольник, члены класса - длины сторон a и b. Предусмотреть в классе методы вычисления и вывода сведений о фигуре – длины сторон, диагоналей, периметр, площадь.
2.Создать производный класс – параллелепипед с высотой с, добавить в класс метод определения объема фигуры, перегрузить методы расчета площади и вывода сведений о фигуре.
3.Написать программу, демонстрирующую работу с классом: дано N прямоугольников и M параллелепипедов, найти количество прямоугольников, у которых площадь больше средней площади прямоугольников и количество кубов (все ребра равны).
4.Перегрузить оператор деления для прямоугольника: оператор уменьшает длины сторон прямоугольника в целое число k.
template < class T > class Rectangle { public: T a, b; T A (void) const { return a; } T B (void) const { return b; } virtual T Diag (void) const { return (T) ::sqrt (a *a + b * b); } virtual T P (void) const { return 2 * (a + b); } virtual T S (void) const { return a * b; } };
template < class T > class Parallel : public Rectangle < T > { public: T c; T V (void) const { return a * b * c; } virtual T Diag (void) const { return (T) ::sqrt (a *a + b * b + c * c); } virtual T P (void) const { return 4 * (a + b + c); } virtual T S (void) const { return 2 * (a * b + (a + b) * c); } };
void main (void) { Rectangle < double > r [ N ]; Parallel < double > p [ M ]; /* заполнить r и p здесь */; double ss = 0; for (var i = N; --i >= 0; ) ss += r [ i ].S (); ss /= N; int cnt = 0; for (var i = N; --i >= 0; ) if (ss < r [ i ].S ()) ++cnt; ::printf ("3a: %d\n", cnt); cnt = 0; for (var i = M; --i >= 0; ) if (p [ i ].a == p [ i ].b && p [ i ].a == p [ i ].c) ++cnt; ::printf ("3b: %d\n", cnt); }
template < class T > Rectangle < T > operator / (const Rectangle < T > &X, int k) { Rectangle < T > r = { X.a / k, X.b / k }; return r; }