Текст
                    Учебные пособия издательства «Легион» допущены к использованию в
образовательном процессе приказом Минобрнауки России № 729 от 14.12.2009
Учебно-методический комплекс
«Информатика и ИКТ. Подготовка к ЕГЭ»
Л.Н.Евич
ИНФОРМАТИКА И ИКТ
ПОДГОТОВКА
К ЕГЭ
Сборник задач по
программированию
Учебно-методическое пособие
Издание второе, исправленное и дополненное
тм
/Л
ЛЕГИОН
Ростов-на-Дону
2014


ББК 74.263.2 Е 16 Рецензент: Л. С. Ковалевская — инженер-программист Евич Л. Н. Е 16 Информатика и ИКТ. Подготовка к ЕГЭ. Сборник задач по про¬ граммированию. Изд. 2-е, исп. и доп. / Под ред. С. Ю. Кулабу- хова. — Ростов-на-Дону: Легион, 2014. — 144 с. — (Готовимся к ЕГЭ) 15ВЫ 978-5-9966-0373-2 Предлагаемое пособие предназначено для подготовки к ЕГЭ по информати¬ ке и ИКТ и систематической отработки основных тем в процессе обучения. Книга содержит шесть тематических параграфов, посвящённых базовым алгоритми¬ ческим структурам: линейной, ветвящейся, циклической, а также массивам, стро¬ кам символов и подпрограммам. В каждом параграфе предложены основные све¬ дения по той или иной теме и рассмотрены некоторые типовые задачи. Каждый параграф включает задания на составление программ и на анализ алгоритмов и программ, которые широко представлены в демонстрационных вариантах ЕГЭ. В конце книги даны основные встроенные процедуры и функции алгоритмического языка и языка Турбо Паскаль. Издание адресовано обучающимся 10—11-х классов, готовящимся к ЕГЭ по информатике и ИКТ, и учителям, которые организуют процесс подготовки к эк¬ замену. Книга может быть использована при изучении основ программирования в 10-11 -х классах общеобразовательных учреждений. Пособие является частью учебно-методического комплекса «Информати¬ ка и ИКТ. Подготовка к ЕГЭ», включающего также такие книги, как «Инфор¬ матика и ИКТ. Подготовка к ЕГЭ-2015», «Информатика и ИКТ. 10—11 классы. Подготовка к ЕГЭ. Экспресс-курс. Базовый и повышенный уровни», «Инфор¬ матика и ИКТ. Подготовка к ЕГЭ. Системы счисления. Задания А1, В7», «Ин¬ форматика и ИКТ. Подготовка к ЕГЭ. Элементы алгебры логики. Решение зада¬ ний АЗ, А10, В15», «Информатика и ИКТ. Подготовка к ЕГЭ. Поиск выигрыш¬ ных стратегий. Решение задач СЗ», «Информатика и ИКТ. 9—11 классы. Карман¬ ный справочник», «Информатика и ИКТ: основы программирования. 9—11 клас¬ сы. Карманный справочник». 15ВЫ 978-5-9966-0373-2 ББК 74.263.2 © ООО «Легион», 2014
Оглавление Введение 5 Глава I Разработка программ 7 § 1. Основные этапы разработки программ 7 1.1. Постановка задачи 7 1.2. Математическая модель задачи 7 1.3. Выбор численных методов 7 1.4. Разработка алгоритма решения 8 1.5. Написание программы 11 1.6. Отладка программы 11 § 2. Структуры программ 12 2.1. Структура программы алгоритмического языка 12 2.2. Структура программы на языке Паскаль 12 Глава II Задачи 14 § 1. Алгоритмы линейной структуры 14 Основные сведения 14 Дополнительная информация 15 Задания для индивидуальной работы 18 Разработка программ 18 Анализ алгоритмов и программ 21 § 2. Алгоритмы ветвящейся структуры 27 Основные сведения 27 Задания для индивидуальной работы 31 Разработка программ 31 Анализ алгоритмов и программ 37 § 3. Алгоритмы циклической структуры 54 Основные сведения 54 Задания для индивидуальной работы 62 Разработка программ 62 Анализ алгоритмов и программ 68
4 Оглавление §4. Массивы 80 Основные сведения 80 Дополнительная информация 90 Задания для индивидуальной работы 92 Разработка программ 92 Анализ алгоритмов и программ 98 § 5. Строки символов 105 Основные сведения 105 Задания для индивидуальной работы 111 Разработка программ 111 Анализ алгоритмов и программ 117 § 6. Подпрограммы 121 Основные сведения 121 6.1. Процедуры 121 6.1.1. Функции 123 Задания для индивидуальной работы 129 Разработка программ 129 Анализ алгоритмов и программ 131 Глава III Справочный материал 137 § 1. Встроенные процедуры и функции 137 1.1. Алгоритмический язык 137 1.2. Язык Турбо Паскаль 140 Литература 143
Введение В 2010 году во многих вузах в качестве одного из вступительных эк¬ заменов был введён предмет «Информатика и ИКТ». Ранее ЕГЭ по ин¬ форматике проводился далеко не во всех регионах. Возросшим интересом к изучению этой дисциплины и необходимостью подготовки к экзамену и продиктован выпуск данной книги. Пособие, которое вы держите в руках, предназначено для выпускников средних общеобразовательных учрежде¬ ний и их учителей. Книга «Информатика и ИКТ. Подготовка к ЕГЭ. Сборник задач по программированию» входит в учебно-методический комплекс «Инфор¬ матика и ИКТ. Подготовка к ЕГЭ», состоящий из книг «Информатика и ИКТ. Подготовка к ЕГЭ-2015», «Информатика и ИКТ. 10—11 клас¬ сы. Подготовка к ЕГЭ. Экспресс-курс. Базовый и повышенный уровни», «Информатика и ИКТ. Подготовка к ЕГЭ. Системы счисления. Задания А1, В7», «Информатика и ИКТ. Подготовка к ЕГЭ. Элементы алгебры логики. Решение заданий АЗ, А10, В15», «Информатика и ИКТ. Подготовка к ЕГЭ. Поиск выигрышных стратегий. Решение задач СЗ», «Информатика и ИКТ. 9—11 классы. Карманный справочник», «Инфор¬ матика и ИКТ: основы программирования 9—11 классы. Карманный спра¬ вочник». Автором были проанализированы все задания демонстрационных ва¬ риантов ЕГЭ 2005—2014 гг. На основе ключевых идей этих тестов состав¬ лены задачи, позволяющие отработать основные навыки программирова¬ ния. Книга содержит шесть тематических параграфов, посвящённых базо¬ вым алгоритмическим структурам: линейной, ветвящейся, циклической, а также массивам, строкам символов и подпрограммам. В каждом парагра¬ фе предложены основные сведения по той или иной теме и рассмотрены некоторые типовые задачи. Каждый параграф включает задания на со¬ ставление программ и на анализ алгоритмов и программ, которые широ¬ ко представлены в демонстрационных вариантах ЕГЭ. В конце книги да¬ ны основные встроенные процедуры и функции алгоритмического языка и языка Турбо Паскаль.
6 Введение Методические рекомендации. Для подготовки к экзамену по инфор¬ матике и ИКТ мы предлагаем следующую схему: 1. Прорешать вариант, предложенный в книге «Информатика и ИКТ. 10—11 классы. Подготовка к ЕГЭ. Экспресс-курс. Базовый и повышен¬ ный уровни», и на основе материалов этой книги изучить основные темы, выносимые на ЕГЭ. В случае, если решение задач по темам «Системы счисления», «Элементы алгебры логики» и «Поиск выигрышных страте¬ гий» будет вызывать затруднения, можно обратиться к соответствующим пособиям: «Информатика и ИКТ. Подготовка к ЕГЭ. Системы счисления. Задания А1, В7», «Информатика и ИКТ. Подготовка к ЕГЭ. Элементы алгебры логики. Решение заданий АЗ, А10, В15», «Информатика и ИКТ. Подготовка к ЕГЭ. Поиск выигрышных стратегий. Решение задач СЗ». Эти книги содержат много различных задач с подробными решениями. 2. Для успешной сдачи ЕГЭ по информатике необходимо умение про¬ граммировать. Настоящая книга окажет помощь при изучении базовых конструкций и в отработке навыков программирования. 3. После освоения всех тем можно снова перейти к решению заданий тестов книги «Информатика и ИКТ. Подготовка к ЕГЭ-2015». При само¬ стоятельном решении задач вам помогут карманные справочники. Обра¬ щение к справочному материалу даст возможность закрепить теоретиче¬ ский материал, необходимый для выполнения заданий. Желаем успехов! Замечания и пожелания, касающиеся данной книги, можно присылать по электронной почте: 1е^опт5@1е§юпги5.сот. Обсудить пособие, оставить замечания и предложения, задать вопро¬ сы можно на официальном форуме издательства Ьир://1едюп-ро5оЫуа.Нуеригпа1.сот.
Глава I Разработка программ § 1. Основные этапы разработки программ Разработка программ, как правило, состоит из следующих этапов: 1) постановка задачи; 2) математическая модель задачи; 3) выбор численных методов; 4) разработка алгоритма решения; 5) написание программы; 6) отладка программы. 1.1. Постановка задачи При постановке задачи необходимо выяснить цель её решения. С учё¬ том цели определяются входные данные, их ограничения, а также ограни¬ чения на выходные данные (требования к результату выполнения постав¬ ленной задачи). 1.2. Математическая модель задачи В большинстве случаев для решения задачи требуется описать её с по¬ мощью формул, с учётом перечня входных данных, требуемой точности вычислений и результатов решаемой задачи. 1.3. Выбор численных методов На данном этапе рассматривается возможность использования тех или иных численных методов решения задачи. Выбор методов осуществ¬ ляется в зависимости от требований к точности вычислений, ограничений на время выполнения, объёма оперативной памяти и других критериев, ко¬ торые необходимо учитывать при разработке решения задачи.
8 Сборник задач по программированию 1.4. Разработка алгоритма решения Этот этап включает разработку логической последовательности вы¬ числений. На данном этапе, с учетом выбранной математической модели и чис¬ ленных методов, осуществляется построение логической последователь¬ ности действий (вычислений), в результате выполнения которых будет ре¬ шена поставленная задача. Алгоритм — заранее заданное возможному исполнителю точное предписание совершить определённую последовательность действий для получения решения задачи за конечное число шагов. Свойства алгоритмов. 1. Адаптивность. Используемые на практике записи алгоритмов со¬ ставляются с ориентацией на определённого исполнителя. Чтобы соста¬ вить для него алгоритм, нужно знать, какие предписания этот исполнитель может понять и исполнить, а какие не может, поскольку у каждого испол¬ нителя имеется свой перечень предписаний, которые для него понятны и которые он может исполнить. Такой перечень называют системой пред¬ писаний (системой команд) исполнителя алгоритмов. 2. Дискретность. Описываемый процесс должен быть разбит на по¬ следовательность отдельных шагов. Возникающая в результате такого разбиения запись представляет собой упорядоченную совокупность чёт¬ ко отделённых друг от друга предписаний (директив, команд), образующих прерывную (дискретную) структуру алгоритма: только выполнив требова¬ ния одного предписания, можно приступить к выполнению следующего. 3. Детерминированность. Алгоритм не должен содержать предпи¬ саний, смысл которых может восприниматься неоднозначно. Это означа¬ ет, что одно и то же предписание, будучи понятным разным исполнителям, после исполнения каждым из них должно давать одинаковый результат. То есть запись алгоритма должна быть настолько чёткой, полной и проду¬ манной в деталях, чтобы у исполнителя никогда не возникло потребности в принятии каких-либо самостоятельных решений, не предусмотренных со¬ ставителем алгоритма. Кроме того, в алгоритмах недопустимы такие си¬ туации, когда после выполнения очередного предписания алгоритма ис¬ полнителю неясно, какое из предписаний алгоритма должно выполняться следующим. 4. Результативность. Алгоритм должен прекратиться за конечное число шагов, и при этом должен быть получен какой-либо определённый ответ на вопрос задачи.
§ I. Основные этапы разработки программ 9 5. Массовость. Наиболее предпочтительными являются алгоритмы, описывающие решение широкого класса задач данного типа. В простей¬ шем случае эта вариантность алгоритма обеспечивается возможностью использовать различные допустимые значения исходных данных. Так, на¬ пример, решение квадратного уравнения в области действительных чи¬ сел может быть найдено по формулам, которые применимы не для одного, а для многих квадратных уравнений с коэффициентами а, Ь и с, удовлетво ¬ ряющими условию. 6. Применимость. Среди допустимых начальных данных для алгорит¬ ма могут быть такие, к которым он применим, то есть, отправляясь от ко¬ торых, можно получить искомый результат, а могут быть такие, к которым данный алгоритм не применим, то есть, отправляясь от которых, искомо¬ го результата получить нельзя. Неприменимость алгоритма к допустимым начальным данным может заключаться либо в том, что алгоритмический процесс никогда не оканчивается (в этом случае говорят, что он беско¬ нечен), либо в том, что его выполнение во время одного из шагов натал¬ кивается на препятствие, заходит в тупик (в этом случае говорят, что он безрезультатно обрывается). Пример 1. Бесконечный алгоритмический процесс. Рассмотрим алгоритм деления десятичных дробей. Числа 5,1 и 3 яв¬ ляются для него допустимыми начальными данными, применение к кото¬ рым алгоритма деления приводит к искомому результату 1,7. Иная карти¬ на возникает для чисел 20 и 3, которые также представляют собой допу¬ стимые начальные данные. Для них получается алгоритмический процесс (см. рис. 1). .20 |_3_ 18_ 16^6... 20 Рис. 1. Этот процесс не встречает препятствий и никогда не оканчивается, так что получить искомый результат для начальных данных 20 и 3 оказывается невозможным. Отметим, что обрыв процесса произвольным образом не предусматривается данным алгоритмом. Пример 2. Алгоритм, заходящий в тупик (безрезультатно обрываю¬ щийся). Предписания алгоритма:
10 Сборник задач по программированию 1) Исходное число умножить на 2. Перейти к выполнению пункта 2. 2) К полученному числу прибавить 1. Перейти к выполнению п.З. 3) Определить остаток у от деления полученной в п.2 суммы на 3. Перейти к выполнению п.4. 4) Разделить исходное число на у. Частное является искомым резуль¬ татом. Конец. Пусть натуральные (целые положительные) числа будут допустимыми начальными данными для этого алгоритма. Для числа 6 алгоритмический процесс будет проходить следующим образом: 1) 6 • 2 = 12; переходим к п.2; 2) 12 -1-1 = 13; переходим к п.З; 3) у = 1; переходим к п.4; 4) 6:1 = 6. Конец. Искомый результат равен 6. Теперь рассмотрим, как будет выполняться алгоритмический процесс для исходного данного 7: 1) 7 • 2 = 14; переходим к п.2; 2) 14 + 1 = 15; переходим к п.З; 3) у = 0; переходим к п.4; 4)7:0 — деление невозможно. Процесс зашёл в тупик и безрезуль¬ татно оборвался. Способы представления алгоритмов. На практике наиболее распространены следующие способы представ¬ ления алгоритмов: — словесный (запись алгоритмов представляет собой описание после¬ довательных этапов обработки данных. Алгоритм задаётся в произволь¬ ном изложении на естественном языке); — графический (алгоритм изображается в виде последовательности связанных между собой функциональных блоков, каждый из которых со¬ ответствует выполнению одного или нескольких действий. Такое графи¬ ческое представление называется схемой алгоритма, или блок-схемой. В блок-схеме каждому типу действий соответствует геометрическая фи¬ гура, представленная в виде блочного символа); — псевдокод (полуформализованное описание алгоритмов на ус¬ ловном алгоритмическом языке, включающее в себя как элементы языка программирования, так и фразы естественного языка, общепринятые ма¬ тематические обозначения и др.).
§ 1. Основные этапы разработки программ 11 1.5. Написание программы Написание программы осуществляется на основе разработанного ал¬ горитма с учётом возможностей его реализации на том или ином языке программирования. 1.6. Отладка программы На этапе отладки программы устраняются синтаксические и логиче¬ ские ошибки. Для выявления логических ошибок и с целью выяснения эффективности работы программы разрабатывается набор тестовых дан¬ ных. Пример разработки программы. Задача. В треугольнике заданы три стороны а, Ь, с. Найти его медиа¬ ны. 1. Постановка задачи. Входные данные: стороны треугольника а, Ь, с. Выходные данные: медианы треугольника та, ть, тс. 2. Математическая модель задачи. Для нахождения медиан тре¬ угольника воспользуемся формулами та = ^л/2с2 + 2Ь2 — а2, ть = ~л/2а2 + 2с2 — Ь2, тс = ~\/2а2 + 2Ь2 — с2. 3. Алгоритм решения. Словесный. 1) Ввод исходных данных а, Ь, с. 2) Вычисление по формулам та, гаЬ, тс. 3) Вывод значений та, тЬ, тс. Блок-схема. ( МесНап ) та = 5>/2с2+262-а2 /иЬ — ^ л/2а2+2с2-Ь2 /ис = 2^2о5+2^с2
12 Сборник задач по программированию 4. Листинг программы. Рго^гаш МесНап; Уаг а,Ъ,с,та,тЪ,тс : Аеа1; ВЕСШ угИ:е1п(’введите стороны треугольника а,Ъ,с’); геас11п(а,Ъ,с); та: =з^^Ь (2*здг(с)+2*здг (Ъ) -з^^ (а)) /2; тЬ:=з^^г(2*здг(а)+2*вцт(с)-здг(Ь))/2; тс: =з^^Ь (2*здг (а) +2*зцт (Ъ) -здг(с) ) /2; уг гЬ е1п( * медианы равны ’, та:б:1, тЪ:б:1, тс: 6:1); ЕГО. § 2. Структуры программ 2.1. Структура программы алгоритмического языка ал г название алгоритма (аргументы и результаты) нач описание промежуточных величин последовательность команд (тело алгоритма) кон Часть алгоритма от слова алг до слова нач называется заголовком, а часть, заключённая между словами нач и кон, — телом алгоритма. 2.2. Структура программы на языке Паскаль Программа на языке Паскаль состоит из трёх частей: заголовок про¬ граммы, раздел описаний и раздел операторов.
§ 2. Структуры программ 13 Рго^гаш <имя программы >; ЬаЪе1...; СопзЪ...; Туре ...; Уаг; Ргосескиге...; РипсЫоп...; ВЕСШ оператор 1; оператор 2; оператор п; ЕМ). {раздел меток} {раздел констант} {раздел типов} {раздел переменных} {раздел процедур} {раздел функций} Заголовок программы Раздел описаний Раздел операторов (тело программы)
14 Сборник задач по программированию Глава II Задачи § 1. Алгоритмы линейной структуры Основные сведения Алгоритм линейной структуры — алгоритм, в котором все дей¬ ствия (команды) выполняются последовательно друг за другом. Блок-схема Алгоритмический язык Паскаль действие 1 . _х_ ... действие 2 г -- 1‘ . .. действие п Г ' действие 1 действие 2 действие п оператор 1; оператор 2; оператор п; Пример 1.1. Дано целое трёхзначное положительное число п. Составьте программу нахождения последней цифры этого числа. Решение. 1. Постановка задачи. Входные данные: трёхзначное число п. Выходные данные: число т — последняя цифра числа п. 2. Математическая модель задачи. Последнюю цифру трёхзнач¬ ного числа можно найти как остаток от деления заданного числа на 10. (Остаток от деления х на у обозначается как х той у.) 3. Алгоритм решения. Словесный алгоритм 1) Ввод исходного числа п. 2) Переменной т присваиваем значение остатка от деления п на 10. 3) Вывод т.
§ I. Алгоритмы линейной структуры 15 Блок-схема Алгоритмический язык Паскаль С Роз1С# ) / ■ / т := п шоё 10 ф (Конец Роз1С1?) алг РозЮз.* нач цел п,ш ввод п т:=шос1(п, 10) вывод т кон Ргодгат РозЮл.* уаг п,т:1п1;е§ег; Ье§1п геас11п(п); т:=п той 10; ^Г1-Ье1п (т) епс1. Дополнительная информация С целью улучшения эффективности программы в рассмотренном выше примере достаточно было воспользоваться одной переменной п (не вводя переменную га). В этом случае блок-схема и соответствующая программа принимают вид: Блок-схема Алгоритмический язык Паскаль ( Ро$1С1Г ) 1 1 1 п := п тос! 10 ци (Конец РозГСф алг РозЮз.* нач цел п ввод п п:=то<1(п, 10) вывод п кон Ргодгат РозЮз.* уаг п:1п-Ье§ег; Ъе^1п геа<11п(п) ; п:=п тос! 10; »гз.1;е1п(п) епй. Пример 1.2. Составьте программу, которая меняет местами значения целых переменных га и п.
16 Сборник задач по программированию Решение. Словесный алгоритм 1) Ввод исходных чисел тип. 2) Переменной к присваиваем значение переменной т. 3) Переменной т присваиваем значение переменной п. 4) Переменной п присваиваем значение переменной к. 5) Вывод т и п. Блок-схема Алгоритмический язык Паскаль ( ОЪтеп ) / т, п 1 1 алг ОЪтеп нач цел п,т,к ввод т, п к:=т т:=п п:=к вывод т,’ ’ ,п КОН Рго§гат ОЪтеп уаг п,т,к: злгЬе^ег; Ъе§1п геа<11п(т,п) ; к:=т; т:=п; п:=к; чт±Ъе1п(т,’ 9 ,п) епс1. к := т, т .= п п := к 1*^ (Конец ОЪтеп) С целью улучшения эффективности программы в этом примере доста¬ точно было воспользоваться переменными т и п (не вводя переменную к). В этом случае словесный алгоритм, блок-схема и соответствующая про¬ грамма принимают вид: Словесный алгоритм 1) Ввод исходных чисел тип (Например, т = 12, п = 4). 2) Переменной т присваиваем результат суммирования значений переменных тип(т = т-\-п = 12 + 4= 16). 3) Переменной п присваиваем результат разности значений перемен¬ ных гпип(п = т — п = 16 — 4 = 12). 4) Переменной т присваиваем результат разности значений перемен¬ ных т и п (т = т — п = 16 — 12 = 4). 5) Вывод га и п (т = 4, п = 12).
§ /. Алгоритмы линейной структуры 17 Блок-схема Алгоритмический язык Паскаль ( ОЪтеп ) / т,п 1 т := т + п п := т-п т := т-п (Конец ОЪтеп) алг ОЪтеп нач цел п,т ввод т, п т:=т+п п:=т-п т:=т-п вывод т,9 9 ,п кон Рго^гат ОЪтеп уаг п,т: злгЬе^ег; Ъе§1П геа<11п(т,п) ; т:=т+п; п:=т-п; т:=т-п; уггЬе1п(т,9 9 ,п) епс1. Анализ алгоритмов и программ Пример 1.3. Определите, что будет напечатано в результате работы следующей программы. Алгоритмический язык Паскаль алг Рг:ш_1_3 нач цел х,у,2 х:=10 у: =47 г: =24 х:=то<1(х+у,2б) г:=то<1(2+х, 10) ВЫВОД 2 кон Рго^гат Рг1т_1_3; уаг х,у,г: 1пЪе§ег; Ъе§1п х:=10; У:=47; г:=24; х: = (х+у) то<1 26; г: = (г+х) той 10; УГ1Ъе1п(2) епй. Решение. Для решения задачи выполним программу по шагам, занося значения переменных в таблицу: Выполняемый Значение Значение Значение оператор X У г х := 10 10 не определено не определено у := 47 10 47 не определено г:= 24 10 47 24 х := (х 4- у) тос! 26 57 тос! 26 = 5 47 24 г := (г + х) тос! 10 5 47 29 тос! 10 = 9 Ответ: 9.
18 Сборник задач по программированию Задания для индивидуальной работы Разработка программ 1. Дан прямоугольный треугольник с катетами а и Ъ. Составьте программу для вычисления гипотенузы с. 2. Даны длины сторон треугольника. Составьте программу для вычисле¬ ния его площади. 3. Дана сторона равностороннего треугольника. Составьте программу для вычисления его периметра и площади. 4. Даны катеты прямоугольного треугольника. Составьте программу для вычисления его гипотенузы, периметра и площади. 5. Даны две стороны треугольника а, Ь и угол а, заключённый между ними. Составьте программу для вычисления стороны с. Считать, что а — это градусная мера угла. 6. Даны гипотенуза и катет прямоугольного треугольника. Составьте про¬ грамму для вычисления катета и радиуса вписанной окружности. 7. Дана площадь квадрата. Составьте программу для вычисления его сто¬ роны и периметра. 8. Дан радиус окружности. Составьте программу для вычисления длины окружности и площади круга. 9. Составьте программу для вычисления площади сектора, ограниченного дугой в а радиан и радиусом К. Считать, что а — это градусная мера угла. 10. Составьте программу для вычисления площади равнобочной трапеции с основаниями а и Ъ и углом а при большем основании а. Считать, что а — это градусная мера угла. 11. Даны целые числа N и Е. Составьте программу для вычисления пе¬ риметра и площади правильного ЛГ-угольника, вписанного в окружность радиуса К. 12. Даны целые числа N и К. Составьте программу для вычисления пе¬ риметра и площади правильного ЛГ-угольника, описанного около окруж¬ ности радиуса К. 13. Дана длина ребра куба. Составьте программу для вычисления площа¬ ди грани, площади полной поверхности и объёма куба. 14. Составьте программу для вычисления объёма шара и площади его поверхности, если радиус шара равен К.
§ I. Алгоритмы линейной структуры 19 15. Составьте программу для вычисления расстояния между двумя точ¬ ками на плоскости с данными координатами (1,1) и (2,2). 16. Треугольник задан координатами своих вершин А(х1,у\), В(х2,у2), С(х3,уз). Составьте программу для вычисления длин его сторон, пери¬ метра и площади. 8 = ^\/(х2 - х1)(уз - У1) - (хз ~ #1X2/2 - 2/1)- 17. Треугольник задан координатами своих вершин А(х\,у{), #(22,2/2), С(хз, уз). Составьте программу для вычисления координаты точки пере¬ сечения его медиан. (хтп = |(Я1 + Х2 + 23); Угп = |(г/1 + 2/2 + Уз)- 18. Даны три вершины А(х\,у\), В(х2,у2), С(хз,уз) некоторого пря¬ моугольника. Составьте программу для вычисления координат четвёртой вершины. 19. Даны три действительных положительных числа. Составьте програм¬ му для вычисления среднего арифметического этих чисел. 20. Даны три действительных положительных числа. Составьте програм¬ му для нахождения целой части среднего арифметического и среднего гео¬ метрического этих чисел. 21. Даны два вещественных числа. Составьте программу для нахождения коэффициентов приведённого квадратного уравнения, корнями которого являются эти числа. 22. Даны шесть действительных чисел ах, Ьх, сх, а2, Ь2, с2. Составьте про- „ Г о>1% + Ь\у = Сь грамму для нахождения корней системы уравнении |ах_|_5^_с х _ сгь2 - С261 . у _ Д1С2 ~ 02С1 \ а\Ъ2 — а2Ъ\ ’ а\Ъ2 — а2Ъ\ ) 23. Составьте программу для нахождения суммы первых п членов ариф¬ метической прогрессии, первый член которой равен а, а разность — й. 24. Составьте программу для вычисления суммы цифр заданного трёх¬ значного целого числа. 25. Составьте программу для вычисления произведения цифр заданного двухзначного целого числа.
20 Сборник задач по программированию 26. Составьте программу для нахождения числа, полученного записыва¬ нием в обратном порядке цифр заданного целого трёхзначного числа. 27. Составьте программу для нахождения числа сотен и тысяч в заданном шестизначном натуральном числе. 28. Составьте программу для нахождения второй справа цифры в записи заданного четырехзначного целого числа. 29. Даны четыре целых числа (Ьоиг, тт, зес, Ите). Первые три из них (Ьоиг, гшп, зес) — это время (в часах, минутах и секундах) начала про¬ смотра фильма, четвёртое (Ьте) определяет продолжительность фильма в секундах. Составьте программу для нахождения времени окончания про¬ смотра фильма. Считать, что фильм шёл непрерывно. 30. Пусть идет к-я секунда суток. Составьте программу, которая опре¬ деляет, сколько целых часов к и целых минут I прошло от начала суток к этому моменту. 31. Составьте программу для нахождения количества песчинок, содер¬ жащихся в п тонн песка, считая, что масса каждой песчинки составляет 771 граммов (0,001 < т < 0,005). 32. Согласно легенде, изобретатель шахмат попросил у падишаха в ка¬ честве награды такое количество пшеницы, которое получится, если на 1-ю клетку шахматной доски положить одно зёрнышко, а далее удваивать количество зёрен на каждой последующей клетке. Падишах распорядил¬ ся принести мешок зерна. Составьте программу для нахождения номера клетки шахматной доски, на которой закончится зерно, если масса мешка равна п (кг) (20 50), а масса 1-го зёрнышка т (г) (0,2 ^ т ^ 1). 33. На первую клетку шахматной доски положили 1 зерно, а на каж¬ дую следующую клетку на п зёрен больше, чем на предыдущую. Составьте программу, которая вычисляет, сколько всего зёрен оказалось на шахмат¬ ной доске. 34. Даны три числа у1, у2, 8 (т;1 > у2), где у\ — собственная скорость (в км/ч) лодки, у2 — скорость (в км/ч) течения реки, 5 — расстояние (в км) между пунктами А и В. Составьте программу, которая определяет время (в часах), которое затратит лодка на путь из пункта А в В и обратно, двигаясь без остановок. 35. Составьте программу, которая вычисляет, сколько времени в мину¬ тах затратит школьник на дорогу от школы до дома, если это расстояние составляет 5 (км), а средняя скорость движения школьника — V (км/ч).
§ /. Алгоритмы линейной структуры 21 36. Даны три числа а, 6, с. Составьте программу для вычисления х и у, гели х = 7 , у = зт2(а) — 1п(а2). у |а — с| + 1 37. Даны три числа а, 6, с. Составьте программу для вычисления х и у, 1п(а2) соз2(а) 4-1 если х = /, ^ / ■ . у = —л оа—• УН + с? 2 4- е2 38. Даны три числа а = 1,2, 6 = 3,1, с = 0,2. Составьте программу для ас2 — 62 # агссоз л/а вычисления х и у, если х = / , у = —-——г1—. * у/На) ~ сЬ У 2ехс"1 39. Даны три числа а = —2,5, 6 = 6,4, 7г = 3,14. Составьте программу для вычисления х и у, если х = ^ (^°) у = \ах\ — е8111^*-1). соз(7г 4- 6) 40. Даны цифры двух трёхзначных десятичных целых чисел, записанных в виде ахагаз и 616263, где ах, 6х — число сотен, аг, 62 — число десят¬ ков, а3, 63 — число единиц. Составьте программу, которая находит сумму цифр числа, равного сумме заданных чисел, если известно, что это число трёхзначное. 41. Даны целые числа Н (0 < Н ^ 12), тп (0 ^ тп ^ 59), которые со¬ ответствуют заданному моменту времени: «Н часов, тп минут». Составь¬ те программу, которая определяет наименьшее количество полных минут, которое должно пройти до того момента, когда часовая и минутная стрел¬ ки на циферблате совпадут. Анализ алгоритмов и программ 1. Определите, что будет выведено в результате выполнения алгоритма, представленного в виде блок-схемы (см. рис. 11). ( Рго§_1 ) \а := 15,16 :=~23| а := Ъ-а Ъ := а-Ь ф (Конец Рго§_1) Рис. 11.
22 Сборник задач по программированию Составьте программу, соответствующую данной блок-схеме, и проверьте правильность полученного ответа. 2. Определите, что будет выведено в результате выполнения алгоритма, представленного в виде блок-схемы (см. рис. 12). ( Рго§_2 ) .. / Г , а:=-22, с:=ТП (Конец Рго§_2) Рис. 12. Составьте программу, соответствующую данной блок-схеме, и проверьте правильность полученного ответа. 3. Определите, что будет выведено в результате выполнения алгоритма, представленного в виде блок-схемы (см. рис. 13). ( Ргоё-З ) I а := 56 | 1 Ь := а сИу 10 а := Ъ + а той 10 (конец Рго§_з) Рис. 13. Составьте программу, соответствующую данной блок-схеме, и проверьте правильность полученного ответа. (Здесь и далее в блок-схемах остаток от деления х на у обозначается как х той г/, целая часть при делении х на у обозначается как х сНу у.)
§ 1. Алгоритмы линейной структуры 23 4. Определите, что будет выведено в результате выполнения алгоритма, представленного в виде блок-схемы (см. рис. 14). ( Рго§_4 ) Г^=78Л Ъ := а той 10 а := 106 + а (Ну 10 (конец Рго§_4^ Рис. 14. Составьте программу, соответствующую данной блок-схеме, и проверьте правильность полученного ответа. 5. Определите, что будет напечатано в результате работы следующей программы. Алгоритмический язык Паскаль алг Рго§_6 нач вещ а,Ъ,с а:=-2 с :=12 Ъ:=а+с/3 а:=а-Ь с:=с-а вьшод с кон Рго§гаш Рго§_6; уаг а,Ъ,с:геа1; Ье§1П а:=-2; с:=12; Ь:=а+с/3; а:=а-Ъ; с:=с-а; угН:е1п(с) епс1. Наберите текст программы и проверьте правильность ответа. 6. Определите, что будет напечатано в результате работы следующей программы.
24 Сборник задач по программированию Алгоритмический язык Паскаль алг Рго§_5 нач цел а,Ъ,с а:=3 Ъ:=2*а+9 с:=Ъ-а а:=с*а вывод а кон Рго^гаш Рго§_5; уаг а,Ъ,с:11гЬе§ег; Ъе§1п а:=3; Ъ:=2*а+9; с:=Ъ-а; а:=с*а; уггЬе1п(а) епс1. Наберите текст программы и проверьте правильность ответа. 7. Определите, что будет напечатано в результате работы следующей про¬ граммы. Алгоритмический язык Паскаль алг Рго§_7 нач цел а,с а:=2154 с:=сИу(а,100) а:=шос1(а, 100) с:=а-с вывод с кон Рго^гат Рго§_7; уаг а,с:1п1;е§ег; Ъе§1П а:=2154; с:=а (Ну 100; а:=а тос! 100; с:=а-с; уг1Ъе1п(с) епй. Наберите текст программы и проверьте правильность ответа. 8. Определите, что будет напечатано в результате работы следующей про¬ граммы. Алгоритмический язык Паскаль алг Рго§_8 нач цел а,с а:=3452 с:=шос1(а, 10) а:=сНу(а, 100) с:=тос1(а, 10)+10*с вывод с кон Рго§гат Рго§_8; уаг а,с: 1п1:е§ег; Ъе§1п а:=3452; с:=а тос! 10; а:=а сНу 100; с:=а той 10 + 10*с; ш:11;е1п(с) епй. Наберите текст программы и проверьте правильность ответа.
§ 1. Алгоритмы линейной структуры 25 9. Определите, какое число должно быть введено, чтобы в результате работы следующей программы было напечатано число 24. Алгоритмический язык Паскаль алг Рго§_9 нач цел а,с ввод а с:=а+12; а:=с+2*а вывод а кон Рго§гаш Рго§_9; уаг а,с:1пге§ег; Ъе§1п геа<!1п(а); с:=а+12; а:=с+2*а; уггЬе1п(а) епс1. Наберите текст программы и проверьте правильность ответа. 10. Определите, какое число должно быть введено, чтобы в результате работы следующей программы было напечатано число 30. Алгоритмический язык Паскаль алг Рго§_10 нач вещ а,с ввод а а:=15-а с:=а/2+4 а:=2*с+а вывод а кон Рго^гаш Рго§_10; уаг а,с:геа1; Ъе§1п геас!1п(а) ; а:=15-а; с:=а/2+4; а:=2*с+а; угл/Ье1п(а) епс1. Наберите текст программы и проверьте правильность ответа. 11. Определите, какое трёхзначное число должно быть введено, чтобы в результате работы следующей программы было напечатано число 172. Алгоритмический язык Паскаль алг Рго§_11 нач цел а,с ввод а с:=тос!(а, 10) а:=сНу(а, 10) с:=10*с+тосЦа, 10) а:=10*с+<Иу(а, 10) вывод а кон Рго§гат Рго§_11 уаг а,с:11гЬе§;ег; Ье§1п геас!1п(а) ; с:=а тос! 10; а:=а с!1у 10; с:=10*с+а тос! 10; а:=10*с+а сИу 10; уг11:е1п(а) епс!. Наберите текст программы и проверьте правильность* ответа.
26 Сборник задач по программированию 12. Определите, какое трёхзначное число должно быть введено, чтобы в результате работы следующей программы было напечатано число 519. Алгоритмический язык Паскаль алг Рго§_12 нач цел а,с ввод а с:=<!1у(а, 100) а:=шос!(а, 100)+2*тос!(а, 10) а:=10*а+с вывод а кон Рго^гат Рго§_12 уаг а,с:11гЬе§ег; Ъе§1п геас!1п(а); с:=а (Ну 100; а:=а тос! 100 +2* (а тос! 10); а:=10*а+с; ыггЬе1п(а) еп<1. Наберите текст программы и проверьте правильность ответа.
§ 2. Алгоритмы ветвящейся структуры 27 § 2. Алгоритмы ветвящейся структуры Основные сведения Алгоритм ветвящейся структуры — алгоритм, в котором дей¬ ствия (команды) выполняются в зависимости от выполнения некоторо¬ го логического условия. В зависимости от результата проверки условия («да» или «нет») осуществляется выбор одного из альтернативных путей работы алгоритма. Каждый из путей ведёт к общему выходу, поэтому ра¬ бота алгоритма будет продолжаться независимо от того, какой путь будет выбран. Структура «если-то» Блок-схема Алгоритмический язык Паскаль действия I- ше^> Нет если условие то действия все Л условие 1Неп операторы; Пример 2.1. Дано целое положительное число п(п ^ 1000). Составь¬ те программу, которая, если число чётное, выводит последнюю цифру это¬ го числа. Решение. 1. Постановка задачи. Входные данные: положительное число п (п ^ 1000). Выходные данные: последняя цифра числа п, если п — чёт¬ ное. 2. Математическая модель задачи. Последнюю цифру положи¬ тельного числа находим как остаток от деления заданного числа на 10. Для определения чётности числа проверяем, делится ли последняя его цифра на два. Если число чётное, то выводим найденный остаток отделения. 3. Алгоритм решения. Словесный алгоритм 1) Ввод исходного числа п. 2) Переменной п присваиваем значение остатка отделения п на 10. 3) Если п делится на 2, то вывод п.
28 Сборник задач по программированию Блок-схема Алгоритмический язык Паскаль алг 1^Роз1 нач цел п ввод п п:=той(п,10) если той(п,2)=0 то вывод п все кон Рго^гаш 1*Роз1; уаг п:1п1;е§ег; Ъе§1П геай1п(п) ; п:=п той 10; п той 2=0 ■ЬЪеп ыгИ:е1п(п) епй. л := л то<110 . У-1 ^Конец ИРоз!^) Замечание. Если на вход в программе подаётся нечётное число, то в результате её выполнения на экран не будет выведено ничего. Если необ¬ ходимо вывести на экран сообщение о том, что введённое число не явля¬ ется чётным, то следует воспользоваться структурой «если-то-иначе». Структура «если-то-иначе» Блок-схема Алгоритмический язык Паскаль если условие то действия 1 иначе действия 2 все И условие 1Неп операторы 1; е1зе операторы 2; действия 1 действия 2 ' 1 1 Пример 2.2. Даны два целых числа а и Ь (а, Ь ^ 1000). Составьте про¬ грамму, которая определяет наибольшее из них. Решение. 1. Постановка задачи. Входные данные: два целых числа а и Ь (а, Ь ^ 1000). Выходные данные: число, которое является наибольшим из аиЬ.
§ 2. Алгоритмы ветвящейся структуры 29 2. Алгоритм решения. Словесный алгоритм 1) Ввод исходных чисел а и Ь. 2) Сравниваем данные числа. Если а > Ь, то выводим а, в противном случае выводим Ь. Блок-схема Алгоритмический язык Паскаль ( згауп _) 1а* 1 алг згауд нач цел а,Ъ ввод а,Ъ если а>Ъ то вывод а иначе вывод Ъ все кон Рго^гаш згауд; уаг а,Ъ:1пЪе$ег; Ъе$1п геас11п(а,Ъ); а>Ъ -ЬЬеп уггЬе1п(а) е1зе уггЬе1п(Ъ) епс1. 14-1 Ц~1 Конец згауп ) Пример 2.3. Дано действительное число х. Составьте программу, ко¬ торая находит значение функции {|х|, если х < О, д/х, если х > 10, 2, если 0 ^ х ^ 10. Решение. 1. Постановка задачи. Входные данные: действительное число х. Выходные данные: число, которое является значением заданной функции. 2. Алгоритм решения. Словесный алгоритм 1) Ввод исходного числа х. 2) Проверяем принадлежность данного числа первому интервалу. Ес¬ ли х < 0, то выводим |х|, в противном случае проверяем условие х > 10. Если это условие выполняется, то выводим у/х, если и это условие не вы¬ полнено, то выводим 2. Замечание. Мы не проверяем условие 0 ^ х ^ 10, поскольку если не выполнены первые два условия, то это условие выполняется автоматиче¬ ски.
30 Сборник задач по программированию Блок-схема ( йшс! ) Г?7 Алгоритмический язык Паскаль алг ^ипс1 Рго^гаш ±ипс1; нач уаг х:геа1; вещ х Ъе§1П ввод X геас11п(х); если х<0 то х<0 ЪЪеп вывод аЪз(х) ыггЬе1п(аЪз(х)) иначе е1зе если х>10 то х>10 ЪЪеп вывод з^^1;(Ъ) VГ^1;е1п(з^^1: (х) ) иначе е1зе вывод 2 V^^1:е1п(,2,) все еп<1. все хон Анализ алгоритмов и программ Пример 2.4. Определите, что будет напечатано в результате работы следующей программы.
§ 2. Алгоритмы ветвящейся структуры 31 Алгоритмический язык Паскаль алг Рго§_8 Рго^гаш Рго§_8; нач уаг а,Ъ,с:11гЬе§ег; цел а,Ъ,с Ъе§1п а:=4; а:=а+8 а:=4; а:=а+8; Ъ:=-2*а Ъ:=-2*а; если Ъ<а-30 то Ъ<а-30 ЪЬеп с:=2-3*Ъ с:=2-3*Ъ иначе е1зе с:=2-2*Ъ с:=2-2*Ъ; вывод с ыггЬе1п(с) кон епс1. Решение. Для решения задачи выполним программу по шагам, занося значения переменных в таблицу: Выполняемый оператор Истинность условия Значения переменных а Ь с а:=4 — 4 — — о := а 8 ■ 12 (=4+8) Ь := —2 * а 12 -24 (=-2-12) Ь < а — 30 да (—24< —18) 12 -24 с:=2 — 3*6 12 -24 74 (=2-3-(-24)) Таким образом, в результате работы программы будет напечатано чис¬ ло 74. Ответ: 74. Задания для индивидуальной работы Разработка программ 1. Дано целое число х. Составьте программу, которая выясняет, верно ли, что 0 < х < 1. На печать вывести «Да» или «Нет». 2. Дано целое число п. Составьте программу, которая выясняет, является ли значение переменной п кратным трём.
32 Сборник задач по программированию 3. Дано число ж. Составьте программу, которая находит значение у/х~+1. 4. Даны два действительных числа. Составьте программу, которая выво¬ дит первое число, если оно не больше второго, или их сумму в противном случае. 5. Даны два действительных числа. Составьте программу, которая заме¬ няет первое число нулём, если оно не меньше второго, или оставляет без изменения в противном случае. 6. Даны два действительных числа. Составьте программу, которая мень¬ шее из них заменяет их полусуммой, а большее — их произведением. 7. Даны числа ж, у, г. Составьте программу, которая возводит в квадрат те из них, которые неотрицательны. 8. Даны числа а, Ь, с, й. Составьте программу, которая выводит на экран те из них, которые лежат в интервале [—5,4]. 9. Даны действительные числа ж, у, г. Составьте программу, которая на¬ ходит наибольшее из них. 10. Дано число ж. Составьте программу, которая выводит в порядке воз¬ растания числа ж + 5, зт(ж), ж2. 11. Даны действительные числа ж, у, г. Составьте программу, которая находит тпах(х у + г,ху/г). 12. Даны числа ж, у, г. Составьте программу, которая находит тах(х — у, 2г — ж, у). 13. Даны три числа а, Ь, с. Составьте программу, которая удваивает каж¬ дое из данных чисел, если а ^ Ь ^ с, и заменяет числа их квадратами в противном случае. 14. Даны три числа а, 6, с. Составьте программу, которая определяет, име¬ ется ли среди заданных целых чисел хотя бы одно чётное. 15. Даны три числа а, 6, с. Составьте программу, которая определяет, име¬ ется ли среди них хотя бы одна пара равных между собой чисел. 16. Даны действительные числа ж, у. Составьте программу, которая вы¬ числяет значение функции _ Г 2ж — у, если ж < у, ^ ~ | 2у — ж, если ж ^ у. 17. Даны действительные числа ж, у. Составьте программу, которая вы¬ числяет значение функции в _ / 2|ж — у|, если ж < у, ^ ~ \ \/2у - ж, если ж ^ у.
§ 2. Алгоритмы ветвящейся структуры 33 18. Дано действительное число х. Составьте программу, которая вычис¬ ляет значение функции {8т(х), если х < О, 2х2, если х > 2, соз2(х), если 0 ^ х ^ 2. 19. Дано действительное число х. Составьте программу, которая вычис¬ ляет значение функции ( е2х, если х < —1, 1 У = если — 1 ^ х < О, Ых-Г 2х — 1, если х ^ 0. 20. Даны действительные числа х, у. Составьте программу, которая вы¬ числяет значение функции {(х — у)2 у если х <у и — 4 < х, е2у~ху если х^у их)2, 1п \2у - х\ в остальных случаях. 21. Даны действительные числа х, у. Составьте программу, которая вы¬ числяет значение функции {у/х + 1п у2 у если х > 4 и у > 5, 2у2 — |х|, если х ^ 3 или у > 2, 1,5(х + еу)) в остальных случаях. 22. Даны действительные числа а, Ь, с. Составьте программу, которая определяет, существует ли треугольник с длинами сторон а, Ь, с. Если нет — выдать соответствующее сообщение. 23. Даны действительные числа а, 6, с. Составьте программу, которая определяет, является ли треугольник со сторонами а, Ь, с равнобедрен¬ ным. 24. Заданы радиус круга К и сторона квадрата 5. Составьте программу, которая определяет, какая из фигур имеет большую площадь. 25. Даны действительные числа х, у. Составьте программу, которая опре¬ деляет, принадлежит ли точка М(х, у) кольцу с центром в начале коорди¬ нат с внешним радиусом, равным 1, и внутренним радиусом, равным 4. 26. Даны действительные числа х, у, Д, а, Ъ. Составьте программу, кото¬ рая определяет, лежит ли точка М(х, у) на окружности радиуса К с цен¬ тром в точке С (а, Ь). 27. Заданы площади круга К и квадрата 5. Составьте программу, кото¬ рая определяет, поместится ли круг в квадрате (чтобы круг поместился в квадрат, диаметр круга должен быть меньше или равен стороне квадрата).
34 Сборник задач по программированию 28. Заданы площади круга К и квадрата 5. Составьте программу, которая определяет, поместится ли квадрат в круге (квадрат поместится в круге, если диагональ квадрата меньше или равна диаметру окружности). 29. Дано действительное число а. На рисунке 15 представлен график функции у = /(х). Составьте программу, которая вычисляет значение данной функции в точке а. Рис. 15. 30. Дано действительное число а. На рисунке 16 представлен график функции у = /(х). Составьте программу, которая вычисляет значение данной функции в точке а. Рис. 16. 31. Дано действительное число а. На рисунке 17 представлен график функции у = /(х). Составьте программу, которая вычисляет значение данной функции в точке а. 32. Дано действительное число а. На рисунке 18 представлен график функции у = /(х). Составьте программу, которая вычисляет значение данной функции в точке а.
§ 2. Алгоритмы ветвящейся структуры 35 у=-х2+ 2 -3 ^ Рис. 18. 33. Даны действительные числа ж, у. Составьте программу, которая опре¬ деляет, принадлежит ли точка М(х, у) заштрихованной части плоскости (см. рис. 19). У I 4 -2 Рис. 19. 34. Даны действительные числа ж, у. Составьте программу, которая опре¬ деляет, принадлежит ли точка М(х, у) заштрихованной части плоскости (см. рис. 20). У1 4 -4 Рис. 20. 35. Даны действительные числа ж, у. Составьте программу, которая опре¬ деляет, принадлежит ли точка М(ж, у) заштрихованной части плоскости (см. рис. 21). 4 -4/ Рис. 21.
36 Сборник задач по программированию 36. Даны действительные числа ж, у. Составьте программу, которая опре¬ деляет, принадлежит ли точка М(ж, у) заштрихованной части плоскости (см. рис. 22). У* 14 1Р '■Щ 11 -4 -2 24 I Рис. 22. 37. Даны действительные числа ж, а, Ъ (а < Ъ). Составьте программу, ко¬ торая определяет, на каком из интервалов (-оо;а), (а;Ь), (Ь;+оо) лежит точка с координатой ж. 38. Даны действительные числа аь а2, Ьь Ъ2. Составьте программу, кото¬ рая определяет, какая из точек — А{а\\Ь1) и5(а2;Ь2) — лежит на прямой у = 2ж + 1. Если такой точки нет — выдать соответствующее сообщение. 39. Даны действительные числа а\, Ьь сь а2у Ь2у с2. Составьте програм¬ му, которая находит координаты точки пересечения прямых, описываемых уравнениями а\ж + Ъ\х = с\ и а2ж + Ъ2х = с2. Если прямые не пересека¬ ются или не существуют — выдать соответствующее сообщение. 40. Даны действительные числа х\, у\, х2, у2. Составьте программу, кото¬ рая определяет, какая из двух точек — Д(жх, у\) и В(х2)у2) — располо¬ жена ближе к началу координат. Вывести на экран координаты этой точки. 41. Дано целое двузначное положительное число п. Составьте программу, которая определяет, входит ли в него цифра 4. 42. Дано целое двузначное положительное число п. Составьте программу, которая определяет, входят ли в него цифры 2 и 5. 43. Дано целое трёхзначное положительное число п. Составьте програм¬ му, которая определяет, входит ли в него цифра 8. 44. Дано целое трёхзначное положительное число п. Составьте програм¬ му, которая определяет, входят ли в него цифры 3, 6 и 9. 45. Дано целое трёхзначное положительное число п. Составьте програм¬ му, которая определяет среди цифр этого числа одинаковые. 46. Дано целое трёхзначное положительное число п. Составьте програм¬ му, которая определяет, равен ли квадрат этого числа сумме кубов его цифр.
§ 2. Алгоритмы ветвящейся структуры 37 47. Дано целое четырёхзначное положительное число п. Составьте про¬ грамму, которая определяет, какая из его цифр больше — вторая или по¬ следняя. 48. Дано целое четырёхзначное положительное число п. Составьте про¬ грамму, которая определяет, кратно ли пяти произведение его цифр. 49. Дано целое четырёхзначное положительное число п. Составьте про¬ грамму, которая определяет, равна ли сумма двух его первых цифр сумме двух его последних цифр. 50. Дано целое четырёхзначное положительное число п. Составьте про¬ грамму, которая определяет, является ли оно палиндромом («перевёрты- шем») с учётом четырёх цифр. Например, числа 1221, 0660, 4554 будем считать палиндромами. (Палиндромом называется число, десятичная за¬ пись которого читается одинаково слева направо и справа налево.) 51. Даны действительные числа х, а, Ь. Составьте программу, которая вычисляет корни уравнения ах2 4- Ьх 4- с = 0, при а ф 0. Если дискри¬ минант — отрицательная величина, вывести на экран сообщение «корни мнимые», в противном случае расположить корни в порядке возрастания. Анализ алгоритмов и программ 1. Определите, что будет выведено в результате выполнения алгоритма, представленного в виде блок-схемы (см. рис. 23). Составьте программу, соответствующую данной блок-схеме, и проверьте правильность полученного ответа.
38 Сборник задач по программированию 2. Определите, что будет выведено в результате выполнения алгоритма, представленного в виде блок-схемы (см. рис. 24). Составьте программу, соответствующую данной блок-схеме, и проверьте правильность полученного ответа. 3. Определите, что будет напечатано в результате работы следующей программы. Алгоритмический язык Паскаль алг Рго§_15 Рго^гаш Рго§_15; нач уаг а,Ъ,с:1п1;е§ег; цел а,Ъ,с Ъе&1п а:=10; Ъ:=7 а:=10; Ъ:=7; а:=3*Ъ-а а:=3*Ъ-а; если а<Ъ+1 то а<Ъ+1 ЪЪеп с:=3*Ъ-2*а с:=3*Ъ-2*а иначе е1зе с:=3*а-2*Ъ с:=3*а-2*Ъ; все ыггЬе1п(с) вывод с епс1. кон Наберите текст программы и проверьте правильность ответа.
§ 2. Алгоритмы ветвящейся структуры 39 4. Определите, что будет напечатано в результате работы следующей программы. Алгоритмический язык Паскаль алг Рго§_16 Рго&гаш Рго§_16; нач уаг а,Ъ,с:1п1;е§ег; цел а,Ъ,с Ъе§1п а:=-5; Ъ:=10 а:=-5; Ъ:=10; а:=4*а+3*Ъ а:=4*а+3*Ъ; если а<2*Ъ то а<2*Ъ ЪЪеп с:=а*Ъ-5*а с:=а*Ъ-5*а иначе е1зе с:=а*Ъ-8*а с:=а*Ъ-8*а; все уг1-Ье1п(с) вывод с еп<1. кон Наберите текст программы и проверьте правильность ответа. 5. Определите, что будет напечатано в результате работы следующей программы. Алгоритмический язык Паскаль алг Рго§_18 Рго^гат Рго§_18; нач уаг а,Ъ,с:11гЬе§ег; цел а,Ъ,с Ъе§1п а:=-2; Ъ:=6 а:=-2; Ъ:=6; Ъ:=Ъ-а Ъ:=Ъ-а; если а<Ъ то а<Ъ ЪЪеп если Ъ<0 то Ъ<0 ‘ЬЪеп с:=-3*а+Ъ с:=-3*а+Ъ иначе е1зе с:=-6*а-Ъ с:=-6*а-Ъ все е1зе иначе с:=2*Ъ с:=2*Ъ; все ыг1-Ье1п(с) вывод с еп<1. кон Наберите текст программы и проверьте правильность ответа.
40 Сборник задач по программированию 6. Определите, что будет напечатано в результате работы следующей программы. Алгоритмический язык Паскаль алг Рго§_17 Рго§гат Рго§_17; нач уаг а,Ъ,с:11гЬе§ег; цел а,Ъ,с Ъе§1п а:=55; Ъ:=15 а:=55; Ь!—15> Ъ:=а-2*Ъ Ъ:=а-2*Ъ; если а<Ъ то а<Ъ -ЬЪеп с: =й1у (100, а) +той (Ъ, 10) с: =100 ййу а + Ъ той 10 иначе е1зе с:=й1у(100,Ъ)+той(а, 10) с: =100 ййу Ъ + а той 10; все уг1-Ье1п(с) вывод с епй. кон Наберите текст программы и проверьте правильность ответа. 7. Определите, что будет напечатано в результате работы следующей про¬ граммы. Алгоритмический язык Паскаль алг Рго§_19 Рго§гаш Рго§_19; нач уаг а,с:1пЪе§ег; цел а,с ±:Ъоо1еап; лог ± Ъе§1п а:=16 а:=16; *:=а<18 и а>5 *:=(а<18) апй (а>5); если ± то Н ± ’ЬЪеп если той(а,10)<5 то И а той 10 < 5 гЪеп с:=ййу(а, 10) *3 с:=(а Й1У 10)*3 иначе е1зе с:=й1у(а,5)+4 с:=(а Й1У 5)+4 все е1зе иначе с:=а с:=а; все ыггЬе1п(с) вывод с епй. кон Наберите текст программы и проверьте правильность ответа.
§ 2. Алгоритмы ветвящейся структуры 41 Н. Определите, что будет напечатано в результате работы следующей про- I раммы. Алгоритмический язык Паскаль алг Рго§_20 Рго§гат Рго§_20; нач уаг ъ,с:±пЪе%ет; цел а,с; лог ± ±:Ьоо1еап; а: =23 Ъе§1п * :=тос1(тос1(а, 10) ,2)=0 а:=16; если ± то ±: = (а той 10)то<1 2 = 0; если сНу(а,2)<5 то ± ^Ьеп с:=шос1(а, 10)-4 а (Ну 2 < 5 "Ыхеп иначе с:=сНу(а,2) с: =а той 10 -4 все е1зе с:=а <Иу 2 иначе с:=сНу(а,2)*10+2 е1зе все с: = (а сНу 2)*10+2; вывод с уггЬе1п(с) кон епй. Наберите текст программы и проверьте правильность ответа. Требовалось написать программу, при выполнении которой с клавиату¬ ры считываются координаты точки на прямой (х — действительное число) м проверяется принадлежность этой точки одному из выделенных отрез¬ ков А,СиЕ, включая его границы (см. рис. 25). ЛВС И Е -10 -2 5 15 х Рис. 25. Программист торопился и написал программу неправильно. Паскаль уаг х: геа1; Ъе§1п геасПп(х); х <= -10 ‘ЬЪеп х >= -2 -ЬЪеп х <= 5 ЪЪеп х >= 15 -ЬЪеп мт Н;е(9 принадлежит9) е1зе УгИеС’не принадлежит9) еп<1.
42 Сборник задач по программированию Алгоритмический язык алг нач вещ х ввод х если х <= -10 то если х >= -2 то если х <= 5 то если х >= 15 то вывод *принадлежит* иначе вывод ’не принадлежит* все все все все кон Последовательно выполните следующее. 1. Перерисуйте и заполните таблицу, которая показывает, как работа¬ ет программа при аргументах, принадлежащих различным промежуткам (А, В, С, И и Е). Считать, что отмеченные точки (—10, —2,5,15) принад- лежат заштрихованным областям (Д С и Е соответственно). Об¬ ласть Уел. 1 х < -10 Уел. 2 х ^ —2 Уел. 3 х < 5 Уел. 4 х ^ 15 Программа выведет Область обрабаты¬ вается верно А В С В Е В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет про¬ веряться, «не изв.», если программа ведёт себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выве¬ дет» укажите, что программа выведет на экран. Если программа ничего не выводит, напишите «—»(прочерк). Если для разных значений, принадле¬ жащих промежутку, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «да» или «нет».
§ 2. Алгоритмы ветвящейся структуры 43 2. Доработайте программу, чтобы не было случаев её неправильной рабо¬ ты. 10. Требовалось написать программу, при выполнении которой с клавиа¬ туры считываются координаты точки на прямой (х — действительное чис¬ ло) и проверяется принадлежность этой точки одному из выделенных от¬ резков В и В, включая его границы (см. рис. 26). ЛВС В Е ШШ мм » -14 -15 12 X Рис. 26. Программист торопился и написал программу неправильно. Алгоритмический язык алг нач вещ х ввод х если х >= -14 то если х <= -1 то если х >= 5 то если х <= 12 то вывод 9 принадлежит* иначе вывод 9не принадлежит9 все все все все кон Паскаль уаг х: геа1; Ъе§1п геа<11п(х); ±± х >= -14 ЪЪеп ±± х <= -1 ЪЪеп х >= 5 -ЬЬеп х <= 12 ЪЪеп УгП;е(9принадлежит9) е1зе ыг1-Ье(9не принадлежит9) еп<1.
44 Сборник задач по программированию Последовательно выполните следующее. 1. Перерисуйте и заполните таблицу, которая показывает, как работа¬ ет программа при аргументах, принадлежащих различным промежуткам (А, В, С, О и Е). Считать, что отмеченные точки (—14, —1, 5,12) при¬ надлежат заштрихованным областям {В и В соответственно). Об¬ ласть Уел. 1 х ^ —14 Уел. 2 х < -1 Уел. 3 х ^ 5 Уел. 4 х < 12 Программа выведет Область обрабаты¬ вается верно А В С В Е В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет про¬ веряться, «не изв.», если программа ведёт себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выве¬ дет» укажите, что программа выведет на экран. Если программа ничего не выводит, напишите «—»(прочерк). Если для разных значений, принадле¬ жащих промежутку, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «да» или «нет». 2. Доработайте программу, чтобы не было случаев её неправильной рабо¬ ты. 11. Требовалось написать программу, при выполнении которой с клави¬ атуры считываются координаты точки на плоскости (х, у — действитель¬ ные числа) и проверяется принадлежность этой точки заштрихованной области, включая её границы (см. рис. 27). Рис. 27. Программист торопился и написал программу неправильно.
§ 2. Алгоритмы ветвящейся структуры 45 Алгоритмический язык алг нач вещ х,у ввод х,у если у<=-х*х+2 то если у>=х то если х>=0 то вывод ’принадлежит’ иначе вывод 9 не принадлежиту все все все кон Паскаль уаг х, у: геа1; Ъе§1п геас11п(х, у); у<=-х*х+2 ЪЪеп И у>=х -ЬЪеп х>=0 -ЬЬеп УГ1-Ье( ’ принадлежит ’) е1зе ыгИ;е(,не принадлежит’) еп<1. Последовательно выполните следующее. I. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (А, В, 6\ Я, Я, Я, С и Я). Считать, что все области, кроме заштрихованных, не содержат точек своих границ (см. рис. 28). У1
46 Сборник задач по программированию В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет про¬ веряться, «не изв.», если программа ведёт себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выве¬ дет» укажите, что программа выведет на экран. Если программа ничего не выводит, напишите «—» (прочерк). Если для разных значений, при¬ надлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «да» или «нет». Область Уел. 1 у ^ -х2 + 2 Уел. 2 у^х Уел. 3 х ^ 0 Программа выведет Область обраба¬ тывается верно А В С Б Е Р С Н 2. Доработайте программу, чтобы не было случаев её неправильной рабо¬ ты. 12• Требовалось написать программу, при выполнении которой с клави¬ атуры считываются координаты точки на плоскости (х, у — действитель¬ ные числа) и проверяется принадлежность этой точки заштрихованной области, включая её границы (см. рис. 29). Рис. 29. Программист торопился и написал программу неправильно.
§ 2. Алгоритмы ветвящейся структуры 47 Алгоритмический язык алг нач вещ х,у ввод х, у если х*х+у*у<=4 то если у>=х то если у>=0 то если х<=0 то вывод 9принадлежит’ иначе вывод ,не принадлежит9 все все все все кон Паскаль уаг х, у: геа1; Ъе§1п геас11п(х, у); х*х+у*у<=4 ЪЪеп у>=х ЪЬеп у>=0 1* х<=0 *ЬЪеп ыггЬе (9принадлежит9) е1зе \гг±ге(9ве принадлежит’) епс1. Последовательно выполните следующее. 1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (А, В, С, В, В, В, С, Н и К). Считать, что все области, кроме заштрихованных, не содержат точек своих границ (см. рис. 30). В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет про¬ веряться, «не изв.», если программа ведёт себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выве¬ дет» укажите, что программа выведет на экран. Если программа ничего не выводит, напишите «—» (прочерк). Если для разных значений, при¬ надлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «да» или «нет».
48 Сборник задач по программированию Рис. 30. Об¬ ласть Уел. 1 х2 + у2 < 4 Уел. 2 у^х Уел. 3 у> 0 Н % /Л ь* о ^ Про¬ грамма выведет Область обраба¬ тывается верно А ' в с Б Е Р С Н К 2. Доработайте программу, чтобы не было случаев её неправильной рабо¬ ты. 13. Требовалось написать программу, которая получает с клавиатуры ко¬ ординаты точки на плоскости (ж, у — действительные числа) и определя¬ ет принадлежность точки заштрихованной области, включая её границы (см. рис. 31). Программист торопился и написал программу неправильно. Рис. 31.
§ 2. Алгоритмы ветвящейся структуры 49 Алгоритмический язык алг нач вещ х,у ввод х,у если у<=1 то если х<=1 то если х*х+у*у<=1 то вывод * принадлежит * иначе вывод ’не принадлежит’ все все все кон Паскаль уаг х,у : геа1; Ъе§1П геа<11п(х,у); у<=1 ЪЪеп х<=1 ЪЪеп х*х+у*у<=1 ЪЪеп ыгИ:е1п (’ принадлежит9) е1зе ыгзЛеХпС’не принадлежит’) еп<1. Выполните следующее: 1. Приведите пример таких чисел х, у, при которых программа неверно решает поставленную задачу. 2. Доработайте программу, чтобы не было случаев её неправильной ра¬ боты. 14. Требовалось написать программу, которая получает с клавиатуры ко¬ ординаты точки на плоскости (х, у — действительные числа) и определя¬ ет принадлежность точки заштрихованной области, включая её границы (см. рис. 32). Программист торопился и написал программу неправильно. Л Зак. № 88
50 Сборник задач по программированию Рис. 32. Алгоритмический язык алг нач вещ х,у ввод х,у если у<=1 то если х>=-1.5 то если у<=соз(х) то вывод 9принадлежит9 иначе вывод 9не принадлежит9 все все все кон Паскаль уаг х, у: геа1; Ъе§1п геа<11п(х,у) ; у<=1 ЪЪеп х>=-1.5 ЪЪеп у<=соз(х) ЪЪеп ыг1Ъе1п (9 принадлежит9) е1зе ыггЬе1п(9не принадлежит9) Выполните следующее: 1. Приведите пример таких чисел х, у, при которых программа неверно решает поставленную задачу. 2. Доработайте программу, чтобы не было случаев её неправильной работы.
§ 2. Алгоритмы ветвящейся структуры 51 15. Требовалось написать программу, которая решает уравнение ах4 = Ь < > тносительно х для любых чисел а и Ь, введённых с клавиатуры. Все числа считаются действительными. Программист торопился и написал програм¬ му неправильно. Алгоритмический язык алг нач вещ а,Ъ,г ввод а,Ъ если а=0 то если Ъ=0 то вывод 9Любое х9 иначе вывод 9Нет решений9 все иначе если Ъ=0 то вывод 9х=09 иначе г:=ехр(0.25*1п(Ъ/а)) вывод 9х1=9,г,9 х2=9,-г все все кон Паскаль уаг а,Ъ,г : геа1; Ъе§1п геас!1п(а,Ъ); а=0 ЪЪеп Ъ=0 ЪЪеп УГЗ.Ъе1п(9Любое х9) е1зе ыгП:е(9Нет решений9) е1зе Ъ=0 ЪЪеп уггЬе1п (9х=09) е1зе Ье§1п г:=ехр(0.25*1п(Ъ/а)); уггЬе1п(9х1=9,г,9 х2=9,-г) еп<1 еп(1.
52 Сборник задач по программированию Последовательно выполните следующее: 1. Приведите пример таких чисел, для которых программа правиль¬ но решает задачу, и таких чисел, для которых программа неверно решает задачу. 2. Доработайте программу, чтобы не было случаев её неправильной работы. 16. Требовалось написать программу, которая решает уравнение ау/х = Ь относительно х для любых чисел а и Ь, введённых с клавиатуры. Все числа считаются действительными. Программист торопился и написал програм¬ му неправильно. Алгоритмический язык алг нач вещ а,Ъ,г ввод а,Ъ если а=0 то если Ъ=0 то вывод 5Любое х>=0’ иначе вывод ’Нет решений’ все иначе г:=Ъ/а вывод ’х= ’, г*г все кон Паскаль уаг а,Ъ,г : геа1; Ъе§1П геасПп(а,Ъ); а=0 ЪЪеп Ъ=0 *ЬЪеп ыгП^еЗлОЛюбое х>=0’) е1зе УггЬе1п(’Нет решений’) е1зе Ъе§1п г:=Ъ/а; ыггЬе1п(’х=’, г*г) еп(1 епс1.
§-2. Алгоритмы ветвящейся структуры 53 Последовательно выполните следующее: 1. Приведите пример таких чисел, для которых программа правильно решает задачу, и таких чисел, для которых программа неверно решает за¬ дачу. 2. Доработайте программу, чтобы не было случаев её неправильной работы.
54 Сборник зада ч по программированию § 3. Алгоритмы циклической структуры Основные сведения Алгоритм циклической структуры — это алгоритм, в котором про¬ исходит многократное повторение одного и того же участка программы. Повторяемые участки программы называются циклами. Циклические ал¬ горитмы по способу организации выхода из цикла разделяются на детер¬ минированные (цикл с параметром) и итерационные (цикл с предусло¬ вием и цикл с постусловием). Количество повторений в первых заранее известно. Количество повторений во вторых заранее неизвестно. В этом случае выход из цикла осуществляется при выполнении определённого условия. Цикл с параметром Предписывает выполнять тело цикла для всех значений некоторой пе¬ ременной (параметра цикла) в заданном диапазоне. Блок-схема Алгоритмический язык Паскаль 1 = к, т )-, тело цикла 1 НЦДЛЯ 1 от к до ш тело цикла кц !ог \:=к 1о ш йо операторы; Здесь г — параметр (переменная), к — начальное значение параметра цикла, т — конечное значение параметра цикла. Пример 3.1. Дано целое положительное число п (п < 100). Составьте программу, которая вычисляет сумму чисел 1 + 2 + ЗН 1-п. Решение. 1. Постановка задачи. Входные данные: целое положительное число п (ть < 100). Выходные данные: сумма чисел 1 + 2 + ЗН \-п. 2. Алгоритм решения. Словесный алгоритм 1) Ввод исходного числа п.
§ 3. Алгоритмы циклической структуры 55 2) Обозначим через 5 переменную, в которую будет помещено значение искомой суммы. Переменной 5 присваиваем значение 0. 3) Организуем цикл с параметром г, начальным значением 1 и конеч¬ ным значением п. На каждом шаге цикла к переменной 5 прибавляем зна¬ чение г. (Переменная г на каждой итерации цикла последовательно при¬ нимает значения 1, 2, 3,..., п.) 4) Вывод 5. Блок-схема Алгоритмический язык Паскаль (ЗипГп^ 5=0 к <-Т« ь $+1 (Конец 5ит_п) алг 5ит_п нач цел П,3,1 ввод п 8 := 0 нц для 1 от 1 до п з:=з+1 кц ВЫВОД 8 КОН Рго^гат Зшп_п; уаг п,5,1:1пЪе§ег; Ъе§1п геа(11п(п) ; з: =0; *ог 1: =1 *Ьо п ёо з:=з+1; уггЬе1п(з) еп(1. Цикл с предусловием Предписывает выполнять тело цикла до тех пор, пока истинно условие. Блок-схема Алгоритмический язык Паскаль —<^УсловиеД>— 1дГ Тело цикла 1 5Т нц пока условие тело цикла кц луЬПе условие с!о операторы; 1
56 Сборник задач по программированию Пример 3.2. Составьте программу, которая вычисляет произведение 10 произвольных целых двузначных чисел, введённых с клавиатуры. Решение. 1. Постановка задачи. Входные данные: 10 целых двузначных чисел. Выходные данные: произведение введённых чисел. 2. Алгоритм решения. Словесный алгоритм 1) Счётчику чисел г присваиваем значение 0. 2) Обозначим через р переменную, в которую будет помещено значе¬ ние искомого произведения. Переменной р присваиваем значение 1. 3) Проверяем условие г < 10. Если условие истинно, переходим к вы¬ полнению пунктов 4 — 7, в противном случае — к выполнению пункта 8. 4) Значение счётчика увеличиваем на 1; г := г +1. 5) Вводим очередное число с клавиатуры. (Для хранения очередного числа, вводимого с клавиатуры, используем переменную а.) 6) Текущее произведение умножаем на число, введённое с клавиату¬ ры: р := р- а. 7) Переходим к выполнению пункта 3. 8) Вывод р. Блок-схема Алгоритмический язык Паскаль алг РГ012У нач цел а,1 вещ р 1 :=0 р:=1 нц пока К10 1:=1+1 ввод а р:=р*а кц вывод р кон Рго^гат Рго12У; уаг аДгзлгЬе^ег; р:геа1; Ъе§1п 1:=0; р:=1; уЫ1е К10 с1о Ъе§1П геасПп(а); р:=р*а епс1; уг1Ъе1п(р) еп(1.
§ 3. Алгоритмы циклической структуры 57 Замечание. В рассмотренном примере 3.2 можно было использовать цикл с параметром. В этом случае блок-схема и соответствующая про¬ грамма примут вид: Блок-схема Алгоритмический язык Паскаль С РГ012у2 ) г-1—. р:= 1 гЧ 1=1,10 У , 1 , 1- р:=р-а . 4й (Конец Рго12у2) алг Рго12у2 нач цел а,1 вещ р р:= 1 нц для 1 от 1 до 10 ввод а р:=р*а кц вывод р кон Рго§гат Рго12у2; уаг а,1:1пге§ег; р:геа1; Ъе§1п р:=1; *ог 1: =1 го 10 с1о геас11п(а) ; р:=р*а еш1; угП;е1п(р) еп<1. Пример 3.3. Составьте программу, которая вычисляет сумму произ¬ вольных целых чисел, введенных с клавиатуры. Числа вводятся с клавиа¬ туры до тех пор, пока сумма не превзойдет 100. Решение. 1. Постановка задачи. Входные данные: целые числа. Выходные данные: сумма введённых чисел, не превосходящая 100. 2. Алгоритм решения. Словесный алгоритм 1) Обозначим через 5 переменную, в которую будет помещено значение искомой суммы. Переменной 5 присваиваем значение 0. 2) Проверяем условие 5 ^ 100. Если условие истинно, переходим к выполнению пунктов 3 — 5, в противном случае — к выполнению пункта 6. 3) Вводим очередное число с клавиатуры. (Для хранения очередного числа, вводимого с клавиатуры, используем переменную а.) 4) К текущей сумме прибавляем число, введённое с клавиатуры: з := з-\- а. 5) Переходим к выполнению пункта 2. 6) Вывод 8 — а. (Перед последней проверкой 5 < 100 переменная 5 приняла значение, большее 100, поэтому мы выводим значение 8 — а.)
58 Сборник задач по программированию Блок-схема Алгоритмический язык Паскаль (Зит 100) 1 5 :=0 1— з :=.у+а [Ли (Конец ЗитЮО] ) алг Зшп_100 нач цел г,а з :=0 нц пока з<=100 ввод а з:=з+а кц вывод з-а кон Рго^гаш 5шп_100; уаг з,а:1п'Ье§ег; р:геа1; Ье§1п з: =0; ыМ1е з<=100 До Ъе§1п геа(11п(а); з:=з+а епс1; ыггЬе1п(з-а) епс1. Цикл с постусловием Предписывает выполнять тело цикла до тех пор, пока условие ложно. Так как проверка условия в этом цикле находится после тела цикла, то в отличие от цикла с предусловием тело цикла выполняется хотя бы один раз. ' Блок-схема Алгоритмический язык Паскаль 1 —■> Тело цикла Да <С^Условие^>— Нет 4 нц тело цикла кц при условие гереа! операторы; ип!П условие Далее рассмотрим задачу из примера 3.3. Однако, при её решении бу¬ дем использовать цикл с постусловием. Пример 3.4. Составьте программу, которая вычисляет сумму произ¬ вольных целых чисел, введённых с клавиатуры. Числа вводятся с клавиа¬ туры до тех пор, пока сумма не превзойдет 100.
§ 3. Алгоритмы циклической структуры 59 Решение. 1. Постановка задачи. Входные данные: целые числа. Выходные данные: сумма введённых чисел, не превосходящая 100. 2. Алгоритм решения (с использованием цикла с постусловием). Словесный алгоритм 1) Обозначим через 5 переменную, в которую будет помещено значение искомой суммы. Переменной 5 присваиваем значение 0. 2) Вводим очередное число с клавиатуры. (Для хранения очередного числа, вводимого с клавиатуры, используем переменную а.) 3) К текущей сумме прибавляем число, введённое с клавиатуры: в := 8 + а. 4) Проверяем условие 5 > 100. Если условие ложно, переходим к вы¬ полнению пунктов 2 — 4, в противном случае — к выполнению пункта 5. 5) Вывод з — а. (Перед последней проверкой 5 > 100 переменная 5 приняла значение, большее 100, поэтому мы выводим значение з — а.) Блок-схема Алгоритмический язык Паскаль (Зит_100) 1 алг 8шп_100 Рго&гаш 5ит_100; я :=0 нач чаг з,а:злгЬе^ег; цел з,а Ъе^зл 1 а 1 1 з: =0 з:=0; нц гереаЪ $:=5+а ввод а геа<11п(а); Нет з:=з+а з:=з+а кц при з>100 шгЫ1 з>100; вывод з-а уггЬе1п(з-а) 1^ кон епЦ. (Конец 8шп_10д) * Анализ алгоритмов и программ Пример 3.5. Определите, что будет выведено в результате выполнения алгоритма, представленного в виде блок-схемы (см. рис. 33). Решение. Для решения задачи выполним программу по шагам, занося значения переменных в таблицу:
60 Сборник задач по программированию Рис. 33. Выполняемый оператор Истинность условия Значения переменных X г х := 13 шос! 5 — 3 — г := х • 7 — 3 21 *> 15 да 3 21 х := —х — -3 21 2 \= 2 — 2 — -3 19 2> 15 да -3 19 х := —х - 3 19 2 := 2 — 2 — 3 17 2> 15 да 3 17 х := —х — -3 17 2 := 2 — 2 — -3 15 2> 15 нет -3 15 х > 0 нет -3 15 х := х 4- 2 — 12 15 Таким образом, значение переменной х после выполнения фрагмента алгоритма равно 12. Ответ: 12.
§ 3. Алгоритмы циклической структуры 61 Пример 3.6. В результате выполнения программы, записанной ниже, на экран будет выведено два числа А и В. Укажите такое наибольшее чис¬ ло ху при вводе которого на экран будет выведено сначала 4, а потом 5. Алгоритмический язык Паскаль алг Ргзлп_3_6 Рго&гат Рг1т_3_6; нач уаг х,А,В: злЪе^ег; цел х,А,В Ъе§1п ввод X геай1п(х); А: =0 А: =0; В: =0 В:=0; нц пока х>0 ыЫ1е х>0 йо А:=А+1 Ъе§1п если В<той(х, 10) А:=А+1; ТО 1* В<(х той 10) ЪЪеп В:=той(х, 10) В:=(х той 10); все х:=х (Ну 10 х:=сИу(х, 10) епй; кц ыггЬе1п(А); ыггЬе1п(В) вывод А, не, В епй. кон Решение. Проанализируем, что происходит в результате выполнения данной программы. Для этого в качестве х рассмотрим произвольное це¬ лое число, входящее в диапазон объявленной переменной (в нашем случае 32768 < х < 32767, например, 318). Выполняемый оператор X А В геай1п(х) 318 - — А := 0 318 0 — В := 0 318 0 0 логическое условие х > 0 — истинно (318 > 0) А := А + 1 318 1 0 логическое условие В < (х той 10) — истинно (0 < 8) В := (х той 10) 318 1 8 х := х й!У 10 31 1 8 логическое условие х > 0 —истинно (31 > 0) А := А + 1 31 2 8 логическое условие В < (х той 10) —ложно (8^1)
62 Сборник задач по программированию Выполняемый оператор X А в х := х <Иу 10 3 2 8 логическое условие х > 0 — истинно (3 > 0) А := А + 1 3 3 8 логическое условие В < (х той 10) —ложно (8 у! 3) х := х Й1У 10 0 3 8 логическое условие х > 0 —ложно (0^0) иг11;е1п(А) 0 3 8 иггЬе1п(В) 0 3 8 Заметим, что А принимает значение равное, соответствующее количе¬ ству разрядов в числе х, а переменная В — наибольшая из цифр, входя¬ щих в состав числа х. Из условия задачи следует, что 1) А = 4, значит, исходное число х — четырёхзначное; 2) В = 5, значит, в исходном числе х наибольшая цифра 5. Наибольшим из таких чисел х является 5555. Ответ: 5555. Задания для индивидуальной работы Разработка программ Использование цикла с параметром 1. Дано натуральное число п. Составьте программу, которая выводит на экран в столбик (одно под другим) числа от 1 до п. 2. Дано натуральное число п. Составьте программу, которая выводит на экран числа следующим образом: 1 п 2 п — 1 3 п — 2 п 1 3. Дано натуральное число п, кратное трём. Составьте программу, кото¬ рая выводит на экран числа следующим образом: 1 2 3 4 5 6 п — 2 п— 1 п
§ 3. Алгоритмы циклической структуры 63 4. Дано натуральное число п. Составьте программу, которая выводит на экран таблицу перевода 1,2,... п рублей в доллары США по текущему курсу. (Значение курса вводится с клавиатуры.) 5. Составьте программу, которая выводит на экран таблицу умножения на 6 следующим образом: 1*6 = 6 2*6 = 12 9 * 6 = 54 6. Составьте программу, которая выводит на экран значения у для значе¬ ний х, равных -3, -2, -1,..., 15, если у = 212 — 1,2$4-1; * = х - 1. 7. Составьте программу, которая выводит на экран значения у для значе¬ ний х, равных —3, —2, —1,..., 15, если у = —I2 4- Ш - 1; * = 2x4-1,4. 8. Дано целое число п (п > —10). Составьте программу, которая вычис¬ ляет сумму чисел от —10 до п. 9. Дано целое число п(п < 100). Составьте программу, которая вычисля¬ ет среднее арифметическое чисел от п до 100. 10. Даны целые числа п и тп (п < тп). Составьте программу, которая вычисляет сумму квадратов чисел от п до тп. 11. Дано целое число п(п > 10). Составьте программу, которая вычис¬ ляет произведение чисел от 10 до п. 12. Даны действительное число а, натуральное число п. Составьте про¬ грамму, которая вычисляет ап. (Операцию возведения в степень не ис¬ пользовать.) 13. Дано натуральное число п. Составьте программу, которая находит сумму п2 + (п 4-1)2 Н К (2п)2. 14. Дано натуральное число п. Составьте программу, которая вычисляет сумму ^ + ! + ••• + -. 2 3 71 15. Даны действительное число а, натуральное число п. Составьте про¬ грамму, которая вычисляет произведение а • (а 4-1) (а 4- п — 1). 16. Дано натуральное число п. Составьте программу, которая вычисляет сумму 1 + 1 + ... + ^.
64 Сборник задач по программированию 17. Дано натуральное число п. Составьте программу, которая вычисляет сумму -Лг + -4- Н 1- -7^—. 81111 81112 811171 18. Дано натуральное число п. Составьте программу, которая вычисляет произведение + ^)- 19. Дано натуральное число п. Составьте программу, которая вычисляет ^ к1 + мТТм2 + ' ' + 1п1+1пг" .. + 1.П- 20. Дано натуральное число п. Составьте программу, которая вычисляет 1 —1 (—1)п сумму 4- Н К ^(Операцию возведения в степень 2т1 “1" 1 2т1 4" 1 2т14~ 1 не использовать.) 21. Дано натуральное число п. Составьте программу, которая вычисляет сумму 4 Ь(-1)П1§(-~У (Операцию возведения V 71 / V 714-1 / \2тг/ в степень не использовать.) 22. Даны действительное число х и натуральное число п. Составьте про¬ грамму, которая вычисляет сумму зтх 4- зт2 х Н 1- зтп х. (Операцию возведения в степень не использовать.) 23. Даны действительное число х и натуральное число п. Составьте про¬ грамму, которая вычисляет сумму зш х 4“ 8т(зта;) 4- 8т(зт(зтх)) Н 1- зт(зт(... зтх)...). 24. Даны натуральное число п и действительные числа аь а2, ап. Составьте программу, которая вычисляет сумму о>\ 4~ о>2 Н V ап (без использования массива). 25. Даны натуральное число ть и действительные числа аь а2, ап. Составьте программу, которая находит значение выражения ^1 — аг 4- аз 4- • • • 4- (—1)п+1ап (без использования массива, условного оператора и операции возведения в степень). 26. Известны оценки за контрольную по информатике п учащихся. Составьте программу, которая вычисляет среднюю оценку (без исполь¬ зования массива). 27. Известно количество осадков, выпавших за каждый день июня и июля. Составьте программу, которая определяет среднедневное количе¬ ство осадков за каждый месяц (без использования массива).
§ 3. Алгоритмы циклической структуры 65 28. Дано натуральное число п. Составьте программу (без использования массива), которая вычисляет значения элементов последовательности а0, аь а2,..., ап, если а0 = -1, а* = га*-! + т (г = 1,2,..., п). г 29. Последовательность чисел Фибоначчи образуется следующим обра¬ зом: первый и второй члены последовательности равны 1, каждый следу¬ ющий член равен сумме двух предыдущих (1,1,2,3,5,8,13,21,...). Да¬ но натуральное число к. Составьте программу, которая находит значение к-то члена последовательности Фибоначчи. 30. Даны натуральное число п и целые числа Х1,х2,... ,хп. Составьте программу (без использования массива), которая находит количество пар «соседних» чисел, равных 2. 31. Даны натуральное число п и целые числа хьх2,... ,хп. Составьте программу (без использования массива), которая находит количество пар «соседних» чисел, равных между собой. 32. Даны натуральное число п и целые числа Х1,х2,... ,хп. Составьте программу (без использования массива), которая находит среднее ариф¬ метическое тех из них, которые кратны 4. 33. В группе п учеников. Известен рост каждого из них. Учеников, име¬ ющих рост выше 165 см, будем называть высокими. Составьте программу (без использования массива), которая находит средний рост высоких уче¬ ников и средний рост остальных учеников. 34. Известны данные о количестве осадков, выпавших за каждый день января. Составьте программу (без использования массива), которая опре¬ деляет, какого числа выпало наибольшее количество осадков. Если таких дней несколько, программа должна вывести дату последнего из них. Использование циклов с предусловием и постусловием 35. Составьте программу, которая находит такое наименьшее натураль¬ ное п, что п2 + 2п> 1000. 36. Дано натуральное число п. Составьте программу, которая определяет, сколько цифр содержится в числе п. 37. Дано натуральное число п. Составьте программу, которая вычисляет сумму цифр этого числа. 38. Дано натуральное число п. Составьте программу, которая находит первую цифру этого числа. 39. Дано натуральное число п. Составьте программу, которая определяет, входит ли цифра 6 в запись числа п2.
66 Сборник задач по программированию 40. Даны натуральные числа пит. Составьте программу, которая вы¬ числяет сумму последних т цифр числа п. 41. Дано натуральное число п, в котором все цифры различны. Составьте программу, которая находит порядковый номер (считая с конца числа) его максимальной цифры. 42. Дано натуральное число п, в котором все цифры различны. Составьте программу, которая находит порядковый номер (считая с начала числа) его минимальной цифры. 43. Дано натуральное число п. Составьте программу, которая определяет, сколько раз в числе п содержится наибольшая цифра этого числа. 44. Дано натуральное число п. Составьте программу, которая определяет, сколько цифр этого числа кратны 3. 45. Дано натуральное число п. Составьте программу, которая находит сумму цифр этого числа, больших 5. 46. Дано натуральное число п. Составьте программу, которая получает из него число, цифры в котором расположены в обратном порядке. 47. Дано натуральное число п. Составьте программу, которая определя¬ ет, является ли последовательность цифр этого числа (при просмотре их справа налево) упорядоченной по возрастанию. 48. Дано натуральное число п. Составьте программу, которая определя¬ ет, является ли последовательность цифр этого числа (при просмотре их слева направо) упорядоченной по неубыванию. 49. Дана непустая последовательность целых чисел, оканчивающаяся ну¬ лём. Составьте программу, которая находит сумму всех чётных чисел по¬ следовательности. 50. Дана непустая невозрастающая последовательность целых чисел, оканчивающаяся нулём. Несколько чисел, идущих подряд, равны между собой. Составьте программу, которая определяет количество таких чисел. 51. Дана непустая невозрастающая последовательность целых чисел, оканчивающаяся нулём. Несколько чисел, идущих подряд, равны между собой. Составьте программу, которая находит количество различных чи¬ сел в этой последовательности. 52. Дана последовательность целых чисел, оканчивающаяся нулём. Со¬ ставьте программу, которая определяет, есть ли в последовательности хо¬ тя бы одно число, оканчивающееся на 8. 53. Дано действительное число а. Составьте программу, которая среди чисел 1,1 + ^,1 + ^ + ^,... находит первое большее а. А А о
§ 3. Алгоритмы циклической структуры 67 54. Дано действительное число а. Составьте программу, которая находит такое наименьшее натуральное число п, что 1 + ^4-^Н 1- — > а. 2 3 71 55. Дано действительное число е. Составьте программу, которая вычис- гр Л»2 Л*3 ляет приближённое значение суммы 1 + — + — + — + где х = 0,5 (тг! = 1 • 2 • 3 п). Нужное приближение считается полученным, если очередное слагаемое меньше, чем е. 56. Дано действительное число е = 0,001. Составьте программу, которая * .. зт(х) , зт(2х) , зт(Зх) , вычисляет приближенное значение суммы — 2х ^ * *» где х = 3,7. Нужное приближение считается полученным, если очередное слагаемое меньше, чем е. 57. Дано действительное число е = 0,001. Составьте программу, которая вычисляет приближённое значение произведения ^1 — ^^ ^1 — ^1 — ^2^ Нужное приближение считается получен¬ ным, если очередной сомножитель рг удовлетворяет условию (1 — |р*|) < е. 58. Около стены под наклоном стоит палка длиной 4 м. Один её конец находится на расстоянии у от стены. Составьте программу, которая опре¬ деляет значение угла а между палкой и землёй для значений у, изменяю¬ щихся от 1 до 4 метров с шагом 0,2 метра. 59. При столкновении подвижного шара массой тп\ с неподвижным ша¬ ром массой 7712 первый передаёт ему часть своей кинетической энергии Т, которая рассчитывается по формуле Т = ^ ^ Составьте про¬ грамму, которая определяет значение Т для тп\ = 100 г и 7712, изменяю¬ щимся от 80 до 280 г с шагом 20 г. 60. Плотность воздуха убывает в зависимости от высоты Н по закону р = роехр~Нг. Считая, что р0 = 1,3 кг/м3, г = 1,4 • 10“4 1/м, составьте программу, которая выводит на экран таблицу зависимости плотности от высоты для значений Ну изменяющихся от 0 до 500 м с шагом 10 м. 61. Траектория снаряда, вылетающего из орудия под углом а с начальной скоростью г>о, описывается уравнением у = х . Составьте 2г?о соз а программу, которая с точностью Дх = 2 км определяет точку, в которой снаряд коснётся земли. Решите при а = г>о = 30 км/ч, д = 9,8 м/с2. 6
68 Сборник задач по программированию Анализ алгоритмов и программ 1. Определите, что будет выведено в результате выполнения алгоритма, представленного в виде блок-схемы (см. рис. 34). Рис. 34. Составьте программу, соответствующую данной блок-схеме, и проверьте правильность полученного ответа. 2. Определите, что будет выведено в результате выполнения алгоритма, представленного в виде блок-схемы (см. рис. 35). ( Рго§_22 ) 1 *:= 5; у:= 17; г=у (Ну х х:=(х+у)той1 Г=2 + 5 5г (конец Ргое_22) Рис. 35. Составьте программу, соответствующую данной блок-схеме, и проверьте правильность полученного ответа.
§ 3. Алгоритмы циклической структуры 69 3. Определите, что будет выведено в результате выполнения алгоритма, представленного в виде блок-схемы (см. рис. 36). Рис. 36. Составьте программу, соответствующую данной блок-схеме, и проверьте правильность полученного ответа. 4. Определите, что будет выведено в результате выполнения алгоритма, представленного в виде блок-схемы (см. рис. 37). Рис. 37.
70 Сборник задач по программированию Составьте программу, соответствующую данной блок-схеме, и проверьте правильность полученного ответа. 5. Определите, что будет напечатано в результате работы следующей программы. Алгоритмический язык Паскаль алг Рго§_25 Рго^гат Рго§_25; нач уаг т,п,1:1п-Ье§ег; цел т,п,1 Ъе§1п т: =0 *ог 1: =1 "Ьо 10 <1о нц для 1 от 1 до 10 Ъе§1п п:=1+2 п:=1+2; если п>10 п>10 ЪЪеп то т:=п+т*2 т:=п+т*2 иначе т: =411+1 е1зе все т:=т+1 кц еш1; вывод т уг11;е1п(т) кон еп<1. Наберите текст программы и проверьте правильность ответа. 6. Определите, что будет напечатано в результате работы следующей программы. Алгоритмический язык Паскаль алг Рго§_26 Рго^гат Рго§_26; нач уаг а,ЪД:1п1;е§ег; цел а,Ъ,1 Ъе§1п а:=1 а:=1; Ъ:=3 Ъ: =3; нц для 1 от 6 до 1 шаг -1 *ог 1:=б йошгЬо 1 <1о Ъ:=Ъ+1 Ъ:=Ъ+1; кц а+Ъ>25 ЪЪеп если а+Ъ>25 Ъ:=Ъ-а то Ъ:=Ъ-а е1зе иначе Ъ:=Ъ+а Ъ:=Ъ+а; все иггЬе1п(Ъ) вывод Ъ еп(1. кон Наберите текст программы и проверьте правильность ответа.
§ 3. Алгоритмы циклической структуры 71 7.' Определите, что будет напечатано в результате работы следующей программы. Алгоритмический язык Паскаль алг Рго§_27 Рго^гаш Рго§_27; нач уаг Ъ,1,^ : 11гЬе§ег; цел ЪДо Ъе§1п Ъ:=0 Ъ:=0; нц для 1 от 14 до 16 *ог д.: =14 "Ьо 16 с!о нц для 2 от 4 до 2 шаг -1 *ог ^:=4 (ИогаЪо 2 <1о если шос1(1,з)=0 ±± (1 той ^)=0 -ЬЬеп то Ъгеак выход е1зе иначе Ъ:=Ъ+(1 сНу 2) ; Ъ: =Ъ-»-<1± V ( ±, ыггЬе1п(Ъ) все еп(1. кц кц вывод Ъ кон Наберите текст программы и проверьте правильность ответа. 8. Определите, что будет напечатано в результате работы следующей программы. Алгоритмический язык Паскаль алг Рго§_28 Рго^гаш Рго§_28; нач уаг х,у:1п1:е§ег; цел х,у Ъе§1п х:=15 х:=15; у:=-10 у:=-10; нц пока х*у<0 ыЫ1е х*у<0 йо х:=х-3 Ъе§1п у:=у+1 х:=х-3; кц у:=у+1 вывод у епй; кон ыгН;е1п(у) епй. Наберите текст программы и проверьте правильность ответа.
72 Сборник задач по программированию 9. Определите, что будет напечатано в результате работы следующей программы. Алгоритмический язык Паскаль алг Рго§_29 Рго^гат Рго§_29; нач чаг а,Ъ: злтЬе^ег; цел а,Ъ Ъе§1п а: =23 а:=23; Ъ:=4; п уЫ1е а>Ъ с!о нц пока а>Ъ ±± а тос! 2 = 0 -ЬЪеп если тос!(а,2)=0 то Ъ:=Ъ+а Ъ:=Ъ+а е1зе иначе а:=а-2*Ъ+1; а:=а-2*Ъ+1 уггЬе1п(Ъ) кц епс!. вывод Ъ кон Наберите текст программы и проверьте правильность ответа. 10. Определите, что будет напечатано в результате работы следующей программы. Алгоритмический язык Паскаль алг Рго§_30 Рго§гат Рго§_30; нач уаг з,т:хп^Ье^ег; цел з,т Ъе§1п з: =32 з:=32; т:=18357 т:=18357; нц пока з>10 уЫ1е з>10 с!о з:=з-то<!(т,10) Ъе§1П т:=<Цу(т, 10) з: =з-т тос! 10; кц т:=т <Иу 10 з:=з+т епс!; вывод 3 з:=з+т; кон уг11;е1п(з) епс!. Наберите текст программы и проверьте правильность ответа.
§ 3. Алгоритмы циклической структуры 73 11. Определите, что будет напечатано в результате работы следующей программы. Алгоритмический язык Паскаль алг Рго§_31 Рго^гат Рго§_31; нач уаг з,т:злгЬе^ег; цел з,т Ъе§1п 5: =0 з: =0; т:=3164 т:=3164; нц пока т>10 уЫ1е т>10 (Но Ъе§1П <1=то(1 (т, 10) <1:=т то<1 10; з: =5+с! з:=з+<1; т=с11у(1П,10) т:=т <Пу 10 кц епс1; з:=з+т з:=з+т; вывод 3 угН;е1п(з) кон еп<1. Наберите текст программы и проверьте правильность ответа. 12. Определите, что будет напечатано в результате работы следующей программы. Алгоритмический язык Паскаль алг Рго§_32 Рго^гат Рго§_32; нач уаг с,т,с1:1п1;е§ег; цел с у ш, (1 Ъе§1п с :=0 с :=0; ш:=2594 т:=2594; нц пока т>10 уЫ1е т>10 <1о Ъе§1П с1=то<1(т, 10) с!:=т то<1 10; с: = (с+с1)*10 с: = (с+<1)*10; т=<Цу(т,10) т:=т сНу 10 кц епй; с:=с+т с:=с+т; вывод с уггЬе1п(с) кон епб. Наберите текст программы и проверьте правильность ответа.
74 Сборник задач по программированию 13. Определите, что будет напечатано в результате работы следующей программы. Алгоритмический язык Паскаль алг Рго§_33 Рго^гаш Рго§_33; нач уаг х,у: 12гЬе§ег; цел х,у ±:Ъоо1еап; лог ± Ъе§1п х:=10; у:=1 х:=10; у:=1; <0 н «И ±: Чгие; нц гереаЪ х:=<Иу(х, 3) х:=х (Ну 3; у:=у+1 у:=у+1; если х+у=4 ±± х+у=4 ЪЪеп то ^:=нет I:=*а1зе все шгЫ1 (х=0) ог по-Ь ±; кц при х = 0 или не 1 иггЬе1п(х) вывод X епс1. кон Наберите текст программы и проверьте правильность ответа. 14. Определите, что будет напечатано в результате работы следующей программы. Алгоритмический язык Паскаль алг Рго§_34 Рго^гаш Рго§_34; нач уаг х,у: 1п1;е§ег; цел х,у *:Ъоо1еап; лог ± Ъе§1п ю п >> ю 1 II * х:=-5; у:=5; ±:=нет ±:=*а1зе; НЦ гереа* х:=х-1; у:=у+1 х:=х-1; у:=у+1; если аЪз(х-у)>15 аЪз(х-у)>15 ЪЪеп то выход Ъгеак все шгЫ1 ±; кц при 1 уггЬе1п(х) вывод X епс1. кон Наберите текст программы и проверьте правильность ответа.
§ 3. Алгоритмы циклической структуры 75 15. Определите, что будет напечатано в результате работы следующей программы. Алгоритмический язык Паскаль алг Рго§_35 Рго^гаш Рго§_35; нач уаг 1,п,к: 1П*Ье§ег; цел 1,п,к 1:Ъоо1еап; лог 1 Ъе§1п 1:=0; ±:=да 1: =0; *:=Ъгие; п:=1; к:=3 п:=1; к:=3; нц гереа*Ь д.: =1+1; п:=-1*п д.: =1+1; п:=-л.*п; если п<0 п<0 -ЬЬеп то к:=к+1 к:=к+1 иначе ±:=нет е1зе все ±:=±а1зе; кц при 1=5 или не I шгЫ1 (1=5) ог поЪ ±\ вывод к уг1Ъе1п(к) КОН епс1. Наберите текст программы и проверьте правильность ответа. 16. Определите, что будет напечатано в результате работы следующей программы. Алгоритмический язык Паскаль алг Рго§_36 Рго^гаш Рго§_36; нач чат л.,п,к: ллгЬе§ег; цел 1,п,к; лог ± ±:Ъоо1еап; 1:=7; *:=да; к:=10 Ъе§1п нц пока не(1=1 или не ±) 1:=7; *:=Ъте; к: =10; 1:=тод(к,1) гереа*Ь п:=сНу(к,1+1) з.:=к той 1; если п<1 то к=к+1 п:=к (Ну (1+1); иначе *=нет И п<1 "Ькеп к:=к+1 все е1зе 1:=±а1зе; КЦ шгЬИ (1=1) ог поЪ(1); вывод к уг1*Ье1п(к) КОН епс1. Наберите текст программы и проверьте правильность ответа.
76 Сборник задач по программированию 17. Определите, какое число должно быть введено в переменную п, чтобы в результате работы следующей программы было напечатано число 9876. Алгоритмический язык Паскаль алг Рго§_37 нач цел п ввод п нц пока п>10 вывод тод(п,10)+4 п:=сНу(п,10) кц кон Рго^гат Рго§_37; уаг п:1згЬе§ег; Ъе§1п геад1п(п) ; уЫ1е п>10 до Ъе§1п УггЬе(п тод 10 + 4); п:=п сНу 10 епд епд. Наберите текст программы и проверьте правильность ответа. 18. Определите, какое число должно быть введено в переменную п, чтобы в результате работы следующей программы было напечатано число 2910. Алгоритмический язык Паскаль алг Рго§_38 нач цел п ввод п нц пока п>10 вывод <Иу(п,5)*2 п:=шод(п,10)*2 кц кон Рго^гат Рго§_38; уаг п:л.п1;е§ег; Ъе§1п геад1п(п); уЫ1е п>10 до Ъе§1п игН;е(п д1у 5 + 4); п:=(п тод 10)*2 епд епд. Наберите текст программы и проверьте правильность ответа. 19. В результате выполнения программы, записанной ниже, на экран бу¬ дут выведены два числа К и К. Укажите наибольшее из таких чисел х, при вводе которых алгоритм печатает сначала 4, а потом 5.
§ 3. Алгоритмы циклической структуры 77 Алгоритмический язык Паскаль алг Рго§_39 Рго§гат Рго§_39; нач уаг х,К,Я,у: злгЬе§ег; цел х,К,Я,у Ъе§1п ввод X геа(11п(х) ; К:=0 К:=0; Я:=0 Я: =9; у:=той(х, 10) у:=х той 10; нц пока х>0 уЫ1е х>0 йо Ъе§1п К:=К+1 К:=К+1; если Я<той(х,10) то Я>х той 10 ЪЪеп Я:=шой(х,10) Я:=х той 10; все х:=х й1У 10 х:=й1у(х, 10) епй; кц Я:=у-Я; Я:=у-Я уггЬе1п(К); вывод К, не, Я ыгИ;е1п(Я) кон епй. Наберите текст программы и проверьте правильность ответа. 20. В результате выполнения программы, записанной ниже, на экран бу¬ дет выведено число 5. Укажите такое число ж, при вводе которого на экран будет выведено число 26941. Алгоритмический язык Паскаль алг Рго§_40 Рго^гат Рго§_40; нач уаг х,3: гиХе^ет; цел х,3 Ъе§1п ввод X геай1п(х); 5:=0 о" п со нц.пока х>0 уЫ1е х>0 йо Ъе^Лп 3:=3*10+шой(х,10) 5:=5*10+х той 10; х:=й1у(х,10) х:=х й1У 10 кц епй; вывод 3 ыггЬе1п(5) кон епй. Наберите текст программы и проверьте правильность ответа.
78 Сборник задач по программированию 21. В результате выполнения программы, записанной ниже, на экран бу¬ дет выведено число В. Укажите такое число х, при вводе которого на экран будет выведено число 32701. Алгоритмический язык Паскаль алг Рго§_42 нач цел х,у,К,А,В ввод х у:=9748 К:=0 А:=0 В:=0 если х<у то х:=х+у у:=х-у х:=х-у все нц пока х>0 А: =тос! (х,10) +тос1 (у, 10) +К если А>9 то А:=тос1(А, 10) К:=1 иначе К:=0 все В:=В*10+А х:=с11у(х, 10) у:=й1у(у, 10) кц В:=В*10+К если той(В,10)=0 то В:=й1у(В,Ю) вывод В кон Рго§гаш Рго§_42; уаг х,у,К,А,В:1п-Ье§ег; Ъе§1п геай1п(х); у:=9748; А: =0; В:=0; ±± х<у гЬеп Ъе§1п х:=х+у; у:=х-у; х:=х-у епс1; иЫ1е х>0 йо Ъе§1п А:=х той 10+у той 10+К; А>9 "ЬЬеп Ъе§1п А:=А той 10; К: =1 епй е1зе К:=0; В:=В*10+А; х:=х й1У 10; у:=у й1У 10 епй; В:=В*10+К; В той 10 = 0 "Ыгеп В:=В й1У 10; В:=В*10+х той 10; иггЬе1п(В) епй. Наберите текст программы и проверьте правильность ответа.
§ 3. Алгоритмы циклической структуры 79 22. В результате выполнения программы, записанной ниже, на экран бу¬ дут выведены два числа А и В. Укажите такое число ху при вводе которого на экран будет выведено сначала 5, а потом 3. Алгоритмический язык Паскаль алг Рго§_41 Рго^гат Рго§_41; нач уаг х,А,В,з: ПгЬе^ег; цел х,А,В,з Ъе§1п ввод X геа(11п(х); А: =0 А: =0; В:=0 В: =0; нц пока х>0 ыЫ1е х>0 йо Ъе§1п А:=А+1 А:=А+1; з:=то<1(х,100) з:=х той 100; если то(Кз,10)=<Цу(з,10) з то<1 10 = з (Ну 10 то В:=В+1 ЪЪеп В:=В+1; все х:=х (Ну 10 х:=(Ну(х, 10) еп(1; кц ыгН;е1п(А); вывод А, не, В ыггЬе1п(В) кон епй. Наберите текст программы и проверьте правильность ответа.
80 Сборник зада ч по программированию § 4. Массивы Основные сведения Массив — это именованная группа однотипных данных, хранящихся в последовательных ячейках памяти. Каждая ячейка содержит элемент массива. Элементы нумеруются по порядку, но необязательно начиная с единицы. Порядковый номер элемента массива называется индексом этого элемента. Размерность массива — количество элементов, которое содержит массив. Индекс элемента массива — номер элемента в массиве. Количество используемых индексов массива может быть различным. Массивы с одним индексом называют одномерными, с двумя — двумер¬ ными и т. д. Одномерный массив нестрого соответствует вектору в мате¬ матике, двумерный — матрице. Одномерные массивы При решении задач одномерные массивы удобно представлять как последовательность данных (например, чисел), каждый элемент которой имеет определённый номер. Нумерация элементов зависит от условия за¬ дачи или организации алгоритма. Чаще всего элементы массива нумеру¬ ются целыми числами, начиная от единицы или нуля. При этом номер каж¬ дого последующего элемента на единицу больше предыдущего. Обращение к определённому элементу одномерного массива осущест¬ вляется путем указания имени переменной массива и индекса элемента в квадратных скобках (в некоторых языках программирования в круглых скобках). Например, пусть дан одномерный массив А, состоящий из 10 элементов, проиндексированных от 1 до 10: Имя массива Элементы массива Индексы элементов массива В этом массиве значение пятого элемента А[5] равно 9. Если третьему элементу массива присвоить значение —6 (А[3] := —6), а шестому элементу массива присвоить значение десятого (А[6] := А[ 10]), то массив примет вид: А г N -2 4 14 -1 9 32 0 -7 16 4 123456789 10
§ 4. Массивы 81 Имя массива Элементы массива Индексы элементов 123 456789 10 массива Следующая задача аналогична задаче, рассмотренной в примере 1.2 параграфа 1. Пример 4.1. Дана последовательность действительных чисел аь аг, ..., аю- Составить программу, которая меняет местами значения 3-го и 9-го элементов этой последовательности и выводит полученную последо¬ вательность на экран. Решение. Словесный алгоритм 1) Ввод исходных чисел 01, ..., аю- Ввод каждого элемента осу¬ ществляется последовательно в цикле, начиная с 1-го по 10-й. 2) Переменной Ь присваиваем значение переменной аз. 3) Переменной аз присваиваем значение переменной ад. 4) Переменной ад присваиваем значение переменной Ь. 5) Вывод последовательности чисел аь аг,..., аю. Вывод каждого элемента осуществляется последовательно в цикле, начи¬ ная с 1-го по 10-й. Блок-схема (ОЪтепгп) |Ч К10 Ь /^з7 I 6:=а[3] 1 а[3]:=а[9] а[9\:=Ъ гЧ '=1. Ю Ь Д-. Г ^ (Конец ОЬтеп_т) А ( > -2 4 -6 -19 4 0 -7 16 4
82 Сборник задач по программированию Алгоритмический язык Паскаль алг 0Ътеп_ш Рго^гат 0Ьтеп_т; нач уаг Ъ:геа1; вещ Ъ а: аггау [1..10] о* геа1; цел 1 1:1п*Ье§ег; вещтаб а[1:10] Ъе§1П нц для 1 от 1 до 10 *ог 1:=1 Ъо 10 <1о ввод а[д] геа<11п(а[1] ); кц Ъ:=а[3] ; Ъ: =а [3] а[3] :=а[9] ; а[3] :=а[9] а[9]:=Ъ; а [9] :=Ь *ог 1:=1 Ъо 10 йо нц для 1 от 1 до 10 уггЬе1п(а[1] , * у) вьшод а[1] ,, , епс!. кц кон Так же как и при рассмотрении примера 1.2 параграфа 1, проиллю¬ стрируем решение данной задачи без использования вспомогательной пе¬ ременной Ъ. В этом случае словесный алгоритм, блок-схема и соответствующая программа принимают следующий вид: Словесный алгоритм 1) Ввод исходных чисел а\, а>2, ..., «ю- Ввод каждого элемента осу¬ ществляется последовательно в цикле, начиная с 1-го по 10-й. 2) Переменной а[3] присваиваем результат суммирования значений пе¬ ременных а[3] и а[9] (а[3] = а[3] + а[9]). 3) Переменной а[9] присваиваем результат разности значений пере¬ менных а[3] и а[9] (а[9] = а[3] - а[9]). 4) Переменной а[3] присваиваем результат разности значений пере¬ менных а[3] и а[9] (а[3] = а[3] - а[9]). 5) Вывод последовательности чисел а\, а2,..., аю. Вывод каждого элемента осуществляется последовательно в цикле, начи¬ ная с 1-го по 10-й.
§ 4. Массивы 83 Блок-схема (ОЪшеп_ш) гЧ 1=1, Ю Ь Гт1 а[3]:=а[3]+а[9] а[9]:=я[3]-а[9] а[3]:=а[3]-а[9] гЧ »=1, Ю Ь (конец ОЪтепт) Алгоритмический язык Паскаль алг 0Ътеп_ш Рго^гаш 0Ътеп_т; нач уаг а: аггау [1..10] о± геа1; цел 1 1: 11гЬе§ег; вещгаб а[1:10] Ъе§1п нц для 1 от 1 до 10 *ог 1: =1 -Ьо 10 <1о ввод а[1] геа<11п(а[1] ); кц а[3] :=а[3]+а[9]; а[3] : =а [3] +а [9] а [9] :=а[3] -а [9] ; а [9] :=а[3] - а [9] а[3] :=а[3] -а [9]; а[3] :=а [3] - а [9] *ог 1:=1 -Ьо 10 До нц для 1 от 1 до 10 уггЬе1п(а[з.] , * О вывод а[1],, , епд. кц кон Пример 4.2. Дано натуральное число п и последовательность дей¬ ствительных чисел аь 02,..., ап. Составить программу, которая находит наибольший элемент последовательности.
84 Сборник задач по программированию Решение. Словесный алгоритм 1) Ввод исходных чисел аь аг, ..., аю. Ввод каждого элемента осу¬ ществляется последовательно в цикле, начиная с 1-го по 10-й. 2) Обозначим через тах переменную для хранения наибольшего эле¬ мента. Переменной тах присвоим значение первого элемента массива (тах := а\). 3) Будем сравнивать каждый элемент массива, начиная со второго, со значением переменной тах. Если значение очередного элемента мас¬ сива окажется больше, то переменной тах присваиваем значение этого элемента. Сравнение каждого элемента осуществляется последовательно в цикле, начиная со 2-го по 10-й. 4) Вывод переменной тах. Блок-схема тах :=д[1] т
§ 4. Массивы 85 Алгоритмический язык Паскаль алг Мах_е1 Рго^гат Мах_е1; нач уаг тах:геа1; вещ тах агаггау [1..10] о* геа1; цел 1 1:1п1;е§ег; вещтаб а[1:10] Ъе§1П нц для 1 от 1 до 10 ^ог 1:=1 Ъо 10 с1о ввод а[1] геа<11п(а[1] ) ; кц тах:=а[1] ; тах := а[1] *ог э.:=2 -Ьо 10 <1о нц для 1 от 2 до 10 а[1]>тах *ЬЬеп если а [л.] > тах то тах:=а[1] ; тах:=а[1] уг1'Ье1п(тах) все еп<1. кц вывод тах кон Двумерные массивы При решении задач двумерные массивы удобно представлять как таб¬ лицу данных (например, чисел), каждый элемент которой имеет двойную нумерацию — номер строки и номер столбца таблицы. Для обращения к элементу двумерного массива необходимо указать имя массива и в квадратных скобках через запятую — значения двух ин¬ дексов, на пересечении которых расположен элемент. Для определённо¬ сти будем считать, что первый индекс указывает номер строки, а второй — номер столбца. Например, для обозначения элемента первой строки вто¬ рого столбца используется запись а[ 1,2]. (Заметим, что в некоторых язы¬ ках программирования скобки могут быть круглыми, а также квадратны¬ ми, но при этом каждый индекс заключён в отдельную скобку.) Пусть дан двумерный массив А размером 4 х 10: Индексы столбцов 1 2 3 4 5 6 7 8 9 10 1 -2 4 14 -1 9 32 0 -7 16 8 2 3 4 -4 -3 -9 24 И -1 6 4 3 -1 34 6 -1 9 14 5 4 12 8 4 -2 5 11 -9 5 32 0 -7 16 27
86 Сборник задач по программированию В этом массиве значение элемента А[2,6] равно 24 (элемент располо¬ жен на пересечении второй строки и шестого столбца). Если элементу массива А[2,6] присвоить значение —6 (А[2,6] := —6), а элементу массива А[4,3] присвоить значение элемента А[ 1,10] (А[4,3] := А[1,10]), то массив примет следующий вид: Индексы столбцов 1 2 3 4 5 6 7 8 9 10 1 -2 4 14 -1 9 32 0 -7 16 8 2 3 4 -4 -3 -9 -6 11 -1 6 4 3 -1 34 6 -1 9 14 5 4 12 8 4 -2 5 8 -9 5 32 0 -7 16 27 А Имя массива Пример 4.3. Дан двумерный массив А размером 6x8. Составить про¬ грамму, которая находит наибольший элемент в каждой строке и выводит его на экран. Решение. Словесный алгоритм 1) Ввод исходных элементов массива оц, а\2, •••, ^18, а2ь ^22, •••* а28, • • •, «61, ав2, • •, лее- Ввод каждого элемента осуществляется после¬ довательно в двух вложенных циклах, сначала элементы первой строки, начиная с 1-го по 8-й, затем — второй, третьей,..., шестой. 2) Поиск наибольшего элемента каждой строки будем проводить по¬ следовательно, сначала в первой строке, затем во второй и т.д. 3) Обозначим через тах переменную для хранения наибольшего эле¬ мента. Переменной тах присвоим значение первого элемента просматри¬ ваемой строки массива (тах := ац, г € {1,2,..., 6}). Будем сравнивать каждый элемент текущей строки массива, начиная со второго, со значением переменной тах. Если значение очередного эле¬ мента массива окажется больше, то переменной тах присваиваем значе¬ ние этого элемента. Сравнение каждого элемента осуществляется после¬ довательно в цикле, начиная со 2-го по 8-й. 4) Вывод переменной тах. 5) Повторяем действия пункта 3 и 4 последовательно для второй, тре¬ тьей, ..., шестой строк.
§ 4. Массивы 87
88 Сборник задач по программированию Алгоритмический язык алг Мах_е12 нач вещ шах; цел 1,3 вещтаб а[1:6,1:8] нц для 1 от 1 до 6 нц для з от 1 до 8 ввод а[1,3] кц кц нц для 1 от 1 до 6 шах:=а[1,1] нц для ^ от 2 до 8 если а[1,^]>тах то тах:=а[1,^] все кц вывод тах,, , кц кон Анализ алгоритмов и программ Пример 4.4. 1. В таблице Тетр хранятся данные измерений среднесуточной темпера¬ туры за неделю в градусах (Тетр[ 1 ] — данные за понедельник, Тетр[2] — за вторник и т. д.). Определите, что будет напечатано в результате выпол¬ нения следующей программы. Алгоритмический язык Паскаль алг Рг1т_4_4 Рго^гат Рг1т_4_4; нач Уаг к, т, йау: 11гЬе§ег; целтаб Тетр[1:7] Тетргаггау[1..7] о* 1пЪе§ег; цел к, т, йау Ъе^1п Тетр[1]:=25; Тетр[2]:=22 Тетр[1]:=25; Тетр[2]:=22; Тетр[3]:=20; Тетр [4]:=26 Тетр[3]:=20; Тетр[4]:=26; Тетр[5]:=28; Тетр[6]:=25 Тетр[5]:=28; Тетр[6]:=25; Тетр[7]:=24 Тетр[7]:=24; йау:=1; т:=Тетр[1] <1ау:=1; т:=Тетр[1]; нц для к от 2 до 7 *ог к: =2 Ъо 7 <1о Ъе§1п если Тетр[к] > т то ±± Тетр[к]>т ЪЪеп Ъе§1п ш: =Тетр [к] ; йау: =к т: =Тетр [к] ; йау: =к все епй КЦ епй; вывод <1ау уг11;е(йау) КОН епй.
§ 4. Массивы 89 Решение. Проанализируем, что происходит в результате выполнения данной программы. После инициализации (задания начальных значений) элемен¬ тов массива (Тетр[1] :=25, Тетр[2] :=22, Тетр[3] :=20, Тетр[4] :=26, Тетр[5] :=28,Тетр[б] : =25, Тетр[7] : =24), переменных йау (с!ау:=1) пе¬ ременная т принимает значение первого элемента массива (т: =Тетр [1] ). Далее в цикле от 2-го до 7-го каждый из элементов заданного массива сравнивается со значением переменной т (сначала первый элемент, затем второй и т.д.). Если в результате выполнения сравнения значение очеред¬ ного элемента будет больше, чем тп, то переменной т присваивается его значение (т:=Тетр[к]), а переменной йау присваивается значение номе¬ ра этого элемента (йау:=к). То есть в результате выполнения цикла осу¬ ществляется поиск наименьшего элемента и его номера. Значит, в результате выполнения цикла переменная д,ау примет значе¬ ние 3, которое и будет выведено на экран после цикла. Ответ: 3. Пример 4.5. Ниже представлена программа, в ходе выполнения ко¬ торой значения элементов массива сначала задаются, а затем меняются. Определите, что будет напечатано в результате выполнения этой програм¬ мы. Алгоритмический язык Паскаль алг Рг1т_4_5 Рго^гаш Рг1ш_4_5; нач уаг 1,6:1пЬе^ет; цел 1,(1 а:аггау [0. . 12] о* 11гЬе§ег; целтаб а[0:12] Ъе§1п нц для 1 от 0 до 12 *ог 1:=0 го 12 (1о а[1]:=1+2 с7 + •н II 1—1 •гН 1—1 кц <1:=а[10] ; с!:=а[10] 1от 1:=12 дошгЬо 1 <1о нц для 1 от 12 до 1 шаг -1 а[1] : =а [1—1] ; а[1] :=а[1-1] а[0]:=6-11; кц ±от 1:=0 го 12 (1о а[0] : =6.-11 ыг:1ге(а[1] , ’ 0 нц для 1 от 0 до 12 епс!. вывод а[1] ,9 9 кц кон
90 Сборник задач по программированию Решение. После работы первого цикла значение каждого элемента массива бу¬ дет на 2 больше его номера. Затем переменной с1 присваивается значение десятого элемента массива, то есть 12. После этого в следующем цикле делается сдвиг значений элементов массива с номерами от 0 до 11 на один вправо (12-му элементу массива присваивается значение 11-го, а 11-му — значение 10-го и т. д.). В ре¬ зультате работы цикла в каждом элементе массива будет число, на едини¬ цу большее его номера (2 — 1 = 1). После окончания второго цикла эле¬ менту массива с номером 0 присваивается значение й — 11 = 12 — 11 = 1. Ответ: 1 2 3 4 5 6 7 8 9 10 11 12 13. Дополнительная информация Очень часто в задачах требуется упорядочить некоторую последова¬ тельность, то есть выполнить сортировку элементов массива. Существует большое количество различных алгоритмов сортировки. Подробное опи¬ сание различных методов сортировки, их эффективности можно найти в книгах Д. Кнута [6,7], Н. Вирта [1,2]. Ниже представлены два наиболее простых метода сортировки масси¬ вов. Сортировка простым выбором (по возрастанию) 1. В исходной последовательности выбирается наименьший элемент. 2. Найденный элемент меняется местами с первым элементом. Затем эти операции повторяются с оставшимися п — 1 элементами. То есть в последовательности, начиная со второго элемента, выбирается наименьший, затем он меняется местами со вторым. Далее операции повторяются с оставшимися п — 2 элементами и т.д., пока массив не окажется упорядоченным. Пример 4.6. В программе, записанной ниже, последовательность, со¬ стоящая из десяти целых чисел, упорядочивается в порядке возрастания с помощью сортировки методом простого выбора.
§ 4. Массивы 91 Алгоритмический язык Паскаль алг Рг1т_4_6 Рго^гаш Рг1т_4_6; нач уаг 1^ »к: хп'Ье^ег \ цел целтаб а[1:10] а:аггау [1..10] о* злгЬе^ег; нц для 1 от 1 до 10 Ъе§1п ввод а[з.] *ог 1: =1 -Ьо 10 <1о КЦ геас11п(а[1] ); нц ДЛЯ 1 от 1 до 9 *ог 1: —1 Ъо 9 с1о нц для 2 от 1 До Ю-1 *ог у.= 1 *Ьо 10-1 До если а[з]>а[^+1] то 1* аЕ)]>а[з+1] гЬеп к:=а[^]; а[^] :=а[^+1] Ъе§1п а[^+1] :=к к:=а[^] ; все а[^] :=а1о+1] ; КЦ а[з+1] :=к КЦ епс1; нц для 1 от 1 до 10 ^ог 1: =1 -Ьо 10 <1о вывод а[з.] ,у 9 ыгИ:е(а[1] ,9 9) КЦ епс1. КОН Сортировка методом пузырька (по возрастанию) Данный алгоритм основан на принципе сравнения и обмена пары со¬ седних элементов до тех пор, пока не будут рассортированы все элементы. 1. В исходной последовательности просматриваются пары соседних элементов. Если элементы некоторой пары находятся в неправильном по¬ рядке (например, левее стоит больший элемент), то их меняют местами. В результате наибольший элемент окажется в последовательности по¬ следним. 2. Затем в последовательности просматриваются пары соседних эле¬ ментов за исключением последнего элемента. Если элементы некоторой пары находятся в неправильном порядке (левее стоит больший элемент), то их меняют местами. Далее операции повторяются с оставшимися п-2 элементами и т. д. до тех пор, пока в просматриваемой части последовательности не останется только один элемент. На этом сортировка заканчивается. Пример 4.7. В программе, записанной ниже, последовательность, состоящая из десяти целых чисел, упорядочивается в порядке возраста¬ ния с помощью сортировки методом пузырька.
92 Сборник задач по программированию Алгоритмический язык Паскаль алг Рг1Ш_4_7 Рго§гат Рг1т_4_7; нач уаг 1,з ,т:11гЬе§ег; цел ±,з,т а:аггау [1..10] о* 1пЪе%ет; целтаб а[1:10] Ъе§1п нц для 1 от 1 до 10 ±ох 1:=1 Ъо 10 с!о ввод а [д.] геас!1п(а[1] ) ; кц *ог 1:=Ю ёошгЬо 2 с!о нц для 1 от 10 до 2 *ог з :=2 *Ьо 1 (1о нц для з от 2 ДО 1 а[^-1]>а[^] *ЬЪеп если а[^-1]>а[^] то Ъе§1п т:=а[з-1] т:=а[Д-1] ; а[<з — 1] :=а[з] а[Д — 1] :=а[Д] ; а Ц] :=т а[Д] :=т все епс1; кц ±от ±:=1 -Ьо 10 <1о кц уггЬе(а[дЗ ,у у) нц для 1 от 1 до 10 епс!. вывод а[1],, у кц кон Задания для индивидуальной работы Разработка программ Одномерные массивы 1. Дано натуральное число п (п < 100). Составьте программу, которая за¬ полняет одномерный массив, состоящий из п элементов, последователь¬ ностью чисел: 1,3,5, 7, 2. Даны действительные числа ау й и натуральное число п (п < 100). Составьте программу, которая заполняет одномерный массив, состоящий из п элементов, первыми п членами арифметической прогрессии с первым членом а и разностью прогрессии Л. 3. Составьте программу, которая заполняет одномерный массив двадца¬ тью первыми натуральными числами, кратными 5 или 7. Полученный мас¬ сив вывести на экран.
§ 4. Массивы 93 4. Дано натуральное число п(п < 1000000). Составьте программу, кото¬ рая заполняет одномерный массив цифрами данного числа, расположен¬ ными в обратном порядке (первый элемент массива равен последней циф¬ ре числа, второй — предпоследней и т.д.). Незаполненные элементы мас¬ сива должны быть равны нулю. Полученный массив вывести на экран. 5. Даны натуральное число п и действительные числа а, Ь (а ф Ь). Составьте программу, которая заполняет одномерный массив последова¬ тельности чисел $1, ^2,- •. Лпу где и = а + гк, к = (Ь — а)/га. Полученный массив вывести на экран. 6. Даны натуральные числа п, ах, ..., ап. Составьте программу, которая определяет количество членов последовательности ах, ..., ап, являющих¬ ся нечётными числами. 7. Даны натуральные числа п, аь ..., ап. Составьте программу, которая определяет количество членов последовательности аь ..., а„, кратных 5 и не кратных 3. 8. Даны натуральные числа п, ах, ..., а„. Составьте программу, которая определяет количество членов последовательности ах, ..., ап с чётными порядковыми номерами и нечётными значениями. 9. Даны натуральные числа п, ах, ..., ап. Составьте программу, которая вычисляет сумму тех элементов последовательности ах, ..., ап, которые кратны 3. 10. Даны натуральные числа п, ах,..., ап. Составьте программу, которая вычисляет сумму тех элементов последовательности ах, ..., ап, которые нечётны и отрицательны. 11. Даны натуральное число п и последовательность целых чисел ах,..., ап. Составьте программу, которая находит среднее арифметическое тех элементов данной последовательности ах,..., ап, которые кратны 3 и не кратны 9. 12. Даны натуральное число п и последовательность целых чисел ах,..., ап. Составьте программу, которая находит наибольший элемент, имеющий нечётный порядковый номер в данной последовательности. 13. Даны натуральное число п и последовательность целых чисел ах,..., ап. Составьте программу, которая находит сумму наибольшего элемен¬ та среди отрицательных и наименьшего среди положительных элементов данной последовательности. 14. Даны натуральное число п и последовательность целых чисел ах,..., ап. Составьте программу, которая определяет количество пар двух сосед¬ них положительных чисел в данной последовательности.
94 Сборник задач по программированию 15. Даны натуральное число п и последовательность целых чисел ах,, ап. Составьте программу, которая в данной последовательности находит количество таких пар двух соседних чисел одного знака, чтобы модуль первого числа был больше модуля второго числа. 16. Даны натуральное число п и последовательность целых чисел ах,..., ап. Составьте программу, которая выясняет, является ли данная последо¬ вательность упорядоченной по убыванию. 17. Даны натуральное число п и последовательность целых чисел ах,..., ап. Составьте программу, которая выясняет, содержит ли данная после¬ довательность три подряд идущих нулевых элемента. 18. Даны чётное натуральное число п и последовательность действитель¬ ных чисел ах, ..., ап. Составьте программу, которая вычисляет разность сумм элементов первой и второй половины данной последовательности. 19. Даны чётное натуральное число п и последовательность действитель¬ ных чисел ах, ..., ап. Составьте программу, находящую количество эле¬ ментов, для которых ближайшим целым числом является 1. 20. Даны натуральное число п и последовательность целых чисел а1}..., ап. Составьте программу, которая заменяет элементы, равные нулю, на 7. Полученную последовательность вывести на экран. 21. Даны натуральное число п и последовательность действительных чи¬ сел ах,..., ап. Составьте программу, которая элементы с чётными номе¬ рами делит на п. Полученную последовательность вывести на экран. 22. Даны натуральное число п и последовательность действительных чи¬ сел ах,..., ап. Составьте программу, которая все отрицательные элементы последовательности делит на значение наибольшего элемента. Получен¬ ную последовательность вывести на экран. 23. Даны натуральное число п и последовательность действительных чи¬ сел ах,..., ап. Составьте программу, которая все положительные элемен¬ ты последовательности с индексами, кратными трём, умножает на значе¬ ние наименьшего элемента. Полученную последовательность вывести на экран. 24. Даны натуральное число п и последовательность действительных чи¬ сел ах,..., ап. Составьте программу, которая находит наибольший и наи¬ меньший элементы и меняет их местами. Полученную последовательность вывести на экран. 25. Даны натуральное число п и одномерный массив А, состоящий из п элементов. Составьте программу, которая в массиве В располагает снача¬ ла положительные, а затем отрицательные элементы исходного массива.
§ 4. Массивы 95 26. Даны натуральное число п и одномерный массив, состоящий из п эле¬ ментов. Составьте программу, которая в заданном массиве положитель¬ ные элементы уменьшает вдвое, а отрицательные заменяет на значения их индексов. Полученный массив вывести на экран. 27. Даны натуральное число п и одномерный массив Ау состоящий из п элементов. Составьте программу, которая осуществляет циклический сдвиг компонентов заданного массива вправо на две позиции, то есть поз¬ воляет получить массив ап_ 1, апу ах, аг, ап-2- Полученный массив вывести на экран. 28. Даны натуральное число п и последовательность целых чисел ах,..., ап. Составьте программу, которая заменяет все элементы данной последо¬ вательности, большие 5, числом 5 и вычисляет количество таких членов. Полученную последовательность и найденное количество замен вывести на экран. 29. Дано натуральное число п. Составьте программу, которая образовы¬ вает массив В, состоящий из положительных элементов заданного одно¬ мерного массива А(п)у больших пяти. Вывести на экран образованный массив и количество его элементов. 30. Даны натуральное число п и действительные числа ах, ап. Составьте программу, формирующую массив В, элементами которого яв¬ ляются числа Ьх,..., ЪПу где Ъ\ = ах, Ь* = (а*+х — а*)/3 (г = 2,..., п — 1), Ъп — 0>п• 31. Даны натуральное число п и одномерный массив Ау состоящий из п элементов. Составьте программу, формирующую массив В{п)у в котором элементы, стоящие на чётных местах, равны соответствующим элементам массива Д(п), а стоящие на нечётных местах — соответствующим эле¬ ментам массива А(п)у взятым с противоположным знаком. 32. Даны натуральное число п и одномерный массив Ау состоящий из п элементов. Составьте программу, которая записывает элементы данного массива в обратном порядке. 33. Даны два одномерных массива Х(2Ь) и У(20). Составьте программу, которая формирует третий массив 2У состоящий из одинаковых для X и У элементов. 34. Даны натуральное число п и два одномерных массива Х(п) и У(п). Составьте программу, которая находит максимальную разность между соответствующими элементами массивов Х(п) и У(п) с чётными номе¬ рами.
96 Сборник задач по программированию Двумерные массивы 35. Даны целые числа аь аъ, а3. Составьте программу, которая заполняет двумерный массив В размером 3x3 элементами Ь^ = а* — 2а^. Получен¬ ный массив вывести на экран. 36. Даны действительные числа аь аг,..., аю, Ьь &2,- • •, Ью. Составь¬ те программу, которая заполняет двумерный массив С размером 15 х 10 элементами с^- = а*/|Ь»|. Полученный массив вывести на экран. 37. Дан двумерный массив размером 5x8. Составьте программу, которая выводит на экран все элементы последней строки. 38. Дан двумерный массив размером 5x8. Составьте программу, которая выводит на экран все элементы третьего столбца. 39. Даны натуральное число п и двумерный массив размером п х (п +1). Составьте программу, которая находит среднее арифметическое каждой строки массива. 40. Даны натуральное число п и двумерный массив размером пх (п +1). Составьте программу, которая находит среднее арифметическое каждого столбца, имеющего нечётный номер. 41. Даны натуральное число п и двумерный массив размером пх п. Со¬ ставьте программу, которая находит произведение элементов, лежащих на главной диагонали (элементы, у которых индекс строки равен индек¬ су столбца). 42. Даны натуральные числа п, га и двумерный массив размером п х га. Составьте программу, которая находит количество нечётных элементов первого и последнего столбцов. 43. Даны натуральные числа п, га и двумерный массив размером п х га. Составьте программу, которая находит среднее арифметическое наиболь¬ шего и наименьшего значений её элементов. 44. Даны натуральные числа п, га и двумерный массив размером п х га. Составьте программу, которая находит сумму элементов той строки, в ко¬ торой расположен элемент с наименьшим значением. Предполагается, что такой элемент единственный. 45. Даны натуральное число п и двумерный массив размером пх п. Со¬ ставьте программу, которая в каждой строке с чётным элементом на глав¬ ной диагонали находит наибольший из всех элементов. 46. Даны натуральные числа п, га и двумерный массив размером пхт. Составьте программу, которая находит сумму положительных нечётных элементов.
§ 4. Массивы 97 47. Даны натуральное число п и двумерный массив размером п х п. Составьте программу, которая находит наименьший из элементов, лежа¬ щих ниже главной диагонали. 48. Даны натуральное число ть и двумерный массив размером п х п. Составьте программу, которая находит произведение отрицательных эле¬ ментов, лежащих выше главной диагонали. 49. Даны натуральные числа п, га и двумерный массив размером п х га. Составьте программу, которая находит сумму отрицательных элементов каждого столбца матрицы и определяет, какая из сумм наибольшая и в каком столбце. 50. Даны натуральные числа п, га и два двумерных массива А(ть, га) и В(т,п). Составьте программу, которая определяет, есть ли в матрице А строка, равная какому-либо из столбцов матрицы В. Выдать соответ¬ ствующее сообщение. 51. Даны натуральное число п и двумерный массив размером п х п. Составьте программу, упорядочивающую по возрастанию элементы стро¬ ки, в которой находится минимальный элемент главной диагонали. Полу¬ ченный массив вывести на экран. 52. Даны натуральные числа п, га и двумерный массив размером п х га. Составьте программу, которая меняет местами элементы первой и послед¬ ней строк. Полученный массив вывести на экран. 53. Даны натуральные числа п, га и двумерный массив размером п х га. Составьте программу, которая меняет местами наибольший и наименьший элементы. Полученный массив вывести на экран. 54. Даны натуральные числа п, га и двумерный массив размером п х га. Составьте программу, которая заменяет все положительные элементы наибольшим элементом. Полученный массив вывести на экран. 55. Даны натуральные числа п, га и двумерный массив размером п х га. Составьте программу, которая удаляет в заданном массиве все элементы первой строки и первого столбца. Полученный массив вывести на экран. 56. Даны натуральные числа п, га и двумерный массив А(п, га). Составьте программу, которая одномерный массив В заполняет чётными элементами исходного массива, а массив С — нечётными элементами. 57. Дано натуральное число п и двумерный массив А(п, п). Составьте программу, которая заполняет одномерный массив В элементами, распо¬ ложенными по периметру исходного массива А. 58. Даны натуральные числа п, к и двумерный массив А(п, п). Составьте программу, формирующую одномерный массив В, каждый элемент кото- 7. Зак. № 88
98 Сборник задач по программированию рого равен сумме тех элементов соответствующей строки данного двумер¬ ного массива, которые меньше к. Полученный массив вывести на экран. 59. Даны натуральное число п и двумерный массив А(п,п). Составьте программу, формирующую одномерный массив В, каждый элемент ко¬ торого равен количеству отрицательных элементов в соответствующем столбце данного двумерного массива, кратных 3 или 5. Полученный мас¬ сив вывести на экран. 60. Даны натуральные числа п, пгь и двумерный массив Л(п, га). Составь¬ те программу, которая формирует одномерный массив В, каждый эле¬ мент которого равен наибольшему по модулю элементу соответствующе¬ го столбца данного двумерного массива. Полученный массив вывести на экран. 61. Даны натуральные числа п, га и двумерный массив Д(п, га). Составь¬ те программу, формирующую одномерный массив Ву каждый элемент ко¬ торого равен последнему чётному элементу соответствующей строки дан¬ ного двумерного массива. Если такого элемента в строке нет, то соответ¬ ствующий элемент массива В должен быть равен 0. Полученный массив вывести на экран. 62. Даны натуральные числа п, га, двумерный массив А(п, га) и одномер¬ ный массив В(п). Составьте программу, которая производит замену всех элементов некоторой строки массива А элементами массива В. Получен¬ ный массив вывести на экран. 63. Дано натуральное чётное число п и двумерный массив А(п,п). Составьте программу, которая меняет местами первую строку со второй, вторую с третьей и т.д. Полученный массив вывести на экран. 64. Дано натуральное чётное число п и двумерный массив А(п,п). Составьте программу, которая меняет местами первый столбец с послед¬ ним, второй с предпоследним и т.д. Полученный массив вывести на экран. 65. Даны натуральные числа п, к (к < п < 100) и двумерный массив А(п, п). Составьте программу, которая после к-й строки вставляет строку, состоящую из чисел 1, 2,..., п. Полученный массив вывести на экран. Анализ алгоритмов и программ 1. Ниже представлена программа, в ходе выполнения которой значения элементов массива сначала задаются, а затем меняются. Определите, что будет напечатано в результате выполнения этой программы.
§ 4. Массивы 99 Алгоритмический язык Паскаль алг Рго§_43 Рго§гаш Рго§_43; нач уаг 1:1п1:е§ег; цел 1 а:аггау [1..10] о± 1пге§ег; целтаб а[1:10] Ъе§1п нц для 1 от 1 до 10 ±от х: =1 го 10 с!о а[1]:=10-1 а[1] :=10-1; кц *ог 1: =1 го 5 с!о нц ДЛЯ 1 от 1 до 5 а[1] :=а[1+5] ; а[1] :=а[1+5] ±от 1:=1 1:о 10 с!о кц ыгг1:е(а[1] ,9 9) нц для 1 от 1 до 10 епс!. вывод а[1] ,} 9 кц кон Наберите текст программы и проверьте правильность ответа. 2. Ниже представлена программа, в ходе выполнения которой значения элементов массива сначала задаются, а затем меняются. Определите, что будет напечатано в результате выполнения этой программы. Алгоритмический язык Паскаль алг Рго§_44 Рго§гаш Рго§_44; нач уаг 1, з : 1пге§ег; цел 1,з а:аггау [0..9] о* 1пге§ег; целтаб а[0:9] Ъе§1п НЦ ДЛЯ 1 от 0 до 9 ±от 1:=0 1:о 9 с!о а[1]:=1+1 а[1]=1+1; НЦ ДЛЯ 1 от 0 до 4 ±от 1:=0 10 9 <1о нц для з от 1+1 до 4 *ог ^:=1+1 1:о 4 с!о а[1+]] :=а[1+з]+а[1] а[1+]] :=а[1+]]+а[1] ; кц ±от 1:=0 го 9 с!о кц угз.геСаШ,* 9) нц ДЛЯ 1 от 0 до 9 епс!. вывод а[з.] ,9 9 кц кон Наберите текст программы и проверьте правильность ответа.
100 Сборник задач по программированию 3. Ниже представлена программа, в ходе выполнения которой значения элементов массива сначала задаются, а затем меняются. Определите, что будет напечатано в результате выполнения этой программы. Алгоритмический язык Паскаль алг Рго§_45 Рго^гат Рго§_45; нач уаг 1:1пЪе$гет; цел 1; целтаб а[1:10] а:аггау [1..10] о* 1пге§ег; нц для 1 от 1 до 10 Ъе§1п а. [1] :=1*3 *ог 1:=1 1:о 10 с!о кц а[х]:=1*3; нц для 1 от 1 до 10 *ог 1:=1 го 10 До а[1] :=тос1(а[д] ,3) а [1] : =а [1] тос! 3; кц *ог 1: =1 го 10 с!о нц для 1 ох 1 до 10 уг^еСаШ,* 7) вывод а[1] ,9 7 епс1. кц кон Наберите текст программы и проверьте правильность ответа. 4. Ниже представлена программа, в ходе выполнения которой значения элементов массива сначала задаются, а затем меняются. Определите, что будет напечатано в результате выполнения этой программы. Алгоритмический язык Паскаль алг Рго§_46 Рго^гат Рго§_46; нач уаг 1:1пге§ег; цел 1; целтаб а[1:8] а:аггау [1..8] о* 1пге§ег; нц ДЛЯ 1 от 1 до 8 Ъе§1п а[1]:=1*2 ^ог 1:=1 го 8 с!о кц а[1]:=1*2; НЦ ДЛЯ 1 от 1 до 8 *ог 1:=1 го 8 с!о а[1] :=тос!(а[1] ,2) Ъе§1п а[8-1+1]:=а[1] а[1] : =А [1] тос! 2; кц а[8-1+1] :=а[1] НЦ ДЛЯ 1 ОТ 1 до 8 еп<1; вывод а[1],9 7 гог х: =1 го 8 с!о кц уг1ге(а[1],’ О кон епс!. Наберите текст программы и проверьте правильность ответа.
§ 4. Массивы 101 5. Ниже представлена программа, в ходе выполнения которой значения элементов массива сначала задаются, а затем меняются. Определите, что будет напечатано в результате выполнения этой программы. Алгоритмический язык Паскаль алг Рго§_47 Рго^гаш Рго§_47; нач уаг 1,2 1п1е§ег; цел ±$2,к а:ахтау[1..10,1..10] о* 1п1е§ег; целтаб а[1:10,1:10] Ье§1п нц для 1 от 1 до 10 ±от 1: =1 ^о 10 <1о нц для 2 от 1 до 10 *ог ^:=1 1о 10 <1о а[1^] :=-1 :=-1; КЦ ±от 1: =1 1о 10 с!о кц *ог 2 :=1 Ъо 9 с!о нц для 1 от 1 до 10 И 1=^ 1Ьеп нц для 2 от 1 до 9 ай,]] :=0 если 1=^ то е1зе а[1,^]:=0 а[1^] :=1+2; иначе *ог 1:=1 1о 10 с!о а[1,з] :=1+Д Ъе§1П все ±от 1: =1 1о 10 с!о кц угИе(а[1,21, ’ ’) ; кц угИе1п нц для 1 от 1 до 10 епс! нц для 2 от 1 До Ю еп<1. вывод а[1,^],* * кц вывод НС кц кон Наберите текст программы и проверьте правильность ответа. 6. Ниже представлена программа, в ходе выполнения которой значения элементов массива сначала задаются, а затем меняются. Определите, что будет напечатано в результате выполнения этой программы.
102 Сборник задач по программированию Алгоритмический язык алг Рго§_48 нач цел ±,з,а,к целтаб С[1:10,1:10] нц для 1 от 1 до 10 нц для з от 1 до 10 С [1,^3:=1+з КЦ КЦ а: =10 нц для 1 от 1 до 10 к:=С[1,а]; С[1,а] : =С[1,13 ; СС1,1] :=к кц нц для 1 от 1 до 10 нц для з от 1 до 10 вывод С[1,^3,’ ’ КЦ ВЫВОД НС КЦ КОН Паскаль Рго^гат Рго§_48; уаг 1, з ,а,к: 1п1:е§ег; Сгаггау [1..10,1..10] о* 1пЪе§ег; Ъе^1п ^ог 1: =1 *Ьо 10 с!о *ог 1: =1 Ъо 10 с!о С[д,:=1+;); а:=10; *ог 1: =1 Ъо 10 с!о Ъе§1п к:=С[1,а] ; С[3.,а] : =С[±,±]; С[±,х] :=к епс1; ^ог 1:=1 Ъо 10 с!о Ъе§1п *ог 1:=1 Ъо 10 с!о ыг1Ъе(С[1,,9 ’); ыгН:е111 епс! епс1. Наберите текст программы и проверьте правильность ответа.
§ 4. Массивы 103 7. Ниже представлена программа, в ходе выполнения которой значения элементов массива сначала задаются, а затем меняются. Определите, что будет напечатано в результате выполнения этой программы. Алгоритмический язык Паскаль алг Рго§_49 Рго&гат Рго§_49; нач уаг 1,^ ,с:11гЬе§ег; цел 1,],с; т: аггау [0. . 6,0. . 9] о* 1п1:е§ег; целтаб ш[0:6,0:9] Ъе§1П НЦ ДЛЯ 1 от 1 до б ^ог 1: =1 "Ьо 6 с!о Ъе§1п с:=1-1 с:=1-1; нц для 2 от 1 До 9 ^ог 2 :=1 *Ьо 9 с!о ш[1,^]=т[1-1,^-1] т[1,Ц :=т[1-1,з-1] ; кц т[1,0] :=с т[1,0]=с; епс1; кц с:=т[4,1]+т[5,2] +т[6,3] ; с: =т [4,1] +т [5,2] +т [6,3] угН:е(с) вывод с еп<1. кон Наберите текст программы и проверьте правильность ответа. 8. Ниже представлена программа, в ходе выполнения которой значения элементов массива сначала задаются, а затем меняются. Определите, что будет напечатано в результате выполнения этой программы. Алгоритмический язык алг Рго§_50 нач цел 1,с,Ъ,к; целтаб А[1:8,1:8] А[0,0] :=1; А[0,2]:=1; А[0,1] : =0 нц для 1 от 3 до 8*8-1 если шос1(1,2)=0 то с:=А [с11у(1-4,8) , тос!(1-4,8)] Ъ:=А[сИу(1-2,8) , тосЩ-2,8)] А[сИу(д.,8), тос1(1,8)] :=с+Ъ иначе А[сИу(1,8), тос1(1,8)] :=0 все кц вывод А[2,2] кон
104 Сборник задач по программированию Паскаль Рго§гат Рго§_50; уаг 1,с,Ъ,к:1пЪе§ег; А:аггау [1..8,1.-8] о± злтЬе^ег; Ъе%±п А [0,0]:=1; А [0,2]:=1; А [0,1]:=0; *ог 1:=3 Ъо 8*8-1 с!о ±± ± тос! 2=0 *ЪЪеп Ъе§1п с:=А[(1-4) <Иу 8, (1-4) тос! 8]; Ъ: =А[(1-2) сИу 8, (1-2) тос! 8]; А[1 сНу 8, 1 тос! 8]:=с+Ъ епс! е1зе А[1 сИу 8, 1 тос! 8] :=0; уг11:е(А[2,2]) епс!. Наберите текст программы и проверьте правильность ответа.
§ 5. Строки символов 105 § 5. Строки символов Основные сведения Строка символов представляет собой последовательность, содержа¬ щую ноль и более символов, записанную в одной строке программы и за ¬ ключённую в одиночные кавычки (в некоторых языках программирования используются двойные кавычки). Строка символов, ничего не содержа¬ щая между кавычками, является нулевой строкой. Длина символьной строки — это фактическое число символов в строке. Отношение между любыми двумя строковыми значениями устанавли¬ вается согласно отношению порядка между значениями символов в соот¬ ветствующих позициях. В результате сравнения двух строк получается логическое значение (1гие или Га1зе). Сравнение строк производится слева направо посимволь¬ но до первого несовпадающего символа; большей считается та строка, в которой первый несовпадающий символ имеет больший код в таблице кодировки. Если строки имеют различную длину, но в общей части сим¬ волы совпадают, считается, что короткая строка меньше. Строки равны, если они имеют равную длину и соответствующие символы совпадают. При решении задач к символам в строках можно обращаться как к элементам массива или использовать специальные процедуры и функции, предназначенные для работы со строками. Пример 5.1. Дана строка символов. Составить программу, которая находит количество вхождений заданного символа в строке. Решение. Словесный алгоритм 1) Ввод исходной строки. 2) Ввод искомого символа. 3) Определяем длину строки. 4) Присваиваем счётчику значение 0. 5) Просматриваем каждый символ в строке. Если очередной символ совпадает с заданным, то увеличиваем счётчик символов на единицу. 6) Вывод значения счётчика.
106 Сборник задач по программированию Блок-схема Ф (Конец Ко1_уЬо2(Г) Алгоритмический язык алг Ко1_уЪо2<1 нач лит з сим с цел к,1еп,1 вывод 9 введите строку* вывод з вывод 9введите символ9 вывод с 1еп:=длин(з); нц для 1 от 1 до 1еп если з[1] = с то к:=к+1; все кц вывод к кон
§ 5. Строки символов 107 Паскаль Рго^гаш Ко1_у1ю2с1 уаг з:з1:г1п§; с: сЪаг; к ,1еп,1:Ъу1;е; Ъе§1п уггЬе1п (9введите строку9) ; геас11п(з); уг 11:6111 (’введите символ*); геасИп(с); 1еп:=1еп§1;11(з); к:=0; *ог 1: =1 *Ьо 1еп <1о з[д.] = с -Ькеп к:=к+1; уггЬе1п(к) епс!. Пример 5.2. На вход программы подаются сведения о баллах, набран¬ ных на ЕГЭ по информатике учениками данной школы. В первой строке сообщается количество учащихся N (./V < 100), каждая из следующих N строк имеет формат: < Фамилия > < Инициалы > <БаллыПоИнформатике>, где < Фамилия > — строка, состоящая не бо¬ лее чем из 20 символов, < Инициалы > — строка, состоящая из 4 символов (буква, точка, буква, точка), <БаллыПоИнформатике> — целые числа в диапазоне от 0 до 100. Все элементы одной строки отделены друг от друга пробелом. Пример входной строки: Петров С.Н. 70 Составить программу, которая подсчитывает средний балл. Решение. Словесный алгоритм 1) Ввод N — количество учащихся. 2) Обозначим через 5 переменную, в которую будет помещено значение суммы набранных всеми учащимися баллов. Переменной 5 присваиваем значение 0.
108 Сборник задач по программированию 3) Организуем цикл с параметром г, начальным значением 1 и конеч¬ ным значением N. На каждом шаге цикла осуществляем ввод сведений по набранному баллу очередного учащегося. При вводе данных пропускаем символы до первого пробела. Симво¬ лы после первого пробела считываем в целочисленную переменную Ь, при необходимости переводя их из строкового формата в числовой, и добав¬ ляем их к переменной 5. 3) Вывод значения а/ЛГ. Блок-схема ( Зг_Ьа11 ) $:=0 1 I—< 1=1, ЛГ >—. (конец 5г_Ьа1Г)
§ 5. Строки символов 109 Алгоритмический язык алг 5г_Ъа11 нач лит с лог ± Цел 8,N,1,110111 вывод ’введите количество учащихся’ ввод N з:=0; нц для 1 от 1 до N пош:=1; ввод с; нц пот:=пош+1; кц при с[пот]=’ ’ Ъ:=лит_в_цел(с[пот+1:длин(с)] 9±) з:=з+Ъ кц вывод 8/К кон Паскаль Рго^гат 5г_Ъа11; уаг с: сЪаг; з,К,1: ЪуЪе; Ъе§1п ыггЬе1п(’введите количество учащихся’); геай1п(Ю; з:=0; *ог 1:=1 го N <1о Ъе§1п гереа1: геай(с); щгЫ1 с=’ ’; геай1п(Ъ); з:=з+Ъ епй; ыг11;е1п(8/Ю епй.
110 Сборник задач по программированию Анализ алгоритмов и программ Пример 5.3. Определить, что будет напечатано в результате работы следующей программы. Алгоритмический язык алг Рго§_52 нач ЛИТ 8,81 лог ± цел к з:=,ко1око1, з1:=’о1’ к:=1 нц пока к<=длин(з)-длин(з1)+1 если з[к:(к+длин(з1)-1)]=з1 то з[к:(к+длин(з1)-1)] иначе к:=к+1 все КЦ ВЫВОД 8 КОН Паскаль Рго^гаш Рго§_52; уаг 5,51:згг1п§; к:5.п1;е§ег; Ъе§1п 5:=,ко1око1,; &1:=уо1у \ к: =1; уЫ1е к<=1еп§1:Ь(5)-1еп§1;11(51)+1 <1о ±± Сору(5,к,1еп^Ь(з1))=51 ЪЬеп Ве1еге(з,к,1еп§-Ы1(51)) е1зе к:=к+1; уггЬе1п(з) еп<1.
§ 5. Строки символов 111 Решение. Проанализируем, что происходит в результате выполнения данной программы. После инициализации (задания начальных значений) пере¬ менных 5 (8: = ,ко1око1,), з1 (51:=,о1,) и к (к: =1) организован цикл, который выполняется до тех пор, пока к меньше разности длин строк пе¬ ременных з и з1 (к<=1еп§^Ы5)-1еп§гЬЪ(51)+1). На каждом шаге цикла проверяем, совпадают ли подстрока (длина которой равна длине строки з1) строки 5, начиная с текущей позиции к, со строкой з1 (1* Сору(з,к,1еп§1;Ъ(51))=51 ЪЬеп), то есть проверяем вхождение в строку з подстроки з1. Если вхождение присутствует, то уда¬ ляем эту подстроку из строки з (0е1е-Ье(з,к,1еп^11(з1)). Таким образом, в результате выполнения программы из заданной стро¬ ки удаляются все вхождения некоторой подстроки. Ответ: кок. Задания для индивидуальной работы Разработка программ 1. Составьте программу, которая запрашивает имя человека и выводит на экран это имя с приветствием. 2. Составьте программу, которая запрашивает пароль и выводит на экран количество символов в введённом слове. 3. Дана строка, состоящая не менее чем из двух символов. Составьте про¬ грамму, которая выводит на экран предпоследний символ. 4. Дана строка, состоящая не менее чем из двух символов. Составьте про¬ грамму, которая определяет, верно ли, что она начинается и оканчивается одним и тем же символом. 5. Дана строка символов. Составьте программу, которая подсчитывает, сколько раз среди данных символов встречается пробел. 6. Дана строка символов. Составьте программу, которая подсчитывает, сколько раз среди данных символов встречается пробел. 7. Дана строка символов. Составьте программу, которая подсчитывает, сколько раз в данной строке встречается сочетание «аЪ». 8. Даны натуральное число п и строка символов. Составьте программу, которая определяет, верно ли, что в строке имеются п подряд идущих про¬ белов.
112 Сборник задач по программированию 9. Даны натуральное число п и строка символов. Составьте программу, которая копирует первые п символов из исходной строки в новую. Если п больше длины строки, то строка копируется целиком. 10. Дана строка символов. Составьте программу, которая заменяет каж¬ дую точку запятой. 11. Дана строка символов. Составьте программу, которая выводит на экран все символы, расположенные после первого пробела. 12. Дана строка символов, содержащая слова, то есть группы символов, разделённые пробелами (не менее одного). Составьте программу, которая определяет, сколько начальных букв первого слова совпадает с началь¬ ными буквами второго слова. 13. Дана строка символов. Составьте программу, которая исключает из строки группы символов, расположенные между скобками, например, круглыми. Скобки тоже исключить. Предполагается, что внутри пары скобок других скобок нет. 14. Дана строка символов, содержащая слова, то есть группы символов, разделённые пробелами (не менее одного). Составьте программу, которая подсчитывает количество слов в данной строке. 15. Дана строка символов, содержащая слова, то есть группы символов, разделённые пробелами (не менее одного). Составьте программу, которая выводит на экран слова, начинающиеся и оканчивающиеся одной и той же буквой. 16. Дана строка символов, содержащая слова, то есть группы символов, разделённые пробелами (не менее одного). Составьте программу, которая находит длину самого короткого слова. 17. Дана строка символов, содержащая слова, то есть группы символов, разделённые пробелами (не менее одного). Составьте программу, которая определяет, сколько раз в тексте встречается заданное слово. 18. Дана строка символов, содержащая слова, то есть группы символов, разделённые пробелами (не менее одного). Составьте программу, которая находит слово, содержащее наибольшее число гласных букв. 19. Дана строка символов, содержащая слова, то есть группы символов, разделённые пробелами (не менее одного). Составьте программу, которая каждое из слов, входящих в строку, выводит на экран в столбик. 20. Дана строка символов. Составьте программу, которая выясняет, верно ли, что в данной строке больше букв, чем цифр.
§ 5. Строки символов 113 21. Дана строка символов. Составьте программу, которая заменяет все символы, стоящие на местах, кратных 3, на символ а. 22. Дана строка символов. Составьте программу, которая выясняет, пра¬ вильно ли в ней записаны буквосочетания жи и или. 23. Даны натуральное число г и две строки символов. Составьте програм¬ му, которая вставляет вторую строку в первую между г-м и (г + 1)-м сим¬ волами. Если г больше длины первой строки, то вторая строка ставится в конец первой. 24. Дана строка символов, состоящая из п символов, где п кратно 3. Составьте программу, которая первую треть строки размещает на месте третьей трети, вторую треть — на месте первой, третью треть — на месте второй. 25. Дана строка символов, состоящая из п (п ^ 20) символов. Составьте программу, которая переставляет в обратном порядке символы, располо¬ женные между &-й и ш-й буквами. Значения кит вводятся с клавиатуры (к < т < п). 26. Дана строка символов, содержащая слова, то есть группы символов, разделённые пробелами (не менее одного). Составьте программу, кото¬ рая удаляет из слов все повторяющиеся символы. (То есть каждое слово должно содержать только различные символы, разные слова могут содер¬ жать одинаковые символы.) 27. Дана строка символов, содержащая слова, то есть группы символов, разделённые пробелами (не менее одного). Составьте программу, которая выводит на экран все слова, встречающиеся в исходной строке ровно один раз. 28. Дана строка символов, содержащая цифры. Составьте программу, ко¬ торая находит сумму этих цифр. 29. Дана строка символов. Составьте программу, которая находит коли¬ чество различных букв, содержащихся в ней. 30. Даны строки символов. Составьте программу, которая выводит на экран только те символы, которые содержатся как в первой, так и во вто¬ рой строке. 31. Даны строки символов. Составьте программу, которая определяет, можно ли из символов первой строки составить вторую строку. 32. Дана строка символов. Составьте программу, которая проверяет сба¬ лансированность скобок в тексте (скобки сбалансированны, если закры¬ вающая скобка расположена после соответствующей открывающей и их количества совпадают).
114 Сборник задач по программированию 33. На вход программы подаются сведения о набранных на ЕГЭ баллах учениками данной школы по трём предметам. В первой строке сообщается количество учащихся N (IV ^ 100), каждая из следующих N строк имеет формат: < Фамилия > < Инициалы > <БаллыПоРусскомуЯзыку> <Бал- лыПоМатематике> <БаллыПоИнформатике>, где <Фамилия> — стро¬ ка, состоящая не более чем из 20 символов, < Инициалы > — строка, со¬ стоящая из 4 символов (буква, точка, буква, точка), < БаллыПоРусскому- Языку>, <БаллыПоМатематике>, <БаллыПоИнформатике> — целые числа в диапазоне от 0 до 100. Все элементы одной строки отделены друг от друга пробелом. Пример входной строки: Петров С.Н. 78 82 70 Требуется написать как можно более эффективную программу, кото¬ рая будет выводить на экран фамилии и инициалы учеников, набравших максимальную сумму баллов по трём предметам (таких учеников может быть несколько), а также набранную ими сумму баллов. 34. Региональный этап олимпиады по экономике проводился для учени¬ ков 9—11-х классов, участвующих в общем конкурсе. Каждый участник олимпиады мог набрать от 0 до 50 баллов. Для определения призёров сна¬ чала отбираются 45% (с округлением в меньшую сторону)участников, по¬ казавших лучшие результаты. По положению, в случае, если у последнего участника, входящего в 45%, оказывается такое же количество баллов, как и у следующих за ним в итоговой таблице, решение по данному участнику и всем участни¬ кам, имеющим равное с ним количество баллов, определяется следующим образом: — все участники признаются призёрами, если набранные ими баллы больше половины максимально возможных; — все участники не признаются призёрами, если набранные ими баллы не превышают половины максимально возможных. Напишите эффективную по времени работы и по используемой памяти программу, которая по результатам олимпиады будет определять, какой минимальный балл нужно было набрать, чтобы стать призёром олим¬ пиады. На вход программе сначала подаётся число участников олимпиады N. В каждой из следующих N строк находится результат одного из участни¬ ков олимпиады в следующем формате: < Фамилия > <Имя> < Класс > < Баллы>,
§ 5. Строки символов 115 где < Фамилия > — строка, состоящая не более чем из 20 символов; <Имя> — строка, состоящая не более чем из 15 символов; <Класс> — число от 9 до 11; < Баллы > — целое число от 0 до 50 набранных участником баллов. < Фамилия > и <Имя>, <Имя> и < класс >, а также < класс > и < бал¬ лы > разделены одним пробелом. Пример входной строки: Иванов Пётр 10 17 Программа должна выводить минимальный балл призёра. Гаранти¬ руется, что хотя бы одного призёра по указанным правилам определить можно. 35. У Димы есть много книг, которые он ещё не прочитал. Дима обожает толстые старые книги. Кроме того, он не любит произведения с длинными названиями. В очередной раз, когда ему надо было выбрать себе книгу, он решил воспользоваться помощью компьютера. Мальчик составил список непрочитанных книг и определил критерии, по которым необходимо вы¬ брать книгу: год издания должен быть ранее 1980, количество страниц — не менее 300, а название должно быть по возможности самым коротким из названий книг, удовлетворяющих первым двум условиям. Гарантирует¬ ся, что хотя бы одна книга удовлетворяет перечисленным критериям. Напишите эффективную по времени работы и по используемой памяти программу, которая по имеющемуся каталогу непрочитанных книг опре¬ деляет количество толстых старых книг, а из них выбирает обладающую самым коротким названием. На вход программе сначала подаётся число имеющихся у Димы книг N. В каждой из следующих N строк находится описание какой-либо книги в следующем формате: <Фамилия автора> <Год издания> <Кол-во страниц> <Название>, где < Год издания >, < Кол-во страниц> — целые числа; < Фамилия автора > — строка без пробелов, состоящая не более чем из 20 символов; < Название> — строка, состоящая не более чем из 40 символов. < Фамилия автора >,< Год издания >,< Кол-во страниц>, < Название> разделены между собой одним пробелом. Пример входной строки: Казанцев 1988 637 Клокочущая пустота Программа должна выводить количество книг в списке, изданных ра¬ нее 1980 года и содержащих не менее 300 страниц, а также наименование книги с самым коротким названием. ( 36. Одна популярная радиостанция проводит конкурс «Лучшая песня го¬ да» с открытым 5ГП5-голосованием. Необходимо написать эффективную,
116 Сборник задач по программированию в том числе по используемой памяти, программу, которая после окончания зтз-голосования будет обрабатывать результаты и позволит определить популярность той или иной песни. Следует учитывать, что количество за¬ просов в списке может быть очень велико. Перед текстом программы кратко опишите используемый алгоритм решения задачи. На вход программе в первой строке подаётся количество пришедших запросов. В каждой из последующих строк записано название песни в ви¬ де текстовой строки. Длина строки не превосходит 100 символов, наиме¬ нование может содержать буквы, цифры, пробелы и знаки препинания. Всего в конкурсе оценивается не более 100 песен. Программа должна вывести список всех песен, встречающихся в за¬ просах, в порядке возрастания (неубывания) голосов, отданных за ту или иную песню, с указанием количества отданных за неё голосов. При этом название каждой песни должно быть выведено только один раз, вне зави¬ симости от того, сколько голосов было отдано за неё. Пример входных данных. Спектакль Окончен Воспоминание Около Тебя Воспоминание Воспоминание Прилелето Около Тебя Пример выходных данных для входных данных, записанных выше. Спектакль Окончен - 1 Прилелето - 1 Около Тебя - 2 Воспоминание - 3
§ 5. Строки символов 117 Анализ алгоритмов и программ 1. Определите, что будет напечатано в результате работы следующей программы. Алгоритмический язык алг Рго§_51 нач лит 5 сим г цел з: =, 1п* огта*Ь 1ка} НЦ ДЛЯ 1 ОТ 1 до длин(з)-1 НЦ ДЛЯ 3 ОТ 1+1 до длин(з) если з[1]>з[;)] то г: =з[1] ; з[1] :=з[з]; з Ц] :=г все КЦ КЦ ВЫВОД 8 КОН Паскаль Рго^гат Рго§_51; уаг з:з1:г1п§; г: сЬаг; ±,уЛпге^ет; Ъе§1П зг^хп^оппа-Ыка’; *ог 1: =1 *Ьо 1еп§1;11(з)-1 <1о Ъе§1п ^ог ^:=1+1 го 1еп§-Ы1(з) <1о И з С1]>зЪЬеп Ъе§1п г:=з[1] ; з[1] :=з[^] ; з Ц]:-г епс! епс!; угН:е1п(з) епс1. Наберите текст программы и проверьте правильность ответа.
118 Сборник задач по программированию 2. Определите, что будет напечатано в результате работы следующей программы. Алгоритмический язык алг Рго§_52 нач лит з,з1 лог ± цел 1,к з:=,ко1око1, з1:=’о1’ к:=0; ±:=да нц для 1 от 1 до длин(з)-длин(з1)+1 если з[1:(1+длин(з1)-1)]=з1 и I то к:=1; *:=нет все КЦ вывод к кон Паскаль Рго§гаш Рго§_52; уаг з,з1:з1;г1п§; 1 ,к: 1п1:е§ег; ±:Ъоо1еап; Ъе§1п з: = ^010^1’; з1 г^о].’; к: =0; ±:=*Ьгие; *ог 1: =1 -Ьо 1еп§1:11(з)-1еп§1;11(з1)+1 с!о (сору(зД,1еп§1:11(з1))=з1) апс! -ЬЪеп Ъе§1п к:=1; *:=*а1зе епс1; угН;е1п(к) епс1. Наберите текст программы и проверьте правильность ответа.
§ 5. Строки символов 119 3. Определите, что будет напечатано в результате работы следующей программы. Алгоритмический язык алг Рго§_53 нач лит 5,з1,з2 цел 1,к 5:=,ороп> з1:=,о>; з2:=,ка> к:=1 нц пока к<=длин(з)-длин(з1)+1 если з[к:(к+длин(з1)-1)]=з1 то з[к:(к+длин(з1)-1)]:=з2 иначе к:=к+1 все кц ВЬШОД 3 КОН Паскаль Рго§гат Рго§_53; уаг 8,з1,з2:з‘Ьг1П§; 1,к: ллтЬе^ег; Ъе§1п з:=,ороп>; з1:=>о>; з2:=,ка>; к:=1; уЫ1е к<= 1еп§1;11(з)-1еп§1;11(з1)+1 с!о (сору(з,к,1еп§1;11(з1))=з1) ЪЪеп Ъе§1п Бе1еге(з,к,1еп§г11(з1)); 1пзег-Ь(з2,з,к); к:=к+1еп§гЬ(з2) епс! е1зе к:=к+1; уггЬе1п(з) епс!. Наберите текст программы и проверьте правильность ответа.
120 Сборник задач по программированию 4. Определите, что будет напечатано в результате работы следующей про¬ граммы. Алгоритмический язык алг Рго§_54 нач лит з,з1,з2 цел 1,2,к з: =9каоркаокапка9 з1:=9кзо9 нц для з от 1 до длин(з1) з2:= з1 :^] к:=0 нц для 1 от 1 до длин(з) если з[1:1]=з2 то к:=к+1 все КЦ вывод ,з=,,з,, - * ,к, не КЦ КОН Паскаль Рго§гаш Рго^-54; уаг з,з1,з2:з1;г1п§; к,з , 1: 1пге§ег; Ъе§1п з: =9каоркаокапка9; з1 ^’као*; *ог ^:=1 го 1еп§гЪ(з1) с!о Ъе§1п з2:=сору(з1,з,1); к:=0; *ог 1:=1 го 1еп§гЬ(з) с!о сору (з,1,1)=з2 гЪеп к:=к+1; ухтгеЗ-пОз^,з,9 - 9 ,к) епс! еш1. Наберите текст программы и проверьте правильность ответа.
§ 6. Подпрограммы 121 § 6. Подпрограммы Основные сведения Подпрограмма — автономная часть программы, выполняющая опре¬ делённый алгоритм и допускающая обращение к ней из различных частей общей программы. В алгоритмическом языке и языке Паскаль существует два вида под¬ программ: процедура и функция. Параметры, записываемые в обращении к подпрограммам, называ¬ ются фактическими; параметры, указанные в описании подпрограмм, — формальными. Фактические параметры должны соответствовать формаль¬ ным по количеству, порядку следования и типу. Параметры, объявленные в основной (главной) программе, действуют в любой подпрограмме и на¬ зываются глобальными. Параметры, объявленные в подпрограмме, дей¬ ствуют только в этой подпрограмме и называются локальными. 6.1. Процедуры Процедуры используются в случаях, когда из подпрограммы необ¬ ходимо вернуть несколько результатов (возможно ни одного). Процедуру нельзя использовать в качестве операнда в выражениях. Объявление процедуры имеет вид: Блок-схема Алгоритмический язык Паскаль (Имя(Оп форм пар)) 1 операторы 1 ^Конец Имя ) алг Имя(Оп_форм_пар) нач операторы кц ргосейиге Имя (Оп_форм_пар); локальные объявления; Ье&ш операторы епф Здесь, Имя — имя процедуры, Оп__форм_пар — описание формаль¬ ных параметров. Процедура может не иметь параметров. В этом случае в строке алг (алгоритмический язык) или ргосейиге (Паскаль) записывается только имя процедуры.
122 Сборник задач по программированию Чтобы вызвать процедуру, нужно задать её имя и список фактических параметров. Вызов процедуры имеет вид: Блок-схема Алгоритмический язык Паскаль Имя (факт пар) Г Имя(факт_пар) Имя(факт_пар); Здесь, Имя — имя процедуры, факт_пар — фактические параметры. При вызове процедуры устанавливается взаимно однозначное соот¬ ветствие между фактическими и формальными параметрами, затем управ¬ ление передаётся процедуре. После выполнения процедуры управление передаётся следующему после вызова процедуры оператору вызывающей программы. Пример 6.1. Составьте программу, которая с помощью процедуры ме¬ няет значение двух переменных местами. Решение. Словесный алгоритм Основная программа. 1) Ввод чисел га, п. 2) Передаём переменные га,п в качестве фактических параметров в процедуру обмена. 3) Вывод га, п. Процедура обмена. 1) В процедуре организуем передачу параметров по ссылке. (Это объ¬ явление обеспечит после завершения процедуры изменение фактических параметров.) Обозначим через а, Ь— формальные параметры. 2) Переменной а присваиваем результат суммирования значений пе¬ ременных а и Ь (а = а + Ь). 3) Переменной Ь присваиваем результат разности значений перемен¬ ных а и Ъ (Ъ = тп — Ъ). 4) Переменной а присваиваем результат разности значений перемен¬ ных а и Ь (а = а — Ь).
§ 6. Подпрограммы 123 Блок-схема (Рго2_ЕхсЬРг) / а, Ъ / (ЕхсЬ (т,п)) I |ЕхсЬ (т,п) | 15/и т := т + п п := т — п т т — п (Конец ЕхсЪРг) Г N Конец ЕхсЬ) Алгоритмический язык Паскаль алг ЕхсЬРг Рго^гат ЕхсЬРг; нач уаг а,Ъ: злтЬе^ег; цел а,Ъ Ъе^д ввод а, Ъ геас11п(а,Ъ) ; ЕхсЬ(а, Ъ) ЕхсЬ(а, Ъ); вывод а, * ’,Ъ ыггЬе1д(т,9 9 ,п) кон епс1. алг ЕхсЬ(аргрез цел п,ш) Ргосес1г1ге ЕхсЬ (уаг т,п) ; нач Ъе§1п ш:=т+п; п:=т-п; т:=т-д т:=т+д; п:=т-п; т:=т-п кон едй; 6.1.1. Функции Функция всегда возвращает единственное значение. Объявление функции имеет вид: Блок-схема Алгоритмический язык Паскаль (Имя(Оп форм пар)) операторы 1 алг Тип__вз Имя (Оп_форм_пар) нач операторы знач:=возвр_знач кц 1ипсНоп Имя (Оп_форм_пар): Тип_вз; локальные объявления; Ье^ш операторы Имя:= возвр_знач епб; Имя :=возвр_знач Конец Имя )
124 Сборник задач по программированию Здесь, Имя — имя функции, Оп_форм_пар — описание формальных параметров, Тип_вз — тип возвращаемого значения, возвр_знач — воз¬ вращаемое значение. Как правило, передачу параметров в функцию осуществляют по зна¬ чению. Чтобы обратиться к функции, нужно задать её имя и список фактиче¬ ских параметров. Обращение к функции имеет вид: Блок-схема I Имя(факг_пар) Алгоритмический язык Паскаль Имя_пер:=Имя (факт_пар) Имя_пер:=Имя(факт_пар); Здесь, Имя — имя функции, факт_пар — фактические параметры, Имя_пер — имя переменной, принимающей значение функции (в неко¬ торых случаях может отсутствовать). Функцию можно использовать в ка¬ честве операнда в выражениях. При вызове функции устанавливается взаимно однозначное соответ¬ ствие между фактическими и формальными параметрами, затем управле¬ ние передаётся функции. После обращения к функции управление пере¬ даётся на выполнение следующей операции данного выражения (в соот¬ ветствии с приоритетом). Пример 6.2. Для заданного п ^ 100 составьте программу, которая вычисляет сумму 1 + А + А Н Ь А* 2! 3! п! Решение. Словесный алгоритм Основная программа. 1) Ввод исходного числа п.
§ 6. Подпрограммы 125 2) Обозначим через 5 переменную, в которую будет помещено значение искомой суммы. Переменной 5 присваиваем значение 0. 3) Организуем цикл с параметром г, начальным значением 1 и конеч¬ ным значением га. На каждом шаге цикла к переменной 5 прибавляем зна¬ чение Где Р(г) = г! — функция, вызываемая из программы. (Перё- менная г на каждой итерации цикла последовательно принимает значения 1,2, 3,..., п.) 4) Вывод 5. Функция Р(п) = га!. 1) Обозначим через р переменную для вычисления значения искомой функции. Переменной р присваиваем значение 1. 2) Организуем цикл с параметром г, начальным значением 1 и ко¬ нечным значением га. На каждом шаге цикла получаем новое значение р = р г. (Переменная г на каждой итерации цикла последовательно при¬ нимает значения 1, 2, 3,..., п.) 3) Р := Р- Блок-схема ( Г(и) ) р:= 1 1=1»п —1 р~р'< 1 р'=р I I ( Конец Р ) ( ЗитРас!) 5 := 0 -< ) -| ^-5+гтап ( Ф~ (конец ЗитРас^
126 Сборник задач по программированию Алгоритмический язык алг ЗитРасЪ нач цел П,1,8 ввод п з :=0 нц для 1 от 1 ; цо п з:=5+Р(д.) кц ВЫВОД 3 кон алг цел Р(цел п) э нач цел р р:=1 НЦ ДЛЯ 1 ОТ 1 ДО п р:= р*1 КЦ знач:=р кон Паскаль Ргодгат ЗитРасЬ; ^ипсЫоп Р (п: гп-Ье^ег) : 1оп§1п-Ь; уаг р:1оп§1п*Ь; 1 :±пЪе%ет; Ъе^1п р:=1 *ог 1:=1 *Ьо п (1о р:= Р*1; Р:=р епс1; уаг п,1:1п1:е§ег; з: 101151111;; Ъеб1п геа<11п(п) ; з: =0; *ог 1: =1 *Ьо п <1о з:=з+Р(1) ыггЬе1п(з) епс1.
§ 6. Подпрограммы 127 Пример 6.3. Для заданного п ^ 100 напишите программу вычисления функции, заданной следующими условиями: /(1) = 1; /(2 п) = /(п); /(2п + 1) = /(п) 4- /(п + 1). Решение. Составим рекурсивный алгоритм. Словесный алгоритм Вычисление функции заключается в сведении функции от аргумента к вычислению функции от меньшего аргумента, и процесс такого сведения продолжается до тех пор, пока все получаемые значения не будут иметь своим аргументом единицу. Значение функции от единицы известно. Следовательно, алгоритм будет состоять из следующих повторяющих¬ ся шагов: 1. Определение чётности (или нечётности) аргумента. Если аргумент чётный, то переход к п. 2, иначе, к п. 3. 2. Выполнение преобразования по формуле /(2п) = /(п). Переход к п. 4. 3. Выполнение преобразования по формуле/(2тН-1) = /(п)+/(п+1). Переход к п. 4. 4. Если аргумент пф 1, то переходим к п. 1, иначе конец алгоритма.
128 Сборник задач по программированию Алгоритмический язык алг Гипк нач цел уа1 ввод уа1 вывод Р(уа1) кон алг цел Е (цел п) ; нач цел ш если п=1 то знач:=1 иначе т:=с!1у(п,2) если тос!(п,2)=0 то знач:=Р(т) иначе знач:=Р(т)+Р(т+1) все все кон Паскаль Рго^гат Рипк; ^ипс*Ыоп Р(п: 1п1:е§ег) : 11гЬе§ег; уаг т:1п1;е§ег; Ъе§1п п=1 ЪЪеп Р:=1 е1зе Ъе§1п т:= п сИу 2 п тос! 2 = 0 ЪЪеп Р: =Р (т) е1зе Р:=Р(т)+Р(т+1) епс! епс!; уаг уа1:1п1;е§ег; Ъе§1п геас!1п(уа1) ; ыггЬе1п(Р(уа1)) епс!.
§ 6. Подпрограммы 129 Задания для индивидуальной работы Разработка программ 1. Даны целые а, 6 и с. Составьте программу для нахождения значения тах(а, а + Ъ) + тах(а, Ь + с) выражения V , • Программа должна содержать 1 + тах(а -1- Ьс, 4) функцию нахождения максимума двух чисел. 2. Даны целые а, Ъ. Составьте программу для нахождения значений и = тгп(а, Ь), V = тт(аЬ, а + Ь) и тт(п -1- V2,14). Программа долж¬ на содержать функцию нахождения минимума двух чисел. 3. Дано действительное число х. Составьте программу, содержащую функ¬ цию, для вычисления зНх. 4. Дано действительное число х. Составьте программу, содержащую функ¬ цию, для вычисления сЬдх. 5. Дано натуральное число п (п ^ 100 и действительное число х. Со¬ ставьте программу, содержащую функцию, для вычисления хп. 6. Даны действительные числа х и е (е ^ 0,001). Составьте программу 3 5 для вычисления суммы ряда х — Ц- 4- — Программа должна содер- 3! 5! жать функции вычисления хп и п\. 7. Дано натуральное число п. Составить программу для вычисления сум¬ мы факториалов всех чётных чисел от 1 до п. Программа должна содер¬ жать функцию вычисления п\. 8. Дано натуральное число п (п ^ 100000000). Составьте программу, содержащую функцию, которая для заданного п возвращает количество цифр в его записи. 9. Даны натуральные числа пит. Составьте программу, содержащую функцию, которая вычисляет наибольший общий делитель двух натураль¬ ных чисел. 10. Даны натуральные числа пит. Составьте программу, содержащую функцию, которая вычисляет наименьшее общее кратное двух натураль¬ ных чисел. 11. Дано натуральное число п (п ^ 100000000) и целые числа а\, а2,..., ап. Составьте программу, которая определяет количество чисел а* (г = 1,2, ..., п), являющихся полными квадратами. Программа должна содержать функцию, определяющую, является ли заданное число полным квадратом. 9. Зак. № 88
130 Сборник задач по программированию 12. Составьте программу, которая находит все трёхзначные простые чис¬ ла. Программа должна содержать функцию, определяющую, является ли заданное число простым. 13. Дано натуральное число п (п ^ 100000000). Составьте программу, со¬ держащую функцию, которая для заданного п возвращает сумму его цифр. 14. Дано натуральное число п (п ^ 100000000). Составьте программу, содержащую функцию, которая для заданного п возвращает сумму его де¬ лителей. 15. Дано натуральное число п (п ^ 100000000). Составьте программу, содержащую функцию, которая для заданного п возвращает число, полу¬ ченное изменением порядка следования цифр числа п на обратный. 16. На плоскости заданы своими координатами п точек. Составить про¬ грамму, определяющую, между какими из пар точек самое большое рас¬ стояние. Программа должна содержать функцию вычисления расстояния между двумя точками. 17. Дано действительное число а. Составьте программу для нахождения площади правильного шестиугольника со стороной а. Программа должна содержать функцию вычисления площади треугольника. 18. Составьте программу, содержащую процедуры ввода и вывода эле¬ ментов двумерного массива А(п, тп). 19. Составьте программу, содержащую процедуру (функцию) МтМах, позволяющую находить либо максимальный, либо минимальный элемент в целочисленном массиве, в зависимости от передаваемого параметра ло¬ гического типа. 20. Составьте программу, содержащую процедуру (функцию) ЗойМаз, позволяющую определять, расположены ли элементы массива либо в по¬ рядке возрастания, либо в порядке убывания, в зависимости от передава¬ емого параметра логического типа. 21. Составьте программу, содержащую процедуру (функцию), определя¬ ющую максимальный элемент любого целочисленного массива. 22. Составьте программу, содержащую процедуру (функцию), инвертиру¬ ющую любой целочисленный массив. 23. Дано простое число. Составьте функцию, которая будет находить сле¬ дующее за ним простое число. 24. Дано чётное натуральное число п > 2. Составьте программу, которая позволяет проверить гипотезу Гольдбаха: каждое чётное п представляется в виде суммы простых чисел.
§ 6. Подпрограммы 131 25. Составьте программу для вычисления количества треугольников, ко¬ торые можно образовывать с помощью четырёх заданных попарно раз¬ личных целых чисел. Программа должна содержать функцию, которая по трём целым числам определяет, задают ли они стороны треугольника. 26. Даны три натуральных числа д (не високосный год), т (номер месяца), п (число). Составьте программу, которая по заданным д,тмп определя¬ ет: а) дату предыдущего дня; б) дату следующего дня. Программа должна содержать функцию, определяющую количество дней в том или ином ме¬ сяце. Анализ алгоритмов и программ 1. Определите, что будет выведено на экран в результате работы следую¬ щей программы: Алгоритмический язык алг Рго§_55 нач цел а,Ъ а := 5; Ъ := 2 Ргос1(а, Ъ); вывод а,9 9 ,ъ Ргос2(а, Ъ); вывод а,9 9 ,ъ РгосЗ(а, Ъ); вывод а,9 9 ,ъ кон алг РгосИцел х,у); нач цел п, ш п := х * у ш := у + 1 кон алг Ргос2(аргрез цел х, арг цел у); нач цел ш х := х * у ш := у + 1 кон алг РгосЗ(аргрез цел х,у); нач х := х * у у := у + 1 кон
132 Сборник задач по программированию Паскаль Рго^гаш Рго§_55; ргоседиге Ргос1(х,у : 1П’Ье§ег) ; Ъе§1П х:=х*у ; у:=у+1 епй; ргосейиге Ргос2(уаг х:1пЪе%ет; у: злгЬе^ег) ; Ъе§1П х:=х*у ; у:=у+1 епс1; ргосейиге РгосЗ(уаг х,у : злгЬе^ег); Ъе§1п х:=х*у ; у:=у+1 епй; уаг а, Ъ : 11гЬе§ег; Ъе§1П а := 5; Ъ := 2; Ргос1(а, Ъ) ; УГгЬе1п(а,9 ’ ,Ъ); Ргос2(а, Ъ); УГгЬеХпСа,* ’ ,Ъ); РгосЗ(а, Ъ); уггье1п(а,9 ’,Ъ); епс1. Наберите текст программы и проверьте правильность ответа. 2. Определите, какое число будет напечатано в результате выполнения следующей программы: Паскаль Рго^гаш Рго§_56; уаг а,Ъ,Ъ,М,К: злгЬе^ег; РипсЬ10п Р (х: 1п1;е§ег) : злгЬе^ег; Ъе§1п Р:=(х*х-9)*(х*х-9)+5; епй; Ъе§1п а:=-11; Ъ:=11; М:=а; Н:=Р(а); *ог г:=а ■Ьо Ъ йо д.* Р(*Ь) < К ЪЪеп Ъе§1п М:=Ъ; К:=Р(*) епс1; уг1-Ье1п(М+7) епй.
§ 6. Подпрограммы 133 Алгоритмический язык алг Рго§_56 нач цел а,Ъ,Ъ ,м,к а =-11; Ъ :=11; М:=а; К:=Р(а) нц для Ъ от а до Ъ если Р(Ъ) < К то •р н X К:=Р(Ю все кц вывод М+7 кон алг цел Г (цел х) нач знач:=(х*х-9)*(х*х-9)+5 кон Наберите текст программы и проверьте правильность ответа. 3. Определите, какое число будет напечатано в результате выполнения следующей программы: Алгоритмический язык алг Рго§_57 нач цел а, ,Ъ,з,К,Ь а: :=-10; Ъ:=10 К: :=а; Ь:=Р(а) нц для з от а до Ъ если Р(з) < Ь то К: =з; Ь:=Р(з) все кц вывод К кон алг цел Р(цел х) нач знач := 2*(х+2)*(х+4) кон
134 Сборник задач по программированию Паскаль Рго^гаш Рго§_57; уаг а,Ъ,з,К,Ь: 1пЪе%ет; РипсЫоп Р(х: 1]гЬе§ег) : 11гЬе§ег; Ье§1п Р:=2*(х+2)*(х+4); епс1; Ъе§1п а:=-10; Ъ:=10; К:=а; Ь:=Р(а); ^ог з:=а Ъо Ъ с!о Р(з) < Ь -ЬЬеп Ъе§1п К:=з; Ь:=Р(з) епс!; уггЬе1п(К) епс1. Наберите текст программы и проверьте правильность ответа. 4. Укажите наименьшее из таких чисел х, при вводе которого программа печатает число 7. Алгоритмический язык алг Рго§_58 нач цел х ввод х х: =Р (х) вывод х кон алг цел Р(цел п) нач цел 1,т 1:=0; т:=п нц пока т > О т := сНу т 10; 1 := 1 + 1 кц знач := 1 кон
§ 6. Подпрограммы 135 Паскаль Рго^гаш Рго&_58; 1ипсИоп Р(п:Ьоп^хп!): 1п1е§ег; уаг 1: 1п1е§ег; Ъе§1п 1 := 0; ыМ1е п > 0 йо Ъе§1п п := п сИу 10; 1 := 1 + 1 епй; Р := 1 епй; уаг х: Ьоп§1п1; Ъе§1п геай1п(х); х := Е(х); ыгИе1п(х) епй. Наберите текст программы и проверьте правильность ответа. 5. Определите, какое число будет напечатано в результате выполнения следующей программы: Алгоритмический язык алг Рго§_59 нач цел х х:=5 вывод Р(х) кон алг цел Р(цел п) нач если п>1 то знач:=п*Р(п-1) иначе знач:=1 все кон
136 Сборник задач по программированию Паскаль Рго^гат Рго§_59; ^ипсЬ10п Р(п: 1п-Ье§ег) : 11гЬе§ег; Ъе§1п п>1 -ЬЬеп Р:=п*Р(п-1) е1зе Р:=1 епс1; уаг х: 11гЬе§ег; Ъе§1П х:=5; *Г1Ъе1п(Р(х)) епс1. Наберите текст программы и проверьте правильность ответа.
137 Глава III Справочный материал § 1. Встроенные процедуры и функции 1.1. Алгоритмический язык Синтаксис Описание Математические алг вещ 5цг1(вещ х) Возвращает квадратный корень из х (х ^ 0). алг вещ аЬ5(вещ х) Возвращает абсолютную величину вещественного числа х (|х|). алг цел 1аЬ8(цел х) Возвращает абсолютную величину целого числа х(|х|) алг вещ 8т(вещх) Возвращает синус х алг вещ со5(вещ х) Возвращает косинус х алг цел 81&п(вещх) Возвращает знак числа х (—1, 0 или 1): • —1, еслих < 0 • 0, если х = 0 • 1, если х > 0 алг вещ 1д(вещх) Возвращает тангенс х алг вещ с*б(вещ х) Возвращает котангенс х алг вещ агс81п(вещ х) Возвращает арксинус х алг вещ агссо8(вещ х) Возвращает арккосинус х алг вещ агс!д(вещ х) Возвращает арктангенс х алг вещ агсс{д(вещ х) Возвращает арккотангенс х алг вещ1п(вещх) Возвращает натуральный логарифм х алг вещ1д(вещх) Возвращает десятичный логарифм х алг вещ ехр(вещ х) Возвращает е в степени числа х (ей 2.718281828459045...) алг вещ тт(вещ х, вещ у) Возвращает минимум из чисел х и у
138 Сборник задач по программированию Синтаксис Описание Математические алг вещ шах(вещ х, вещ у) Возвращает максимум из чисел х и у алг цел тос!(цел х, цел у) Возвращает остаток от деления х на у (ж, у — целые, у > 0) алг цел сНу(цел х, цел у) Возвращает частное от деления х на у (•Е, у целые, у > 0) алг цел т{(вещх) Возвращает целую часть х: максималь¬ ное целое число, не превосходящее х алг вещ гпс!(вещ х) Возвращает случайное число от 0 до х: при последовательных вызовах этой функции получается последователь¬ ность случайных чисел, равномерно распределённых на [0, ] Текстовое представление чисел алг лит ве|ц_в_лит(вещ х) Возвращает строковое представление х алг вещ лит_в_вещ(лит СТРО¬ КА, рез лог УСПЕХ) Переводит строку СТРОКА в веще¬ ственное представление. Если СТРО¬ КА содержит только вещественное число, то в УСПЕХ записывается Да и алгоритм возвращает вещественное значение, иначе в УСПЕХ записы¬ вается Нет и алгоритм возвращает значение 0 алг лит цел_в_лит(цел х) Возвращает строковое представление х алг цел лит в_цел(лит СТРО¬ КА, рез лог УСПЕХ) Переводит строку СТРОКА в цело¬ численное представление. Если СТРО¬ КА содержит только целое число, то в УСПЕХ записывается Да и алго¬ ритм возвращает целочисленное зна¬ чение, иначе в УСПЕХ записывается Нет и алгоритм возвращает значение 0 алг цел длин(лит 5) Возвращает количество символов в строке 5 алг цел код(сим с) Возвращает номер символа с в таблице КОИ-8г
§ 1. Встроенные процедуры и функции 139 Синтаксис Описание Обработка строк алг сим символ(цел 14) Возвращает символ, соответствую¬ щий номеру N в таблице КОИ-8г алг цел юникод(сим с) Возвращает номер символа с в таб¬ лице Юникода алг сим символ2(цел Ы) Возвращает символ, соответствую¬ щий номеру N в таблице Юникода Пример использования встроенного алгоритма в программе. Пусть в таблице алгоритм представлен синтаксисом алг вещ лит_в_вещ(лит СТРОКА, рез лог УСПЕХ ) и имеет описание: «Переводит строку СТРОКА в вещественное представление. Если СТРОКА содержит только вещественное число, то в УСПЕХ за¬ писывается Да и алгоритм возвращает вещественное значение, иначе в УСПЕХ записывается Нет и алгоритм возвращает значе¬ ние О». Следующая программа иллюстрирует, как с помощью этого алгоритма строку 4.256, заданную в переменной а, можно преобразовать к числовому значению (полученное значение записывается в вещественную перемен¬ ную 6). алг ргеоЬг нач лит а вещ Ь лог усп а := 4.256’ Ь := лит_в_вещ(а, усп) вывод Ь, ’ \ усп кон Результат работы программы: 4.256 да
140 Сборник задач по программированию 1.2. Язык Турбо Паскаль Функции для работы со строками Функция Описание ЬепдЪЪ (3:5-Ьг1п§) : 1п1:е§ег; Возвращает в качестве результата значе¬ ние текущей длины строки-параметра Сопса1:(51 [,52,. . ., 5Ы] :51:г1п§) :51:г1п§; Возвращает строку, являющуюся слияни¬ ем нескольких строк, в одну. Если длина строки-результата превышает 255 симво¬ лов, то она усекается до 255 символов Сору(5:51:г1п§; 1пс1ех, Соип1:: 1п-Ье§ег) :51:г1п§; Возвращает подстроку длиной Соип1, на¬ чинающуюся с позиции 1пс1ех, из строки 5 РозСЗиЪЗЪг, 5: 51:г1п§) :ВуЪе; Возвращает позицию первого вхождения подстроки 5иЬ51г в строку 5 или 0, если вхождение отсутствует Бе1е1:е(уаг 5:51:г1п§; 1п<1ех, Соип1:: 1п1:е§ег) Удаляет из строки 5 подстроку длиной Соип! символов, начиная с символа под номером 1пс1ех 1пзег1: (Зоигзе: 51:г1п§; уаг 5:51:г1п§;1п<1ех: 1п-Ье§ег) ; Вставляет подстроку Зоигсе в строку 5, начиная с символа 1пс1ех этой строки ЗЪг (X [: И1с11:Ъ [: 0ес1та1з ]]; уаг 5: 5-Ьг1п§); . Преобразует численное выражение X в его строковое представление и помещает результат в переменную 5 Уа1(5: 51:г1п§; уаг V; уаг Со<1е: 1п1:е§ег) ; Преобразует строковую запись числа, со¬ держащуюся в переменной 5, в число¬ вое представление, помещая результат в переменную V. Может быть как целой, так и действительной переменной. Если в 5 встречается недопустимый (с точки зрения правил записи чисел) символ, то преобразование не происходит, а в Сос1е записывается позиция первого недопу¬ стимого символа. Выполнение програм¬ мы при этом не прерывается. Если пре¬ образование выполнено успешно, то по¬ сле выполнения процедуры значение пе¬ ременной Сос1е равно 0.
§ 1. Встроенные процедуры и функции 141 Функции для работы с переменными типа СНаг Функция Описание СЪг(Ы:ВуЪе):СЪаг; Возвращает символ по коду, равному значению выражения N 0гс1(СЪ:СЪаг) :ВуЪе; Возвращает код символа СЬ ИрСазе(С:СЪаг):СЪаг; Если С — строчная латинская буква, то функция возвращает соответствую¬ щую прописную латинскую букву, в про¬ тивном случае символ С возвращается без изменения Основные математические функции Функция Тип арг. Тип рез. Описание АЪз(Х) Кеа1, 1п1едег Тип аргумента Возвращает модуль X АгсТап(Х) Кеа1, 1п1е^ег Кеа1 Возвращает арктангенс X (значение в радианах) Соз(Х) Кеа1, 1п1е§ег Кеа1 Возвращает косинус X (угол в радианах) 1п*Ь (X) Кеа1, 1п1е§ег Кеа1 Возвращает целую часть X Ехр(Х) Кеа1, 1п1е§ег Кеа1 Возвращает значение экспо¬ ненты от X Егас(Х) Кеа1 Кеа1 Возвращает дробную часть X Ьп(Х) Кеа1, 1п1е§ег Кеа1 Возвращает натуральный логарифм X Р1 Нет Кеа! Значение 3,141592653 31П(Х) Кеа1, 1п1е§ег Кеа1 Возвращает синус X (угол в радианах) ЗЯг(Х) Кеа1, 1п1е§ег Тип аргумента Возвращает квадрат X 5дг1:(Х) Кеа1, 1п1е§ег Кеа1 Возвращает корень квадрат¬ ный из X Яапс1от Нет Кеа1 Возвращает псевдослучайное число в интервале[0, 1] Яапс1от(1) 1п1е§ег 1п1е§ег Возвращает псевдослучайное число в интервале [0,1]
142 Сборник задач по программированию Функция Тип арг. Тип рез. Описание ЯоипсЦХ) Кеа1 1п1е^ег Возвращает результат округ¬ ления до ближайшего целого числа X Тгипс (X) Кеа1 1п1е§ег Возвращает число, получен¬ ное в результате отбрасыва¬ ния дробной части числа X
Литература 1. Вирт Н. Алгоритмы + структуры данных = программы. Библиотека программиста. — СПб: Невский Диалект, 2008. — 352 с. 2. Вирт Н. Алгоритмы и структуры данных: Пер. с англ. — М.: Мир, 1989. —360 с. 3. Златопольский ДМ, Сборник задач по программированию. — 2-е изд., перераб. и доп. — СПб: БХВ-Петербург, 2007. — 240 с. 4. Информатика и ИКТ. Подготовка к ЕГЭ-2015 / Под редакцией Ф. Ф. Лысенко, Л. Н. Евич. — Ростов-на-Дону: Легион, 2014. — 448 с. — (Готовимся к ЕГЭ) 5. Информатика и ИКТ. 10—11 классы. Тематические тесты. Подготовка к ЕГЭ. Базовый, повышенный, высокий уровни / Под ред. Л. Н. Евич, С. Ю. Кулабухова. — Ростов-на-Дону: Легион, 2013. — 288 с. — (Готовимся к ЕГЭ) 6. Кнут Д. Искусство программирования, том 1. Основные алгоритмы = ТЬе Аг1 оГ Сотри1ег Ргодгатттд, уо1.1. РипбатепЫ А1доп1Ьт5. — 3-е изд. — М.: Вильямс, 2006. — 720 с. 7. Кнут Д. Искусство программирования, том 3. Сортировка и поиск = ТЬе Аг1 о! Сотри1ег Ргоегатттд, уо1.3. 5огЬп§ апс1 ЗеагсЬтд. — 2-е изд. — М.: Вильямс, 2007. — 824 с.
Готовимся к ЕГЭ Учебное издание Евич Людмила Николаевна ИНФОРМАТИКА И ИКТ ПОДГОТОВКА К ЕГЭ СБОРНИК ЗАДАЧ ПО ПРОГРАММИРОВАНИЮ Издание второе, исправленное и дополненное Налоговая льгота: издание соответствует коду 95 3000 ОК 005-93 (ОКП) Обложка А. Вартанов Компьютерная верстка Л. Евич Корректоры Л. Андрецова Подписано в печать с оригинал-макета 15.05.2014. Формат 60х841/16. Бумага типографская. Гарнитура Таймс. Печать офсетная. Уел. печ. л. 8,37. Тираж 5000 экз. Заказ № 88. Издательство ООО «Легион» включено в перечень организаций, осуществляющих издание учебных пособий, которые допускаются к использованию в образовательном процессе в имеющих государственную аккредитацию и реализующих образовательные программы общего образования образовательных учреждениях. Приказ Минобрнауки России № 729 от 14.12.2009, зарегистрирован в Минюст России 15.01.2010 N° 15987. ООО «ЛЕГИОН» Для писем: 344000, г. Ростов-на-Дону, а/я 550. Адрес редакции: 344082, г. Ростов-на-Дону, ул. Согласия, 7. \*™™.1еёюпг.ги е-шай: 1е§юпги5@1е§юппд5.сот Отпечатано в соответствии с качеством предоставленных диапозитивов в ЗАО «Полиграфобъединение» 347900, г. Таганрог, ул. Лесная биржа, 6В.
ПОДГОТОВКА к ЕГЭ и ИКТ Сборник задач по программированиюг - УЧЕБНО-МЕТОДИЧЕСКИИ КОМПЛЕКС ЛЕГИОН
ИНФ0РМЛТИ1 и И&Т Ой'рНй я» яо ядагрг^фоваийо Издательство включено в перечень организаций, осуществляющих издание учебн пособий, которые допускаются к использованию в образовательном процессе в имеюв государственную аккредитацию и реализующих образовательные программы обще образования образовательных учреждениях.Приказ Минобрнауки России № 729 - 14.12.2009, зарегистрирован в Минюст России 15.01.2010 № 15987 344000, г. Ростов-на-Дону, а/я 550 Тел. (863) 303-05-50, 248-14-03 };| Сайт, интернет-магазин: токтоДедопг.ги е-таУ: 1евюпги8@1е§юпги8.сот ИЗДАТЕЛЬСТВО Опт, мелкий опт, интернет-магазин, Учебно-методический комплекс «Информатика и ИКТ. Подготовка к ЕГЭ» под редакцией Л.Н. Евич, С.Ю. Кулабухова включает следующие издания для обучающихся и учителей: в Информатика и ИКТ. Подготовка к ЕГЭ-2015 • Информатика и ИКТ. 10-11 классы. Экспресс-подготовка к ЕГЭ • Информатика и ИКТ. Подготовка к ЕГЭ. Сборник задач по программированию. Издание 2-е • Информатика и ИКТ. 9-11 классы. Карманный справочник • Информатика и ИКТ: основы программирования. 9-11 классы. Карманный справочник • Информатика и ИКТ. Подготовка к ЕГЭ. Системы счисления. Задания А1, В7 ® Информатика и ИКТ. Подготовка к ЕГЭ. Поиск выигрышных стратегий. Решение задач СЗ • Информатика и ИКТ. Подготовка к ЕГЭ. Элементы алгебры логики. Решение заданий АЗ, А10, В15 • Информатика и ИКТ. Разработка программ. Основные приемы выполнения задания С4 Комплекс будет дополнен другими учебно¬ методическими пособиями, отражающими изменения в нормативных документах ЕГЭ