10.01.2021
Новый выпуск журнала Автоматизация и Программирование.
08.12.2020
Новые видео и статья Таблицы в HTML.
03.12.2020
Новый выпуск журнала Автоматизация и Программирование.
15.11.2020
Новые видео и статья Процедура Str.
25.10.2020
Добавлен курс Как стать веб-разработчиком.
Сколько слайдов поместится в песню
Эта задача не очень сложная, но зато она может найти практическое применение. Суть в следующем. Моя жена любит создавать слайд-шоу и в качестве звукового сопровождения обычно ставит какую-нибудь песню. Сложность заключается в том, что подобрать время отображения одного слайда бывает непросто, потому что либо музыка заканчивается раньше, либо слайды уже закончились, а музыка ещё звучит.
Например, песня длится 3 минуты и 12 секунд (то есть 192 секунды). В презентации 23 слайда. Тогда время отображения каждого слайда должно быть:
192 / 23 = 8,34 секунды
Однако сложность заключается в том, что в программе PowerPoint, в которой жена делает презентации, нельзя установить для слайда время 8,34. Там можно устанавливать только целые значения. Например, 8 или 9 секунд. Но, если мы поставим для каждого слайда 8 секунд, то
8 * 23 = 184
То есть слайды закончатся раньше, чем музыкальное сопровождение, на 8 секунд. А это не очень хорошо будет смотреться.
Если же поставить для каждого слайда 9 секунд, то
9 * 23 = 207
В этом случае будет другая неприятность - музыка уже закончится, а слайды ещё будут показываться.
Есть следующие способы решения:
- Добавить или удалить слайды так, чтобы общее время показа было равно времени звучания песни.
- Увеличить или уменьшить время звучания нескольких слайдов так, чтобы общее время показа было равно времени звучания песни.
Например, в первом случае (см. выше), надо
- Либо добавить один слайд в презентацию и установить для него время показа 8 секунд.
- Либо для любых восьми слайдов увеличить время показа на одну секунду (либо для четырёх - на две и т.п.).
Однако подбор и расчёт, этих, казалось бы, простых вещей, отнимает время и силы. Поэтому я и решил написать программку, которая бы могла делать одно из следующих:
- Определять время показа одного слайда по заданному пользователем времени звучания песни и количеству слайдов. Если время звучания песни не делится без остатка на количество слайдов, то программа должна давать советы по решению этого вопроса (например, предлагать варианты: изменить время для нескольких слайдов или изменить количество слайдов).
- Определять количество слайдов по заданному пользователем времени звучания песни и времени показа одного слайда. Если в итоге не удаётся получить целое количество слайдов, то программа должна давать советы по решению этого вопроса (например, предлагать варианты: изменить время показа каждого или нескольких слайдов).
Пожалуй, все способы решения уже раскрыты. Осталось только выполнить всё это в виде исходного кода программы. Я сделаю это на Паскале и С++. Программа будет консольным приложением.
ПРИМЕЧАНИЕ
Программа относительно сложная, поэтому все сообщения она выводит на русском языке.
В консольных приложениях Lazarus это сделать не так просто. Есть несколько способов.
Я использовал вот этот.
Экраны см. ниже:

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

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

Рис. 3. Режим вычисления количества слайдов.
Конечно, программа далека от совершенства. Например, здесь не выполняются все нужные проверки. И если пользователь вместо цифры введёт букву, то программа завершится аварийно. Но это, если хотите, можете исправить сами. Я же не стал загромождать исходный код разными проверками на ошибки и защиту от дурака.
Исходные коды программ не привожу на странице, но вы можете
(ВНИМАНИЕ! На архиве будет пароль: 123)
А пока всё. Надеюсь, что эта задачка, а также сама программа, окажется вам полезной. Не забывайте делиться этой страницей в соц. сетях, а также подписывайтесь на канал в Ютубе и группу В Контакте:
Подписаться на канал в YouTube
Вступить в группу "Основы программирования" Подписаться на рассылки по программированию |
![]() |
Основы C++
C++ - это один из самых популярных языков программирования. Не важно, на каком языке программируете лично вы. Но, если вы хотя бы в общих чертах не знаете С++, то это большой пробел в вашем образовании, который надо восполнить как можно быстрее... Подробнее... |