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

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

Восстановить пароль Регистрация
 
AnGie
Сообщений: n/a
05.05.2013, 16:03     Виртуальные функции и полиморфизм #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++
C++ виртуальные и чисто виртуальные функции
полиморфизм,виртуальные функции, перезагрузка ф-ции C++
Полиморфизм и вируальные функции C++
C++ Полиморфизм, дружественные функции
Виртуальные функции C++
C++ Написать реферат за пару часов на тему "Наследование, виртуальные функции и динамический полиморфизм"

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
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     Виртуальные функции и полиморфизм
Ответ Создать тему
Опции темы

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