 MUZSPLIT
| Описание С точки зрения программиста нотная запись состоит из последовательности нот, каждой из которых соответствует один звук музыкальной темы. Hота, как выражение звука, имеет высоту и длительность. Возможны следующие длительности нот: 1-базовая длительность (зависит от темпа мелодии); 1/2, 1/4, 1/8, 1/16, 1/32, 1/64, 1/128 -являются соответствующими долями базовой длительности В нотной записи принято разделять последовательность нот на такты. Продолжительность такта определяется его размером Hапример: размер 4/4 означает, что такт содержит четыре ноты длительности 1/4 или одну ноту 1. Допустимы следующие размеры такта: 2/4, 3/4, 4/4, 5/4, 3/86, 6/8. Существуют и другие (довольно экзотические) размеры, но в этой задачи они не используются Задача Требуется создать программу MUZSPLIT, которая по размеру такта и последовательности нот выводит эту последовательность, разбитую на такты в соответствии с указанным размером. Если нота не умещается в такте, остаток размещается в следующем такте. В том случае, когда при разбиении получается нота нестандартной длительности, нужно разбить и ее на минимальное количество нот стандартной длительности в порядке возрастания длительности. Длительность всей последовательности нот кратна размеру такта Формат входных данных Входной файл MUZSPLIT.IN содержит последовательность строк. В первой строке - размер такта, для задания которого используется цепочка литер, обозначающая размер: "2/4", "3/4" и т.д. Во второй и последующих строках последовательность цепочек литер, обозначающих ноты ("1/2", "1/4", и т.д.), разделенных пробелами и/или символами перевода строки. Длинна исходной последовательности не превышает 1000 нот Формат выходных данных Выходные данные помещаются в файл MUZSPLIT.OUT, в каждой строке которого должна содержаться последовательность литералов, обозначающих ноты, соответствующие одному такту (по строке на такт) Например:
MUZSPLIT.IN 4/4 1/2 1/4 1/2 1/2 1/4 MUZSPLIT.OUT 1/2 1/4 1/4 1/4 1/2 1/4
|
|---|