Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Задачи по программированию / 08584_abramov_s_a_gnezdilova_g_g_kapustina_e_n_selyun_m_i_zadachi

.pdf
Скачиваний:
70
Добавлен:
27.04.2015
Размер:
6.04 Mб
Скачать

местоположение ферзя. Соответствующий элемент матрицы надо положить равным символу ф. Поля, находящиеся под угрозой ферзя, надо положить равными символу *, а остальные полясимволу 0. Решить аналогичную задачу для коня.

816. Преобразовать выражение (т. е. текст специального вида), составленное из цифр и знаков четырех арифметических операций (сложения, вычитания, умножения, деления), в постфиксную форму. В постфиксной форме сначала записываются операнды, а затем знак операции.

Примеры:

обычная запись

постфиксная запись

3+4

34+

(5 - 4) + 2

54 - 2 +

2*(3+4)*5

234+ *5*

817. Для большинства существительных, оканчивающихся на - онок и -енок, множественное число образуется от другой основы. Как правило, это происходит по образцу: цыпленок-цыплята, мышонокмышата и т. д. (в новой основе перед последней буквой т пишется а или я в зависимости от предыдущей буквы: если это шипящая, то а, иначе - я). Имеются слова-исключения, из которых укажем следующие: ребенок (дети), бесенок (бесенята), опенок (опята), звонок (звонки), позвонок (позвонки), подонок (подонки), колонок (колонки), жаворонок (жаворонки), бочонок (бочонки). Есть еще ряд малоупотребительных слов-исключений, которые мы не рассматриваем.

Дан текст, среди символов которого имеется пробел. Группа символов, предшествующая первому пробелу, представляет собой русское слово, оканчивающееся на -онок или -енок. Получить это слово во множественном числе.

818. Рассмотрим существительные мужского рода, оканчивающиеся на -ок: кружок, масленок, брелок и т. д. При склонении таких слов буква о может выступать как беглая гласная: кружка, масленком и т. д. При склонении некоторых таких слов гласная о, однако, сохраняется. Это, во-первых, слова из трех букв: ток, сок и т. д.; затем слова: скок, блок, волок, восток, шток и слова, основа которых оканчивается на такие сочетания букв (т. е. перескок, пищеблок, юго-восток и т. д.); наконец, имеется еще ряд слов, среди которых укажем следующие: брелок, щелок, войлок, челнок, зарок, срок, урок, знаток, поток, сток, артишок.

Дан текст, среди символов которого имеется пробел. Группа символов, предшествующая первому пробелу, представляет собой русское слово - существительное мужского оканчивающееся на -ок; после первого пробела идет одна из букв и, р, д, в, т, п, указывающая падеж (именительный, родительный, дательный, винительный,

творительный, предложный). Получить данное слово в указанном падеже.

819. Даны натуральное число n, символ s ( n ≤ 1000, s - одна из букв и, р, д, в, м, т, указывающая падеж - именительный, родительный, дательный, винительный, творительный, предложный). Записать количественное числительное, обозначающее n, в соответствующем падеже (эта задача обобщает задачу 810).

820. Как показывают многочисленные эксперименты, разбиение русского слова на части для переноса с одной строки на другую с большой вероятностью выполняется правильно, если пользоваться следующими простыми приемами *):

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

2)Две идущие подряд согласные можно разделить, если первой из них предшествует гласная, а в той части слова, которая идет за второй согласной, имеется хотя бы одна гласная (буквы ь, ъ вместе с предшествующей согласной рассматриваются как единое целое).

3)Если не удается применить пункты 1), 2), то следует попытаться разбить слово так, чтобы первая часть содержала более чем одну букву и оканчивалась на гласную, а вторая содержала хотя бы одну гласную.

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

Дан текст, являющийся русским словом. Выполнить разделение его на части для переноса.

*) Программа, реализующая эти приемы, была описана в [42].

821. Используя решение предыдущей задачи и задачи о выравнивании правого края страницы (задача 422), выполнить следующее. Даны натуральное число п и символьный файл, последовательность компонент которого представляет собой текст на русском языке. Абзац (красная строка) обозначен символом . Вывести этот текст строками длины n. Абзац начинать с трех пробелов.

§ 28. Календарь *)

*) При решении задач этого раздела принять во внимание, что в современном (григорианском) календаре каждый год, номер которого делится на 4, является високосным, за исключением тех номеров, которые делятся на 100 и не делятся на 400.

822.Дан номер года. Указать число дней в этом году.

823.Даны натуральные числа n, m ( n m ). Определить, сколько из чисел n, n+1, ..., m являются номерами високосных годов.

824.Даны натуральные числа a, b, c, которые обозначают число, месяц и год, например 1, 4, 1901 - 1 апреля 1901 года. Получить тройку чисел, соответствующих следующему дню.

825. Даны натуральные числа a1 , b1 , c1 , a2 , b2 , c2 , которые указывают две даты (число, месяц, год). Вычислить:

а) количество дней, прошедших между двумя этими датами;

б) количество полных лет, прошедших между двумя этими датами.

826. Даны натуральные числа a, b, c, которые обозначают число, месяц и год.

а) Проверить корректность этой даты (например, 30 февраля 1900 годанекорректная дата).

б) Найти номер этого дня с начала года.

в) Определить, сколько полных дней осталось до конца года. 827. Даны натуральные числа a, b, которые обозначают число и

месяц. На какой день недели приходится эта дата, если год - невисокосный, 1 января этого года - среда?

828. «Вечный календарь». Даны натуральные числа a, b, c, которые обозначают число, месяц и год. Определить день недели, на который падает указанная дата.

При решении этой и некоторых следующих задач можно считать, что исследуемая дата лежит в диапазоне от 1582 до 4902 гг. Как установлено (см. [56]), в этом случае номер дня недели (воскресенье имеет номер 0, понедельник - номер 1, ..., суббота - номер 6) равен остатку от деления на 7 значения выражения [2.6 m - 0.2] + d + y+ [y/4] + [c/4] - 2c, где d -номер дня в месяце (1, 2, ...); т- номер месяца в году, нумерация начинается с марта (март имеет номер 1, апрель - номер 2, ..., декабрь - номер 10, январь и февраль считаются месяцами с номерами 11 и 12 предыдущего года); y - две младшие цифры года (00, . . . , 99); c - две старшие цифры года (15, . . ., 49); [x] означает целую часть числа х.

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

829. Вычислить количество пятниц, приходящихся на 13-е

числа

а) XX столетия;

б) столетия с номером n, где n -данное натуральное число.

830. Даны натуральные числа a, b, c, обозначающие дату (число, месяц, год) по юлианскому календарю. Получить эту дату по современному календарю. Расхождение между датами определяется тем, что в юлианском календаре каждый год, номер которого делится на 4, является високосным, и из этого правила нет никаких исключений.

831. День учителя ежегодно отмечается в первое воскресенье октября. Дано натуральное число n, означающее номер года. Определить число, на которое в октябре указанного года приходится День учителя.