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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
AnGie
Сообщений: n/a
#1

Виртуальные функции и полиморфизм - C++

05.05.2013, 16:03. Просмотров 447. Ответов 1
Метки нет (Все метки)

Создать абстрактный базовый класс с виртуальной функцией - сумма прогрессии. Создать производные классы: арифметическая прогрессия и геометрическая прогрессия. Каждый класс имеет два поля типа double. Первое - первый член прогрессии, второе (double) - постоянная разность (для арифметической) и постоянное отношение (для геометрической). Определить функцию вычисления суммы, где параметром является количество элементов прогрессии.
Арифметическая прогрессия aj=a0+jd, j=0,1,2,…
Сумма арифметической прогрессии: sn=(n+1)(a0+an)/2
Геометрическая прогрессия: aj=a0rj, j=0,1,2,…
Сумма геометрической прогрессии: sn=(a0-anr)/(1-r)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2013, 16:03     Виртуальные функции и полиморфизм
Посмотрите здесь:

Полиморфизм, виртуальные функции, перегрузка функций - C++
Изменить программу предыдущей лабораторной работы, функцию определяющую бьет ли первая карта вторую, определитель в базовом классе как...

Полиморфизм, дружественные функции - C++
Всем привет! Имеется такая конструкция: class Base { public: Base(); Base(int n) {}; virtual ~Base() {};

Полиморфизм и вируальные функции - C++
Создайте простую иерархию геометричесих фигур, состоящую из базового класса Shape, и производных классов Circle, Bar и Triangle. Включите в...

Виртуальные функции - C++
Объясните пожалуйста зачем нужны чисто виртуальные функции?

Виртуальные функции. - C++
Приветствую всех. Дана такая программа (на самом деле она больше и сложнее, но структура и проблема те же): #include <iostream> ...

Виртуальные функции - C++
Объясните, для чего необходимы виртуальные функции. Где их рационально использовать. P.S. Если есть ссылки на толковые материалы - не...

виртуальные функции - C++
C++ подскажите пожалуста на словах код писать ненадо. как преопределить функцию virtual Print(). Создать абстрактный базовый класс...

виртуальные функции - C++
Помогите пожалуйста, создать абстрактный класс Shape с двумя чисто виртуальными методами Area() и Print(). Определить производные классы ...

Виртуальные функции - C++
Помогите пожалуйста написать задачу, никак не могу разобраться. Создайте класс Matr, определите в нем виртуальную функцию-член...

виртуальные функции - C++
Всем привет, помогите с исправлением функции #include<iostream.h> #include<conio.h> #include<string.h> enum...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
2918 / 1347 / 134
Регистрация: 29.11.2010
Сообщений: 2,721
05.05.2013, 16:29     Виртуальные функции и полиморфизм #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
#include <iostream>
#include <cmath>
 
class Progression {
 public:
  Progression(double first, double modifier) : first(first),
    modifier(modifier) {}
  double getFirst() const { return first; }
  double getModifier() const { return modifier; }
  void setFirst(double first) { this->first = first; }
  void setModifier(double modifier) { this->modifier = modifier; }
  virtual double getSum(size_t numberOfElements) const = 0;
 private:
  double first, modifier;
};
 
class ArithmeticProgression : public Progression {
 public:
  ArithmeticProgression(double first, double modifier)
    : Progression(first, modifier) {}
  virtual double getSum(size_t numberOfElements) const {
    return numberOfElements *
      (((2 * getFirst()) + (numberOfElements - 1) * getModifier()) / 2);
  }
};
 
class GeometricProgression : public Progression {
 public:
  GeometricProgression(double first, double modifier)
    : Progression(first, modifier) {}
  virtual double getSum(size_t numberOfElements) const {
    return (getFirst() * (1 - pow(getModifier(), numberOfElements))) /
      (1 - getModifier());
  }
};
 
int main(int argc, char *argv[]) {
  ArithmeticProgression a(0.1, 0.2);
  std::cout << a.getSum(5) << std::endl;
 
  GeometricProgression b(1, 2);
  std::cout << b.getSum(5) << std::endl;
  return 0;
}
Yandex
Объявления
05.05.2013, 16:29     Виртуальные функции и полиморфизм
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru