Задача: Класс «Геометрическая прогрессия»

Классы С++ могут создаваться для описания самых неожиданных сущностей реального мира. Создайте класс «геометрическая прогрессия», объекты которого:

  • отображали бы геометрическую прогрессию с заданным начальным членом и знаменателем;
  • по индексации позволяли получить значения члена прогрессии с любым порядковым номером;
  • позволяли получить сумму начальных N-членов прогрессии;

Дополните класс, возможно, другими полезными свойствами.

Решение:

Можно было бы, конечно, в качестве класса геометрической прогрессии хранить нужное число начальных членов ряда. Но это а). крайне расточительно и б). при таком представлении непонятно, какое число членов ряда хранить? Показанное же решение компактное и эффективное:

Особенностью решения является то, что при выполнении операции индексации (извлечения члена прогрессии) делается быстрое рекурсивное (алгоритм Хоара) возведение в степень знаменателя.

Параметром командной строки можно переопределить длину тестового массива, куда переписываются члены прогрессии:

Дата
Страница
Задача с решением: Класс
Рейтинг
5
Olej

Об авторе Olej

Стаж практических программных разработок около 40 лет. Преподаватель международной софтверной компании Global Logic. Постоянный автор публикаций IBM Developer Works. Научный редактор книжного издательства компьютерной литературы "Символ-Плюс", Санкт-Петербург.

Добавить комментарий

Код размещайте в тегах: <pre class="lang:c++ decode:true ">YOUR CODE</pre>