Форум программистов, компьютерный форум CyberForum.ru

Создать абстрактный базовый класс Figure с виртуальной функцией Периметр. Создать производные классы Rectangle - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.63
mashkama
1 / 1 / 0
Регистрация: 26.10.2012
Сообщений: 61
19.05.2014, 14:49     Создать абстрактный базовый класс Figure с виртуальной функцией Периметр. Создать производные классы Rectangle #1
Создать абстрактный базовый класс Figure с виртуальной функцией -периметр.Создать производные классы Rectangle, Circle,Triangle,Rhomb в которых данная функция переопределена.В функции main определить массив указателей на абстрактный класс,которым присваиваются адреса различных объектов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2014, 14:49     Создать абстрактный базовый класс Figure с виртуальной функцией Периметр. Создать производные классы Rectangle
Посмотрите здесь:

Создать абстрактный базовый класс Figure C++
C++ Создать абстрактный базовый класс с виртуальной функцией
C++ Создать абстрактный класс с виртуальной функцией вычисления нормы и модуля; определить производные классы с собственными функциями
Создать абстрактный базовый класс с виртуальной функцией - Объем. Создать производные классы: Пирамида, Шар со своими функциями объема C++
C++ Создать абстрактный базовый класс с виртуальными функциями - площадь и периметр.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
jekmut
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 55
10.10.2014, 00:13     Создать абстрактный базовый класс Figure с виртуальной функцией Периметр. Создать производные классы Rectangle #2
Всем привет! Делаю задание по абстрактным классам. Проверьте, пожалуйста, что не так в этой задаче:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include<iostream>
#include<conio.h>
 
using namespace std;
 
class Figure
{
protected:
  double square;
  double perimeter;
public:
  Figure(double, double);
  virtual void SetSquare() = 0;
  virtual void SetPerimeter() = 0;
  virtual double GetSquare() const {return square;}
  virtual double GetPerimeter() const {return perimeter;}
};
 
Figure :: Figure(double square, double perimeter)
{
  Figure :: square = square;
  Figure :: perimeter = perimeter;
}
 
class Rectangle : public Figure
{
  int a, b;
public:
  Rectangle(double, double, int, int);
  void SetSquare();
};
 
Rectangle :: Rectangle(double square, double perimeter, int a, int b) : Figure(square, perimeter)
{
  Rectangle :: a = a;
  Rectangle :: b = b;
}
 
void Rectangle :: SetSquare()
{
  a = 5;
  b = 6;
  square = a * b;
  cout << square;
}
 
int main()
{
  
  getch();
  return 0;
}
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,171
Завершенные тесты: 1
10.10.2014, 10:52     Создать абстрактный базовый класс Figure с виртуальной функцией Периметр. Создать производные классы Rectangle #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Figure
{
public:
  virtual double GetPerimeter()=0;
};
 
class Rectangle : public Figure
{
  double a, b;
public:
  Rectangle(double, double);
  double GetPerimeter() {return (a+b)*2.0; }
};
 
Rectangle :: Rectangle(double a, double b)
{
   this->a = a;
   this->b = b;
}
int main()
{
   Figure* f=new Rectangle(10.0,20.0);
   cout<<f->GetPerimeter();
   return 0;
}
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
10.10.2014, 11:31     Создать абстрактный базовый класс Figure с виртуальной функцией Периметр. Создать производные классы Rectangle #4
Цитата Сообщение от zss Посмотреть сообщение
C++
1
2
Figure* f=new Rectangle(10.0,20.0); 
cout<<f.GetPerimetr();
C++
1
f->GetPerimetr();
jekmut
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 55
10.10.2014, 20:40     Создать абстрактный базовый класс Figure с виртуальной функцией Периметр. Создать производные классы Rectangle #5
Ребята, проблема с объектом
C++
1
Figure* f=new Rectangle(10.0,20.0);
Компилятор ругается:
cannot allocate an object of type `Rectangle'
because the following virtual functions are abstract:
virtual double Figure::GetPerimeter()
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
10.10.2014, 21:05     Создать абстрактный базовый класс Figure с виртуальной функцией Периметр. Создать производные классы Rectangle #6
jekmut, не реализовал GetPerimeter()
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2014, 21:04     Создать абстрактный базовый класс Figure с виртуальной функцией Периметр. Создать производные классы Rectangle
Еще ссылки по теме:

Создать иерархию классов Шахматная фигура – абстрактный класс, содержащий поле – цвет. Создать производные классы C++
Создать абстрактный базовый класс Number с виртуальной функцией - норма C++
C++ Создать абстрактный базовый класс и производные

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
jekmut
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 55
11.10.2014, 21:04     Создать абстрактный базовый класс Figure с виртуальной функцией Периметр. Создать производные классы Rectangle #7
Спасибо, работает! )

Добавлено через 23 часа 55 минут
Друзья, сделал задание полностью. Использовал наследование... Как мне переделать это же задание, воспользовавшись дружными (friend) классами и методами? Благодарю!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include<iostream>
#include<conio.h>
 
using namespace std;
 
class Figure
{
public:
  virtual double GetSquare() = 0;
  virtual double GetPerimeter() = 0;
};
 
class Rectangle : public Figure
{
protected:
  double a, b;
public:
  Rectangle(double, double);
  double GetSquare(){return a * b;}
  double GetPerimeter(){return (a + b) * 2.;}
};
 
Rectangle :: Rectangle(double a, double b)
{
  this -> a = a;
  this -> b = b;
}
 
class Circle : public Figure
{
  double r;
public:
  Circle(double);
  double GetSquare(){return (3.141592 * (r * r));}
  double GetPerimeter(){return (2 * 3.141592 * r);}
};
 
Circle :: Circle(double r)
{
  this -> r = r;
}
 
class Trapezium : public Rectangle
{
  double c, d, h;
public:
  Trapezium(double, double, double, double, double);
  double GetSquare(){return ((a + b) * h / 2);}
  double GetPerimeter(){return ( a + b + c + d);}
};
 
Trapezium :: Trapezium(double a, double b, double c, double d, double h) : Rectangle(a, b)
{
  this -> c = c;
  this -> d = d;
  this -> h = h;
}
 
int main()
{
  Figure *f = new Rectangle(10., 20.);
  cout << "Square of Rectangle: " << f -> GetSquare() << endl;
  cout << "Perimeter of Rectangle: " << f -> GetPerimeter() << endl << endl;
  
  f = new Circle(5.);
  cout << "Square of Circle: " << f -> GetSquare() << endl;
  cout << "Perimeter of Circle: " << f -> GetPerimeter() << endl << endl;
  
  f = new Trapezium(8., 6., 8., 12., 7.);
  cout << "Square of Trapezium: " << f -> GetSquare() << endl;
  cout << "Perimeter of Trapezium: " << f -> GetPerimeter() << endl;
  
  getch();
  return 0;
}
Yandex
Объявления
11.10.2014, 21:04     Создать абстрактный базовый класс Figure с виртуальной функцией Периметр. Создать производные классы Rectangle
Ответ Создать тему
Опции темы

Текущее время: 13:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru