Согласие на обработку персональных данных.

11.11.2018
Новые видео и статья Как изменить цвет фона в HTML.

07.11.2018
Новый выпуск журнала Автоматизация и программирование.

27.10.2018
Новые видео и статья Процедура ChDir.

24.10.2018
Новые видео и статья Как уменьшить размер программы в FreePascal.

19.10.2018
Новая задача Найти наименьший элемент массива.



Раздел: Задачи / Этюды /

Сколько слайдов поместится в песню

Эта задача не очень сложная, но зато она может найти практическое применение. Суть в следующем. Моя жена любит создавать слайд-шоу и в качестве звукового сопровождения обычно ставит какую-нибудь песню. Сложность заключается в том, что подобрать время отображения одного слайда бывает непросто, потому что либо музыка заканчивается раньше, либо слайды уже закончились, а музыка ещё звучит.

Например, песня длится 3 минуты и 12 секунд (то есть 192 секунды). В презентации 23 слайда. Тогда время отображения каждого слайда должно быть:

192 / 23 = 8,34 секунды

Однако сложность заключается в том, что в программе PowerPoint, в которой жена делает презентации, нельзя установить для слайда время 8,34. Там можно устанавливать только целые значения. Например, 8 или 9 секунд. Но, если мы поставим для каждого слайда 8 секунд, то

8 * 23 = 184

То есть слайды закончатся раньше, чем музыкальное сопровождение, на 8 секунд. А это не очень хорошо будет смотреться.

Если же поставить для каждого слайда 9 секунд, то

9 * 23 = 207

В этом случае будет другая неприятность - музыка уже закончится, а слайды ещё будут показываться.

Есть следующие способы решения:

  1. Добавить или удалить слайды так, чтобы общее время показа было равно времени звучания песни.
  2. Увеличить или уменьшить время звучания нескольких слайдов так, чтобы общее время показа было равно времени звучания песни.

Например, в первом случае (см. выше), надо

  1. Либо добавить один слайд в презентацию и установить для него время показа 8 секунд.
  2. Либо для любых восьми слайдов увеличить время показа на одну секунду (либо для четырёх - на две и т.п.).

Однако подбор и расчёт, этих, казалось бы, простых вещей, отнимает время и силы. Поэтому я и решил написать программку, которая бы могла делать одно из следующих:

  1. Определять время показа одного слайда по заданному пользователем времени звучания песни и количеству слайдов. Если время звучания песни не делится без остатка на количество слайдов, то программа должна давать советы по решению этого вопроса (например, предлагать варианты: изменить время для нескольких слайдов или изменить количество слайдов).
  2. Определять количество слайдов по заданному пользователем времени звучания песни и времени показа одного слайда. Если в итоге не удаётся получить целое количество слайдов, то программа должна давать советы по решению этого вопроса (например, предлагать варианты: изменить время показа каждого или нескольких слайдов).

Пожалуй, все способы решения уже раскрыты. Осталось только выполнить всё это в виде исходного кода программы. Я сделаю это на Паскале и С++. Программа будет консольным приложением.

ПРИМЕЧАНИЕ
Программа относительно сложная, поэтому все сообщения она выводит на русском языке. В консольных приложениях Lazarus это сделать не так просто. Есть несколько способов. Я использовал вот этот.

Экраны см. ниже:

Рис. 1. Главный экран.
Рис. 1. Главный экран.

Рис. 2. Режим вычисления времени показа одного слайда в презентации.
Рис. 2. Режим вычисления времени показа одного слайда в презентации.

Рис. 3. Режим вычисления количества слайдов.
Рис. 3. Режим вычисления количества слайдов.

Конечно, программа далека от совершенства. Например, здесь не выполняются все нужные проверки. И если пользователь вместо цифры введёт букву, то программа завершится аварийно. Но это, если хотите, можете исправить сами. Я же не стал загромождать исходный код разными проверками на ошибки и защиту от дурака.

Исходные коды программ не привожу на странице, но вы можете

>>> скачать исходные коды на Паскале и С++ >>>
(ВНИМАНИЕ! На архиве будет пароль: 123)

А пока всё. Надеюсь, что эта задачка, а также сама программа, окажется вам полезной. Не забывайте делиться этой страницей в соц. сетях, а также подписывайтесь на канал в Ютубе и группу В Контакте:


Основы C++ Основы C++

C++ - это один из самых популярных языков программирования. Не важно, на каком языке программируете лично вы. Но, если вы хотя бы в общих чертах не знаете С++, то это большой пробел в вашем образовании, который надо восполнить как можно быстрее... Подробнее...
Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика