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

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

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

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

Решение:

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

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

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

Рассылка новых уроков по программированию:

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

Об авторе Olej

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

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

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