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

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

Основы программирования 2.0 Основы программирования
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее...

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

Например, песня длится 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)

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


Как стать программистом 2.0 Как стать программистом 2.0

Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее...
Помощь в технических вопросах Помощь в технических вопросах

Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее...

Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

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