Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
29 / 29 / 0
Регистрация: 31.01.2020
Сообщений: 181

Подбор мелодии

19.11.2020, 17:56. Показов 4701. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Теперь составим из нот мелодию.

Создайте класс Melody, который будет моделировать процесс подбора мелодии. Для этого нужно уметь:
преобразовывать мелодию в строку, записывая ноты через запятую, первая нота с заглавной буквы,
добавлять ноту в конец уже имеющейся мелодии — метод append,
заменять последнюю ноту другой — метод replace_last (без проверки её существования),
удалять последнюю ноту — remove_last (также без проверки),
начинать всё с начала (стирать все ноты) — метод clear,
возвращать длину мелодии (количество нот в ней) при вызове функции len от неё,
а также транспонировать всю мелодию вверх или вниз (сдвиги
>
>
и
<
<
), если это удаётся сделать внутри одной октавы (без циклического сдвига), если же хотя бы одна нота выходит за пределы октавы, возвращать копию исходной мелодии.
Используйте те же константы, что и для предыдущей задачи (тестирующая система будет импортировать их из вашего кода):
Python
1
2
3
4
N = 7  
PITCHES = ["до", "ре", "ми", "фа", "соль", "ля", "си"]  
LONG_PITCHES = ["до-о", "ре-э", "ми-и", "фа-а", "со-оль", "ля-а", "си-и"]  
INTERVALS = ["прима", "секунда", "терция", "кварта", "квинта", "секста", "септима"]
Формат ввода
Каждый тест представляет собой код, в котором будут использоваться ваши классы.
Пример 1
Ввод Вывод
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from solution import (
    Note, Melody,
    N, PITCHES,
    LONG_PITCHES, INTERVALS,    
)
 
melody = Melody([Note('фа'), Note('ми'), Note('ре'), Note('до'), Note('ля')])
print(melody)
melody.replace_last(Note('си', True))
print(melody)
melody.remove_last()
print(melody)
melody.append(Note('соль', True))
melody.append(Note('соль', True))
print(melody)
Фа, ми, ре, до, ля
Фа, ми, ре, до, си-и
Фа, ми, ре, до
Фа, ми, ре, до, со-оль, со-оль
Пример 2
Ввод Вывод
Python
1
2
3
4
5
6
7
8
9
10
11
from solution import (
    Note, Melody,
    N, PITCHES,
    LONG_PITCHES, INTERVALS,    
)
 
melody = Melody([Note('до'), Note('ми'), Note('соль', True)])
print(melody, len(melody))
print(Melody(), len(Melody()))
melody.clear()
print(melody, len(melody))
До, ми, со-оль 3
0
0
Пример 3
Ввод Вывод
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from solution import (
    Note, Melody,
    N, PITCHES,
    LONG_PITCHES,
    INTERVALS
)
 
melody = Melody([Note('ля'), Note('соль'), Note('ми'),  Note('до', True)])
print(melody)
print(Melody() >> 2)
melody_up = melody >> 1
melody_down = melody << 1
melody.replace_last(Note('соль'))
print('>> 1:', melody_up)
print('<< 1:', melody_down)
print(melody)
Ля, соль, ми, до-о

>> 1: Си, ля, фа, ре-э
<< 1: Ля, соль, ми, до-о
Ля, соль, ми, соль
Примечания
Дополнительное задание:
Попробуйте совместить свой класс Melody с классом Note одногруппника. С какими методами может возникнуть проблема и как этого лучше избежать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.11.2020, 17:56
Ответы с готовыми решениями:

Напишите программу, разделяющую мелодии разных видов лягушек
Напишите программу, разделяющую мелодии разных видов лягушек. К розовым лягушкам (Pink Frogs) относятся числа, кратные пяти или большие...

Создайте класс Melody, который будет моделировать процесс подбора мелодии
Условие задачи: Создайте класс Melody, который будет моделировать процесс подбора мелодии. Для этого нужно уметь: преобразовывать...

Подбор мелодии
здравствуйте, возникла проблема с задачей: Создайте класс Melody, который будет моделировать процесс подбора мелодии. Для этого нужно...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.11.2020, 17:56
Помогаю со студенческими работами здесь

Транспортировка мелодии вверх/вниз с п0мощью >>/<<
Есть класс Melody, который преобразует объекты класса Note в строку. При инициализации класса мелоди ему подается список из объектов класса...

Мелодии в программеКак в небольшие программы добавляют мелодии?
Как в небольшие программы добавляют мелодии? Что-то похожее на MIDI.

Мелодии
напишите пожалуйста функцию, в которую будет передаваться 2 параметра: имя ноты и ее длительность. Внутри самой функции задать массив с...

Ошибка в мелодии
Ребят вот такая проблема, должна играть мелодия а у меня или виснит или звук издается типа ультразвука (уши не переносят) - такая фигня...

Ошибка в мелодии
Ребят вот такая проблема, должна играть мелодия а у меня или виснит или звук издается типа ультразвука (уши не переносят) - такая фигня...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru