SlideShare a Scribd company logo
Сборник задач. PASCAL
Язык программирования: PASCAL
Сергей Митрофанов
E-mail: infostar@mail.ru
http://www.Best-Listing.ru/
В сборнике 196 задач
Гимназия "Лаборатория Салахова"
Сургут
1 декабря 2013 года
Содержание
1 Ввод и Вывод [io_8] 3
2 Условный оператор [if_14] 5
3 Оператор выбора (case) [c_4] 7
4 Циклы [ts_15] 8
5 Графика [gr_9] 10
6 Процедуры и функции [pf_11] 11
7 Целочисленная арифметика [tsa_20] 13
8 Строки [str_22] 15
9 Одномерные массивы [om_8] 19
10 Двумерные массивы [dm_21] 20
11 Вычислительная математика [vm_1] 23
12 Сортировка [s_4] 24
13 Рекурсия [rec_8] 25
14 Записи [z_5] 26
15 Множества [mn_14] 27
16 Биты, байты [bit_5] 29
17 Логика [log_3] 30
18 Текстовые файлы [txt_2] 31
19 Типизированные файлы [tf_7] 32
20 Динамическая память [dp_5] 33
21 ЕГЭ по информатике [ege_1] 34
22 Олимпиадные задачи [o_9] 35
2
1 Ввод и Вывод [io_8]
io_1. Написать программу, которая со мною поздоровается. Пусть она
спросит меня мое имя и сколько мне лет. И если я отвечу, что ме-
ня зовут, например, Алеша и мне 13 лет, то пусть поприветствует
меня следующим образом: "Привет, Алеша!", а потом напечата-
ет фразу "Теперь я знаю, что тебе 13 лет.".
io_2. Даны два действительных числа a и b. Получить их сумму, раз-
ность и произведение. Написать программу так, чтобы результат
выводился полным ответом (например, 4 * 5 = 20, если были
введены числа 4 и 5).
io_3. Найти значение выражения:
(𝑎 + (𝑑 − 12) · 3) · (𝑐 − 5 · 𝑘),
где значения переменных a, d, c и k вводятся с клавиатуры.
Если, например, были введены числа 1, 1, 1, 1, то на рабочий
экран программы напечатать ответ следующим образом:
(1 + (1 − 12) * 3) * (1 − 5 * 1) = 128.
io_4. Составить программу, вычисляющую расстояние 𝐿 между дву-
мя точками на плоскости, заданных своими координатами. Если
даны 𝐴(𝑥1, 𝑦1) и 𝐵(𝑥2, 𝑦2), то
𝐿 =
√︀
(𝑥1 − 𝑥2)2 + (𝑦1 − 𝑦2)2.
io_5. Написать программу, которая вычисляет площадь треугольника
по формуле Герона:
𝑆 =
√︀
𝑝(𝑝 − 𝑎)(𝑝 − 𝑏)(𝑝 − 𝑐),
где 𝑎, 𝑏, 𝑐 – стороны треугольника, а 𝑝 – его полупериметр.
io_6. Поменять местами значения переменных Х и Y с использованием
промежуточной переменной.
io_6v2. Поменять местами значения переменных x и y без использования
промежуточной переменной.
3
io_7. Четыре человека пообедали в ресторане. Официант подал им
счет на 𝑥 рублей каждому. Они решают оставить официанту чае-
вые в размере 15% от счета. Составьте программу, которая вы-
ведет на экран сумму чаевых, которую получил официант.
io_8. Привести примеры, когда в Паскале не выполняются равенства
y = y, y + y = 2 * y, b and b = b.
4
2 Условный оператор [if_14]
if_1. Определить h – полное количество часов и m – полное коли-
чество минут, прошедших от начала суток до того момента (в
первой половине дня), когда часовая стрелка повернулась на f
градусов (0 𝑓 360), где f – вещественное число.
if_2. Даны действительные числа x, y. Получить большее и меньшее
из двух.
if_3. Составьте программу, которая из трех введенных с клавиатуры
чисел возводит в квадрат положительные и четные, а остальные
оставляет без изменения.
if_4. Даны три действительных числа. Выбрать из них те, которые
принадлежат интервалу (1; 3)
if_5. Напишите программу, которая анализирует человека по возрасту
и относит к одной из четырех групп: дошкольник, ученик, работ-
ник, пенсионер.
if_6. Найти минимум из трех чисел несколькими способами.
if_7. Даны три действительных числа а, b, c. Получить максимальное
из трех.
if_7v2. Даны три действительных числа а, b, c. Получить максимальное
из трех. [Решение с 3-мя if-then]
if_7v3. Даны три действительных числа а, b, c. Получить максимальное
из трех. [Алгоритм с 1-м if-then-else]
if_7v4. Даны три действительных числа а, b, c, Получить максимальное
из трех. [1 оператор if-then-else]
if_8. Найти минимум из четырех целых чисел несколькими способа-
ми.
if_9. С помощью одного if найти максимальное из четырех чисел.
if_10. Написать прграмму, которая для заданных трех чисел A, B, C
проверяет, упорядочены ли они (A < B < C).
5
if_11. Для трех чисел A, B и C найти произведение двух наибольших,
пользуясь формулой
𝐴𝐵𝐶
𝑚𝑖𝑛(𝐴, 𝐵, 𝐶)
.
if_12. Составьте программу, реализирущую эпизод применения
компьютера в книжном магазине. Компьютер запрашивает сто-
имость книг, сумму денег внесенную покупателем; если сдачи
не требуется, печатает на экране "спасибо"; если денег внесено
больше, то печатается "возьмите сдачу" и указывает сумму сда-
чи; если денег недостаточно, то печатает об этом сообщение и
указывает размер недостающей суммы.
if_13. Написать программу расположения чисел n1, n2, n3 в возраста-
ющем порядке.
if_13v2. Написать программу расположения чисел n1, n2, n3 в возраста-
ющем порядке.
if_14. Даны действительные числа a, b, c. Вычислите корни уравнения
𝑎𝑥2
+ 𝑏𝑥 + 𝑐 = 0.
6
3 Оператор выбора (case) [c_4]
c_1. Написать программу, позволяющую по номеру дня недели - це-
лому числу от 1 до 7 выдавать в качестве результата количество
уроков в классе в соответствующий день.
c_2. Написать программу, которая по заданной букве русского алфа-
вита определяет, гласная ли это буква.
c_3. Написать программу нахождения числа дней в месяце, если да-
ны: номер месяца n, целое число a, равное 1 для високосного
года и равное 0 в противном случае.
c_4. Составьте программу, которая по введенному вами k - числу гри-
бов согласовывает фразу "Мы нашли в лесу k грибов", причем
согласовывает окончание слова "гриб" с числом k. (Количество
грибов может быть любым числом: 1, 3, 34, 127 и т.д. Окончание
фразы определяется значением последних цифр).
7
4 Циклы [ts_15]
ts_1. Написать программу вычисления суммы всех двузначных
чисел.
ts_2. Составить программу вычисления куба суммы всех четных чисел
от 2 до 100.
ts_3. Определите номерной знак автомашины нарушившей правила
движения, если по показателям свидетелей номер записывает-
ся тремя цифрами, кратен 2, 5 и 7, а сумма его цифр равна 12.
ts_4. Из чисел от 10 до 99 вывести те, сумма цифр которых равна n,
где 0 < 𝑛 18.
ts_5. Трехзначное десятичное число оканчивается цифрой 3. Если эту
цифру переместить на первое слева место в числе, т.е. с нее будет
начинаться запись нового числа, то это новое число будет на 1
больше утроенного исходного числа. Найти исходное число.
ts_6. Ввести натуральное число N. Выдать все тройки натуральных
чисел X, Y, Z, для которых
𝑁 = 𝑋2
+ 𝑌 2
+ 𝑍2
.
ts_7. С помощью repeat напишите программу, которая требует у вас
пароль, например 111, и если пароль правильный, то заполня-
ет все строки экрана сообщением "Молодец!!!". Если после 5
попытки пароль все равно не верен, выйти из программы.
ts_8. Для последовательности из N целых чисел. Найти суммы поло-
жительных и отрицательных элементов.
ts_9. Даны действительные числа. Вычислите их среднее арифмети-
ческое.
ts_10. Дано целое N > 0 и последовательность из N вещественных
чисел, среди которых есть хотя бы одно отрицательное число.
Найти величину наибольшего из отрицательных чисел этой по-
следовательности.
8
ts_10v2. Дано целое n > 0 и последовательность из n вещественных чи-
сел. Найти величину наибольшего из отрицательных чисел этой
последовательности.
ts_11. Имеется последовательность целых чисел. Найти сумму первых
из них, произведение которых не превышает заданного числа 𝑀.
ts_12. Задано целое 𝐴 > 1. Найти наименьшее целое неотрицательное
k, при котором 5 𝑘
> 𝐴.
ts_13. Написать программу вычисления суммы всех нечетных
N чисел.
ts_13v2. Написать программу вычисления суммы всех нечетных n чисел.
Записать варианты программы с разными видами циклов while,
repeat, for-to, for-downto.
ts_14. Найдите все двузначные числа, сумма цифр которых не меняется
при умножении числа на 2, 3, 4, 5, 6, 7.
ts_15. Вычислить при 𝑥 = 𝑠𝑖𝑛(5 𝑜
), 𝑠𝑖𝑛(10 𝑜
), . . . , 𝑠𝑖𝑛(60 𝑜
) и вывести в виде
таблицы с заголовками:
– значения функции 𝑎𝑟𝑐𝑠𝑖𝑛(𝑥);
– приближенные значения этой функции по формуле
𝑎𝑟𝑐𝑠𝑖𝑛(𝑥) ≈ 𝑥 +
𝑥3
2 · 3
−
3 · 𝑥5
2 · 4 · 5
+
3 · 5 · 𝑥7
2 · 4 · 6 · 7
−
3 · 5 · 7 · 𝑥9
2 · 4 · 6 · 8 · 9
используя скобочные формы и/или дополнительные перемен-
ные;
– приближенные значения этой функции по этой же формуле,
не используя скобочные формы и дополнительные переменные;
– абсолютную и относительную ошибки приближенных значе-
ний.
Для организации цикла использовать оператор for–to. При вы-
числениях приближенных значений использовать только опера-
ции сложения, вычитания, умножения, деления и стандартную
функцию 𝑆𝑞𝑟(𝑥).
9
5 Графика [gr_9]
gr_1. Построить и закрасить круг радиуса 50 пиксель, центр которого
совмещен с центром экрана.
gr_2. Нарисовать разноцветный круг.
gr_3. Нарисовать нотный стан и ноты.
gr_4. Нарисовать сетку-муар из пересекающихся прямоугольников.
gr_5. Построить оси координат. Начало координат поместить в центр
экрана.
gr_6. Изобразить шахматную доску.
gr_7. Нарисовать "снежную бабу" и клавишами "стрелка вверх",
"стрелка вниз", "стрелка налево", "стрелка направо" управлять
движением этой фигуры по экрану.
gr_8. Изобразить шахматную доску и закрасить ее диагонали разными
цветами.
gr_9. Изобразить шахматную доску и закрасить клеточки ее диагона-
лей разными цветами.
10
6 Процедуры и функции [pf_11]
pf_1. Напишите программу, которая выбирает максимальное из четы-
рех заданных чисел, используя функцию, которая выбирает мак-
симальное из двух чисел.
pf_2. Напишите процедуру, которая будет возвращать среднее ариф-
метическое двух чисел.
pf_3. Нарисовать на экране стрелку:
– –>
и клавишами "стрелка вверх", "стрелка вниз", "стрелка налево",
"стрелка направо" управлять движением по экрану этой нарисо-
ванной стрелки.
pf_4. Вывести на экран таблицу умножения от 2 до 9.
pf_5. Даны отрезки A, B, C и D. Для каждой тройки этих отрезков,
из которых можно построить треугольник, напечатать площадь
данного треугольника (определить процедуру, печатающую пло-
щадь треугольника со сторонами x, y и z, если такой треугольник
существует).
pf_5v2. Даны отрезки А, В, С и D. Для каждой тройки этих отрезков,
из которых можно построить треугольник, напечатать площадь
данного треугольника (определить процедуру печплощ (x, y, z),
печатающую площадь треугольника со сторонами x, y, z, если
такой треугольник существует).
pf_6. Демонстрация факта, что применять var в параметрах функции
можно!
pf_7. Type ряд = file of 1..MaxInt;
Описать процедуру fib (f, n), записывающую в ряд f все числа
Фибоначчи (1, 1, 2, 3, 5, ...), не превосходящие целого положи-
тельнорго числа N.
pf_8. Составить программу вычисления суммы трехзначных чисел, в
десятичной записи которых нет четной цифры. Использовать
функцию обнаружения таких чисел.
pf_9. Даны два натуральных числа. Определить, является ли первое
перевертышем второго.
11
pf_10. Составьте программу подсчета числа всех натуральных чисел,
меньших M, квадрат суммы цифр которых равен X.
pf_11. Составить программу вычисления суммы трехзначных чисел, в
десятичной записи которых нет четной цифры.
12
7 Целочисленная арифметика [tsa_20]
tsa_1. Найти количество четных цифр целого положительного
числа.
tsa_2. Напечатать цифры числа в прямом порядке.
tsa_3. Найти самую большую цифру целого числа.
tsa_4. Вводится число N. Определить максимальную четную цифру
этого числа.
tsa_4v2. Вводится число N. Определить максимальную четную цифру
этого числа.
tsa_5. Дано число. Напечатать это же число "задом наперед", как чис-
ло.
tsa_6. Поменять местами первую и последнюю цифру натурального
числа.
tsa_7. Вычеркнуть максимальную и минимальную цифры из натураль-
ного числа.
tsa_8. Дано натуральное число. Определить, является ли это число пе-
ревертышем.
tsa_9. Даны два натуральных числа. Определить, ялвяется ли первое
перевертышем второго.
tsa_10. Из цифр числа составить наибольшее число. Ответ получить не
как набор последовательных цифр, а как настоящее число.
tsa_11. Три алгоритма о том, чтобы узнать, является ли
число простым.
tsa_12. Дано простое число p. Найти и вывести на экран следующее за
ним простое число.
tsa_13. Составить программу для проверки, можно ли заданное нату-
ральное число N представить в ввиде квадрата простого
числа.
13
tsa_14. Напечатать все простые числа от 1 до 1 000 000. В коде должна
быть функция, определяющая является ли число простым.
tsa_15. Разложить число на простые множители.
tsa_16. Узнать, является ли данное число палиндромом.
tsa_16v2. Написать программу определения палиндрома.
tsa_16v3. Написать программу определения палиндрома.
tsa_17. Разработать программу поиска и печати всех пар дружественных
чисел, меньших 10000.
tsa_18. Разработать программу поиска и печати всех "близнецов", при-
надлежащих заданному диапазону [N; M].
tsa_18v2. Разработать программу поиска и печати всех "близнецов", при-
надлежаших заданному диапазону [N; M].
tsa_19. Вывести на печать все совершенные числа в диапазоне от L до
R.
tsa_20. Найти все простые числа от 1 до N, используя алгоритм "Решето
Эратосфена".
14
8 Строки [str_22]
str_1. Найти сколько раз в предложении встречается символ, введеный
с клавиатуры.
str_2. В заданной последовательности слов найти все слова, начинаю-
щиеся c заданной приставки.
str_3. Дан произвольный текст. Подсчитать общее число
вхождений символов "+", "-", "*" в тексте.
str_4. Задано число, записанное двумя римскими цифрами. Вывести
его значение в общепринятой арабской системе счисления.
str_5. Составьте программу, запрашивающую символьную строку и вы-
водящую ее же, но в обратном порядке.
Например, "Коза" - "азоК".
str_5v2. Составьте программу, запрашивающую символьную строку и вы-
водящую ее же, но в обратном порядке.
Например, "Коза" - "азоК".
str_6. Удвоить каждую букву в заданном тексте.
str_6v2. Удвоить каждую букву в заданном тексте.
str_6v3. Удвоить каждую букву в данном тексте.
str_7. Из данной строки получить новую строку, удалив все звездочки
и повторив каждый символ, отличный от звездочки.
str_7v2. Из данной строки получить новую строку, удалив все звездочки
и повторив каждый символ, отличный от звездочки.
Решить с помощью процедур Delete и Insert.
Delete (T, i, count);
T - из какого текста удаляем,
i - с какой позиции,
count - сколько удаляем символов.
Insert (R, T, i);
R - какой вставляем текст,
T - в какой текст (данный текст),
i - с какой позиции текста Т.
15
str_7v3. Из заданной строки получть новую строку, удалив все звездочки
и повторив каждый символ, отличный от звездочки.
Напишите код, используя функции и процедуры Pos, Delete и
Insert.
str_8. Составьте программу, которая каждую встречную в слове букву
"б" заменяла сочетанием букв "ку".
str_8v2. Составьте программу, которая каждую встречную в слове букву
"б" заменяла сочетанием букв "ку".
str_9. Из слова удалить среднюю букву, если длина строки нечетна,
иначе - удалить две средние буквы.
str_10. Дан текст, среди которого есть двоеточие. Получить все симво-
лы, расположенные между первым и вторым двоеточием. Если
второго двоеточия нет, то получить все символы, расположенные
после единственного двоеточия.
str_10v2. Дан текст, среди которого есть двоеточие. Получить все симво-
лы, расположенные между первым и вторым двоеточием. Если
второго двоеточия нет, то получить все символы, расположенные
после единственного двоеточия.
str_10v3. Дан текст, среди которого есть двоеточие. Получить все симво-
лы, расположенные между первым и вторым двоеточием. Если
второго двоеточия нет, то получить все символы, расположенные
после единственного двоеточия.
str_11. Заданы две строки str1 и str2, каждая из которых содержит n
литер. Подсчитать число цифр в str1 и количество строчных ла-
тинских букв в str2.
str_12. Написать нерекурсивную программу, которая находит все пере-
становки из 6-ти символов.
str_13. Дано предложение. Напечатать все слова, отличные
от слова "hello".
str_13v2. Дана последовательность слов. Напечатать все слова, отличные
от "hello".
str_13v3. Дана последовательность слов. Напечатать все слова, отличные
от "hello".
16
str_14. Написать программу, которая подсчитывает количество слов во
введенной строке, первый и последний символ которых равны.
str_15. Предложение состоит из слов, между словами один пробел, а
после последнего слова точка. Найти длину самого
длинного слова.
str_16. Определить количество слов в строке символов между словами
максимальной и минимальной длины.
str_17. Из заданного предложения выбрать и напечатать только те сим-
волы, которые встречаются в нем только 1 раз. (в том порядке,
в котором они встречаются в тексте)
str_18. Выясните сколько раз в предложенном тексте встречается каж-
дое двухбуквенное слово.
str_18v2. Выясните, сколько раз в предложенном тексте встречается
каждое двухбуквенное слово.
str_19. В заданном предложении удалите каждое второе слово, а остав-
шиеся переверните. (Например, из текста "А роза упала на лапу
Азора" должен получится текст "А алапу упал").
str_20. Дана последовательность слов. Напечатать все слова последо-
вательности, которые встречаются в ней по одному разу.
str_20v2. Дана последовательность слов. Напечатать все слова последо-
вательности, которые встречаются в ней по одному разу.
str_21. Дана последовательность слов. Напечатать все слова в алфавит-
ном порядке.
str_21v2. Дано предложение, между словами которого может быть любое
число пробелов. Напечать слова данного предложения в алфа-
витном порядке. Массивы не использовать.
str_22. Алгоритм Рабина-Карпа
Данo:
T - текст из n символов.
T [i] - его i-тый символ.
S - слово-строка-образец, которое ищем в T, его длина m
S [i] - i-тый символ слова-строки-образца.
17
Задача.
Узнать, входит ли S в T, и если входит, то начиная с какого
символа текста T.
18
9 Одномерные массивы [om_8]
om_1. Задан одномерный массив А. Требуется переписать элементы
одномерного массива А кратные 5 в массив В, а если такие от-
сутствуют, то выдать соответствующее сообщение.
om_2. Дан одномерный массив, cостоящий только из нулей и единиц.
Проверьте строго ли они чередуются.
om_3. Дан одномерный массив натуральных чисел, определить есть ли
в нем K подряд идущих одинаковых чисел (𝐾 < 100).
om_4. Дан одномерный массив из целых чисел. Перевернуть его.
om_5. Дан массив целых чисел, заполненный случайными числами.
Удалить все элементы, начиная с k1-го по k2-ой (k1 и k2 вводить
с клавиатуры). Сделать проверку корректности ввода значений
k1 и k2 (𝑘1 𝑘2), если ввод некорректный, то вывести сообщение
об ошибке и закончить работу.
om_6. Даны два одномерных массива. Найти наименьший среди тех
элементов первого массива, которые не входят во второй.
om_7. Разработать программу поиска и печати всех пар дружественных
чисел, меньших 10 000.
om_8. Дан целочисленный массив А. Подсчитать, сколько раз встре-
чается в этом массиве максимальное по величине число. Найти
это максимальное за один проход по массиву.
19
10 Двумерные массивы [dm_21]
dm_1. Заполнить двумерный массив двумя способами:
1) с клавиатуры;
2) случайными числами от -4 до 5, используя генератор слу-
чайных чисел.
dm_2. Заполнить двумерный массив при помощи счетчика случайных
чисел и найти сумму элементов массива.
dm_3. Заполнить двумерный массив с клавиатуры, найти произведение
элементов по главной и побочной диагонали.
dm_4. Найти сумму элементов двумерного массива, выше побочной
диагонали.
dm_5. Заполнить двумерный массив по следующему правилу: элемен-
ты главной диагонал равны 1, ниже главной диагонали - 0, а
выше - сумме индексов.
dm_6. Составить программу, записывающую все положителные элемен-
ты двумерного массива А в одномерный массив В, а отрицатель-
ные – в одномерный массив С.
dm_7. Из предложенного одномерного массива размерностью S сфор-
мируйте двумерный массив так, чтобы первая строка новой таб-
лицы содержала четные по номеру элементы исходного
массива, а вторая – нечетные. Предусмотреть случай нечетности
S.
dm_8. Дана матрица F (10, 8). Ее элементами являются целые случай-
ные числа из интервала [0..255]. Транспонировать эту матрицу.
Вывести на печать элементы главной диагонали и диагонали,
расположенной под главной. Найти сумму всех элементов, крат-
ных 10 и находящихся над главной диагональю.
dm_9. Дан двумерный массив. Составьте программу определения зна-
чения наибольшего элемента этого массива.
dm_10. Дан двумерный массив. Составьте программу определения ин-
дексов минимального элемента этого массива.
dm_11. В двумерном массиве X все числа различны. В каждой стро-
ке выбирается минимальный элемент, затем среди этих чисел
20
выбирается максимальное. Напечатать номер строки массива, в
которой расположено найденное число.
dm_12. Написать функцию, выясняющую, есть ли в двумерном
массиве одинаковые элементы. Вспомогательные массивы не за-
водить.
dm_13. Дан двумерный массив. Найти номера строк, элементы в каждой
из которых одинаковы.
dm_14. Дан двумерный массив. Поменять значения элементов побочной
диагонали, с соответствующими значениями элементов
главной диагонали (или, по другому говоря, поменять местами
побочную и главную диагонали).
dm_15. Дан двумерный массив. Поменять местами два его столбца, если
известны их номера.
dm_16. Дан двумерный массив. Все элементы, расположенные под по-
бочной диагональю поменять на соответствующие им элементы,
расположенные над побочной диагональю.
dm_17. В двумерном массиве удалить строчку с номером 𝑁.
dm_18. Дана матрица A (n, k) (n <= 20, k <= 10). Сформировать мат-
рицу B (n, max) следующим образом: каждая строка матрицы
A переписывается в соответствующую (в такую же по номеру)
строку матрицы B. Причем переписываются все первые неотри-
цательные элементы строки матрицы A, пока в ней не встретит-
ся первое отрицательное число. Число столбцов в матрице B –
переменная max – это наибольшее значение числа неотрицатель-
ных элементов в строках матрицы A, предшествующих первому
отрицательному числу строки. Вывести на печать сформирован-
ную матрицу B.
dm_19. Заполнение квадратной четной матрицы по спирали, начиная с
центра.
dm_20. Удалить все строки и столбцы, на пересечении которых стоят
отрицательные элементы.
dm_20v2. Составить программу, удаляющую все строки и столбцы, на пе-
ресечении которых стоят отрицательные элементы.
21
dm_21. Рассчитать ранг введенной матрицы. Автоматизировать ввод
матрицы. Создать возможность распечатки ранга текущей мат-
рицы или всех расчетов матриц, производимых в данной про-
грамме.
22
11 Вычислительная математика [vm_1]
vm_1. Дано уравнение
3 · 𝑥4
− 2 · sin(−𝑥2
) + 3𝑥 − 1 = 0.
Найти корни этого уравнения с точностью 𝐸𝑃 𝑆 = 1𝐸 − 3 в интер-
вале [−10; 10].
23
12 Сортировка [s_4]
s_1. Произвести сортировку одномерного массива методом "пузырь-
ка".
s_1v2. Отсортировать массив методом "пузырька" или обменом. Алго-
ритм пузырьковой сортировки.
s_2. Из двух одномерных массивов (K и N) сформируйте массив раз-
мером K + N, упорядоченый.
s_3. В заданном двумерном массиве найдите сумму элементов в каж-
дой строке. Сформируйте одномерный массив, содержащий по-
лученные суммы, расположенные по возрастанию.
s_4. Составьте программу упорядочения по возрастанию элементов
каждой строки двумерного массива.
s_4v2. Составьте программу упорядочения по возрастанию элементов
каждой строки двумерного массива. Для сортировки используй-
те алгоритм quicksort.
24
13 Рекурсия [rec_8]
rec_1. Найти факториал числа.
rec_2. Вычислить i-е число Фибоначчи. Известно, что каждое
последующее число Фибоначчи равняется сумме двух предыду-
щих.
rec_3. Найти степень числа 𝐴 𝑛
.
rec_4. Составьте программу вычисления суммы:
𝑆 =
𝑥1
1!
+
𝑥2
2!
+
𝑥3
3!
+ ... +
𝑥 𝑛
𝑛!
rec_5. Напечатать цифры натурального числа в прямом порядке с по-
мощью рекурсии.
rec_5v2. Дано десятичное число N. Составить рекурсивную процедуру, пе-
чатающие все цифры числа в "прямом" порядке, в том порядке,
в каком они идут в самой записи числа N.
rec_6. Напишите рекурсивную процедуру, которая выводит переданное
ей натуральное число в двоичной системе счисления, не исполь-
зуя при этом никаких переменных.
rec_7. Найти все перестановки из ’ABCD’.
rec_8. Поиск троек
Дано N приборов, их число не превосходит 2147483647. Прибо-
ры делятся на две группы. В первую группу попадают приборы
с нечетными номерами, а во вторую – с четными. Если в группе
остается только три прибора, то эта тройка приборов упаковыва-
ется. А если в группе приборов больше чем 3, то процесс деления
на группы повторяется. Узнать, сколько троек будет упаковано в
процессе такого деления.
25
14 Записи [z_5]
z_1. Демонстрация работы с записью.
z_2. Багаж пассажира характеризуется количеством вещей и общим
весом вещей. Дан массив, содержащий сведения о багаже каж-
дого пассажира, которые представляют из себя записи с двумя
полями: одно поле целого типа (количество вещей) и другое –
дейстительное (вес в килограммах). Найти багаж, средний вес
одной вещи в котором минимален.
z_3. Создать список гимназистов с указанием возраста. Отсортиро-
вать его сначала по фамилии, затем по возрасту.
z_3v2. Распечатать список студентов, упорядоченный по алфавиту. Сор-
тировку "пузырьком" написать с помощью цикла while.
z_4. В деканате на карточке студента отмечается его успеваемость.
Узнать, сколько имеется студентов отличников, хорошистов и с
одной тройкой по 4 предметам.
z_5. Распечатать список студентов, упорядоченный по их весу. Ис-
пользовать сортировку выбором.
26
15 Множества [mn_14]
mn_1. Составьте программу, которая по введенному вами k – числу
грибов печатает фразу "Мы нашли в лесу k грибов", причем
согласовывает окончание слова "гриб" с числом k. (Окончание
фразы определяется значением последних цифр).
mn_2. Дана непустая последовательность символов. Требуется
построить и напечатать множество, элементами которого явля-
ются встречающиеся в последовательности знаки препинания.
mn_3. Дана непустая последовательность символов. Требуется
построить и напечатать множество, элементами которого явля-
ются встречающиеся в последовательности буквы от ’А’ до ’Z’ и
цифры от ’0’ до ’5’.
mn_4. Дана непустая последовательность символов. Требуется
построить и напечатать множество, элементами которого явля-
ются встречающиеся в последовательности цифры и знаки
арифметических операций.
mn_5. Опишите множества 𝑀1 (1, 2) и 𝑀2 (5, 6). Получите результиру-
ющее множество 𝑀3 = 𝑀1 + 𝑀2. Определите, имеется ли в 𝑀3
элемент 7.
mn_6. Опишите множества 𝑀1 (1, 2, 3, 4) и 𝑀2 (3, 4, 1). Получите резуль-
тирующее множество 𝑀3 = 𝑀1 − 𝑀2. Определите, имеется ли в
𝑀3 элемент 2.
mn_7. Опишите множества 𝑀1 (1, 2, 3) и 𝑀2 (1, 4, 2, 5). Получите резуль-
тирующее множество 𝑀3 = 𝑀1 * 𝑀2. Определите, имеется ли в
𝑀3 элемент 2.
mn_8. Пусть даны 𝑀1 (1, 2, 3, 4) и 𝑀2 (5, 6). Получите результирующее
множество 𝑀3 = 𝑀1 + 𝑀2. Определите, имеются ли в 𝑀3 эле-
менты 1 и 2.
mn_9. Опишите множества 𝑅 и 𝐿, содержащие русские и латинские бук-
вы. Последовательно вводите русские и латинские буквы и выво-
дите сообщения о том, какая эта буква: русская или латинская.
Ввод букв прекращается при нажатии на клавишу ’!’.
mn_10. Составить программу печати в возрастающем порядке всех
цифр, входящих в данное десятичное число, состоящее из 10
27
любых цифр.
mn_11. Составить программу подсчета общего количества цифр и зна-
ков "+", "–", "*" в строке 𝑠, введенной с клавиатуры.
mn_12. Составить программу, подсчитывающую количество гласных и
согласных букв в заданном тексте и определяющую, каких букв
больше, учесть, что в строке могут быть и другие символы, кро-
ме букв.
mn_13. muha + muha = slon
Решить ребус с помощью множеств.
mn_14. Найти все простые числа от 2 до 255 с помощью решета Эрато-
сфена.
28
16 Биты, байты [bit_5]
bit_1. Дано натуральное N. При возврате из процедуры все биты этого
N должны быть представлены в обратном порядке. Найти деся-
тичное число, соответствующее этому порядку.
Например:
1110 → 10112 → 11012 → 1310
bit_1v2. Дано натуральное N. При возврате из процедуры все биты этого
N должны быть представлены в обратном порядке. Найти де-
сятичное число, соответствующее этому порядку. (Тип данных
string не использовать. Примените логическую операцию сдвига
влево – SHL)
Например:
1110 → 10112 → 11012 → 1310
bit_2. Напечать биты байта.
bit_3. Определить количество бит в двоичном представлении данного
натурального числа.
bit_4. Дано натуральное N. Вычислить 2 𝑁
. Использовать операцию shl.
bit_5. Дано десятичное натуральное число N. Вывести его в двоичной
системе, отделяя каждые 4 бита справа запятой. (Используйте
рекурсию)
Например: 4810 → 11, 00002
29
17 Логика [log_3]
log_1. Три грибника, рассматривая найденный гриб, высказали свои
предположения. Первый грибник сказал: "Не верно, что, если
это не опенок, то этот гриб съедобный". Второй грибник был
также осторожен и сказал: "Не верно, что этот гриб или ядо-
витый или опенок или не сыроежка". Третий грибник заявил:
"Этот гриб не ядовитый, и я отрицаю, что, если это сыроежка,
что на съедобна". В итоге оказалось, что все три грибника были
правы и их суждения оказались истинными. Какой гриб нашли
грибники?
log_2. Алеша, Боря и Гриша нашли в земле сосуд. Рассматривая уди-
вительную находку, каждый высказал по два предположения:
Алеша. Это сосуд греческий и изготовлен в V веке.
Боря. Это сосуд финикийский и изготовлен в III веке.
Гриша. Это сосуд не греческий и изготовлен в IV веке.
Учитель истории сказал ребятам, что каждый из них прав только
в одном из двух предположений. Где и в каком веке изготовлен
сосуд?
log_3. В школьном первенстве по настольному теннису в четверку луч-
ших вошли девушки: Наташа, Маша, Люда и Рита. Самые горя-
чие болельщики высказали свои предположения о распределе-
нии мест в дальнейших состязаниях.
Один считает, что первой будет Наташа, а Маша будет второй.
Другой болельщик на второе место прочит Люду, а Рита, по его
мнению, займет четвертое место.
Третий любитель тенниса с ними не согласился. Он считает, что
Рита займет третье место, а Наташа будет второй.
Когда соревнования закончились, оказалось, что каждый из бо-
лельщиков был прав только в одном из своих прогнозов.
Какое место на чемпионате заняли Наташа, Маша, Люда, Рита?
30
18 Текстовые файлы [txt_2]
txt_1. Дан файл F, компонентами которого являются целые числа. За-
писать в файл G все четные числа файла F, а в файл H - все
нечетные. Порядок следования чисел сохранить.
txt_2. Задается имя файла и целое число N. Распечатать последние N
строк.
31
19 Типизированные файлы [tf_7]
tf_1. Дан файл F, компонентами которого являются целые числа. За-
писать в файл G все четные числа файла F, а в файл H - все
нечетные. Порядок следования чисел сохранить.
tf_2. Дан файл F, компоненты которого являются целыми числами.
Записать в файл G все элементы файла F в обратном порядке.
tf_3. Имеется файл из целых чисел. Составьте программу упорядоче-
ния файла по возрастанию. Вспомогательного массива
не заводить. Для решения задачи применить типизированный
файл.
tf_4. Пусть 𝑡𝑦𝑝𝑒 ряд = 𝑓 𝑖𝑙𝑒 𝑜𝑓 1..𝑀 𝑎𝑥𝐼𝑛𝑡;
Описать процедуру 𝑓 𝑖𝑏(𝑓, 𝑛), записывающую в ряд 𝑓 все числа
Фибоначчи (1, 1, 2, 3, 5, ...), не превосходящие целого положитель-
норго числа 𝑛.
tf_5. Отсортировать файл по возрастанию методом выбора.
tf_6. Используя структуру с полями пол, имя, возраст, распечатать
количество девушек по имени "Елена" и имена тех, кому 19 лет
(данные находятся в файле).
tf_7. Пусть простейшее описание книги будет состоять из ее названия,
автора, цены и года издания.
В процессе ввода данных описание книг записывать в типизиро-
ванный файл.
Ввод описания книг прекращать при значении названия книги
равном ’@’.
Напечатать список описаний книг по определенному году изда-
ния, указывая логический номер записи в файле.
В полученном типизированном файле поменять местами
первую и последнюю запись.
Затем проделать следующие операции с типизированным фай-
лом:
– записать какую-либо запись в конец файла;
– удалить запись из файла, зная ее логический номер;
– вставить новую запись на опредленный логический номер.
32
20 Динамическая память [dp_5]
dp_1. Завести динамические переменные и уничтожить их по оконча-
нии работы программы.
dp_2. Завeсти в Heap (куче) два динамических массива. Слить их в
один динамический массив. Распечатать результат. Перед тем,
как закончить работу программы, вернуть занятую память об-
ратно OS.
dp_3. Определить матрицу A (200 * 2, 200), такую что: в 1 и 2 строке
по 200 чисел, в 3-ей и 4-ой строке по 199 чисел, в 5-ой и 6-ой
строке – по 198 чисел и так далее. Элементы матрицы заполня-
ются последовательными натуральными числами. Первое число
первой строки – 1. Первое число второй строки – 201, третьей
– 401 и так далее. Памяти выделяется ровно столько, сколько
нужно. С помощью MemAvail пронаблюдать за расходом памя-
ти. После Begin, после выделения памяти, после ее освобожде-
ния. По номеру строки и столбца, узнать какой там находится
элемент-число. Памяти использовать как можно меньше.
dp_4. Организовать новую структуру данных - односвязный список.
dp_5. Из текстового файла (не менее 900 Kb) прочитать 20 000 слов,
записать их в двумерный массива T (100, 200). Отсортировать
массив стрингов T методом пузырька.
33
21 ЕГЭ по информатике [ege_1]
ege_1. В данном массиве найти второе по величине значение (второе
максимальное или второе минимальное) за однократный про-
смотр массива.
34
22 Олимпиадные задачи [o_9]
o_1. Требуется сложить два целых числа А и В.
Время: 1 с. Память: 16 Мб Сложность: 2%
Входные данные:
В единственной строке input.txt записано 2 числа через пробел,
не превышающих 109
.
Выходные данные:
В единственную строку выходного файла output.txt нужно выве-
сти одно целое число – сумму чисел А и В.
Пример:
input.txt output.txt
2 3 5
o_2. Требуется посчитать сумму целых чисел от 1 до N.
Время: 1 с. Память: 16 Мб Сложность: 19%
Входные данные:
В единственной строке input.txt записано единственное целое
число N, не превышающее по абсолютной величине 104
Выходные данные:
В единственную строку выходного файла output.txt нужно выве-
сти одно целое число – сумму чисел от 1 до N.
Пример:
input.txt output.txt
5 15
o_3. Напечатать введенное число прописью.
o_4. В написанном выражении ((((1?2)?3)?4)?5)?6) вместо каждого зна-
ка ? вставить знак одного из четырех арифметических действий:
+, −, *, / так, чтобы результат вычислений равнялся 35 (при де-
лении дробная часть отбрасывается). Достаточно найти одно ре-
шение.
o_5. Имеется пять целых чисел. Среди них: - если одинаковы 5, то
вывести "Impossible", иначе - если одинаковы 4, то вывести "Four
of a Kind", иначе - если одинаковы 3 и 2, вывести "Full House",
иначе - если есть 5 последовательных, вывести "Straight", иначе
- если одинаковы 3, то вывести "Three of a Kind", иначе - если
35
одинаковы 2 и 2, то вывести "Two Pairs", иначе - если одинаковы
2, вывести "One Pair", иначе - вывести "Nothing".
Примечание. 5 чисел берутся из интервалла от 1 до 13, разде-
ленных пробелом.
o_6. Пятью пять – двадцать пять!
(Время: 1 сек. Память: 16 Мб. Сложность: 8 %)
Вася и Петя учатся в школе в одном классе. Недавно Петя по-
ведал Васе о хитром способе возведения в квадрат натураль-
ных чисел, оканчивающихся на цифру 5. Теперь Вася может с
легкостью возводить в квадрат двузначные (и даже некоторые
трехзначные) числа, оканчивающиеся на 5. Способ заключается
в следующем: для возведения в квадрат числа, оканчивающе-
гося на 5 достаточно умножить число, полученное из исходно-
го вычеркиванием последней пятерки на следующее по порядку
число, затем остается лишь приписать "25" к получившемуся
результату справа. Например, для того, чтобы возвести число
125 в квадрат достаточно 12 умножить на 13 и приписать 25, т.е.
приписывая к числу 12 · 13 = 156 число 25, получаем результат
15625, т.е. 1252
= 15625. Напишите программу, возводящую чис-
ло, оканчивающееся на 5, в квадрат для того, чтобы Вася смог
проверить свои навыки.
Входные данные
В единственной строке входного файла INPUT.TXT записано од-
но натуральное число А, оканчивающееся на цифру 5, не превы-
шающее 4 · 105
.
Выходные данные
В выходной файл OUTPUT.TXT выведите одно натуральное
число – 𝐴2
без лидирующих нулей.
Примеры
N INPUT.TXT OUTPUT.TXT
1 5 25
2 75 5625
3 4255 18105025
o_6v2. Вася и Петя учатся в школе в одном классе. Недавно Петя по-
ведал Васе о хитром способе возведения в квадрат натураль-
ных чисел, оканчивающихся на цифру 5. Теперь Вася может с
легкостью возводить в квадрат двузначные (и даже некоторые
трехзначные) числа, оканчивающиеся на 5.
36
Способ заключается в следующем: для возведения в квадрат
числа, оканчивающегося на 5 достаточно умножить число, по-
лученное из исходного путем вычеркивания последней пятерки
на следующее за ним по порядку число, затем остается лишь
приписать "25" к получившемуся результату справа.
Время: 1 с. Память: 16 Мб Сложность: 8%
Входные данные:
В единственной строке input.txt записано единственное целое
число N, не превышающее по абсолютной величине 4 · 105
.
Выходные данные:
В единственную строку выходного файла output.txt нужно выве-
сти одно натуральное число – 𝐴2
без лидирующих нулей
Пример:
input.txt output.txt
5 25
75 5625
4255 18105025
o_7. Шахматы
(Время: 1 сек. Память: 16 Мб. Сложность: 18 %)
Совсем недавно Вася занялся программированием и решил ре-
ализовать собственную программу для игры в шахматы. Но у
него возникла проблема определения правильности хода конем,
который делает пользователь. то есть если пользователь вво-
дит значение "C7–D5", то программа должна определить это
как правильный ход, если же введено "E2–E4", то ход невер-
ный. Так же нужно проверить корректность записи ввода: если,
например, введено "D9–N5", то программа должна определить
данную запись как ошибочную. Помогите ему осуществить эту
проверку.
Входные данные
В единственной строке входного файла INPUT.TXT записан
текст хода, который указал пользователь. Пользователь не мо-
жет ввести строку, длиннее 5 символов.
Выходные данные
В выходной файл OUTPUT.TXT нужно ввести "YES", если ука-
занный ход конем верный, если же запись корректна (в смысле
записи координат), но ход невозможен, то нужно вывести "NO".
37
Если же координаты не определены или заданы некорректно, то
вывести сообщение "ERROR".
Примеры
N INPUT.TXT OUTPUT.TXT
1 C7 – D5 YES
2 E2 – E4 NO
3 BSN ERROR
o_8. Статистика.
(Время: 1 сек. Память: 16 Мб. Сложность: 25 %)
Вася не любит английский язык, но каждый раз старается полу-
чить хотя бы четверку за четверть, чтобы оставаться ударником.
В текущей четверти Вася заметил следующую закономерность:
по нечетным дням месяца он получал тройки, а по четным –
четверки. Так же он помнит, в какие дни он получал эти оценки.
Поэтому он выписал на бумажке все эти дни для того, чтобы
оценить, сколько у него троек и сколько четверок. Помогите Ва-
се это сделать, расположив четные и нечетные числа в разных
строчках. Вася может рассчитывать на оценку 4, если четверок
не меньше, чем троек.
Входные данные
В первой строке входного файла INPUT.TXT записано един-
ственное число N - количество элементов массива (1 𝑁 100).
Вторая строка содержит N чисел, представляющих заданный
массив. Каждый элемент массива – натуральное число от 1 до
31. Все элементы массива разделены пробелом.
Выходные данные
В первую строку выходного файла OUTPUT.TXT нужно выве-
сти числа, которые соответствуют дням месяцев, в которые Ва-
ся получил тройки, а во второй строке соответственно располо-
ить числа месяца, в которые Вася получил четверки. В третьей
строке нужно вывести "YES", если Вася может рассчитывать на
четверку и "NO" в противном случае. В каждой строчке чис-
ла следует выводить в том же порядке, в котором они идут во
входных данных. При выводе, числа отделяются пробелом.
Примеры
38
N INPUT.TXT OUTPUT.TXT
1 5 19 31
4 16 19 31 2 4 16 2
YES
2 8 29 7 15 17 1
29 4 7 12 15 17 24 1 4 12 24
NO
o_9. Олимпиадная задача
(Время: 1 сек. Память: 16 Мб. Сложность: 25 %)
Петя успевает по математике лучше всех в классе, поэтому учи-
тель задал ему сложное домашнее задание, в котором нужно
в заданном наборе целых чисел найти сумму всех положитель-
ных элементов, затем найти где в заданной последовательности
находятся максимальный и минимальный элемент и вычислить
произведение чисел, расположенных между ними. Так же из-
вестно, что минимальный и максимальный элемент встречаются
в заданном множестве чисел только один раз. Поскольку задач
такого рода учитель дал Пете около ста, то Петя как сильный
программист смог написать программу, которая по заданному
набору чисел самостоятельно находит решение. А вам слабо?
Входные данные
В первой строке входного файла INPUT.TXT записано един-
ственное число N - количество элементов массива. Вторая стро-
ка содержит N целых чисел, представляющих заданный массив.
Все элементы массива разделены пробелом. Каждое из чисел во
входном файле не превышает 102
по абсолютной величине.
Выходные данные
В первую строку выходного файла OUTPUT.TXT нужно вывести
два числа: сумму всех положительных чисел и произведение чи-
сел, расположенных между минимальным и максимальным эле-
ментами. Значения суммы и произведения не превышают по мо-
дулю 3 · 104
.
Примеры
39
N INPUT.TXT OUTPUT.TXT
1 5 17 -15
-7 5 -1 3 9
2 8 26 180
3 14 -9 4 -5 1 -12 4
3 10 36 5040
-5 1 2 3 4 5 6 7 8 -3
40

More Related Content

PPTX
Podgotovka k egje_po_matematike_zadacha_v8
PPT
Tablicy istinnosti
DOC
Функции
PPT
ИНТЕГРАЛ ТАЛБАЙ /Integral/
PPT
Разбор заданий В8 ЕГЭ по математике
PPT
геометрический смысл производной
PPT
Naturalnye logarifmy
PDF
Podgotovka k egje_po_matematike_zadacha_v8
Tablicy istinnosti
Функции
ИНТЕГРАЛ ТАЛБАЙ /Integral/
Разбор заданий В8 ЕГЭ по математике
геометрический смысл производной
Naturalnye logarifmy

What's hot (20)

PPT
Gia zadacha 14
PPTX
4 b stepennye fukcii
PPT
8 клас скорочення дробів
PDF
13.02.9.2
PDF
13.01.9.4
PPT
Funkciya arifmeticheskogo kvadratnogo_kornya
PPTX
Prilozheniya proizvodnoj
PPT
путешествие в страну алгебраических дробей
PPT
Algoritm nahozhdeniya proizvodnoj
PDF
гдз по алгебре 11 класс мордкович, 2001 год
PDF
13.02.9.3
PPT
презентация к уроку 3
PDF
13.02.9.1
PPT
Egje po matematike_zadaniya_s5
PDF
Разбор задач модуля "Теория графов ll"
PPTX
Сложение и вычитание чисел
PDF
proverochnie-raboti-po-algebre
PPT
Простейшие преобразования графиков функций.
PPT
Functions
Gia zadacha 14
4 b stepennye fukcii
8 клас скорочення дробів
13.02.9.2
13.01.9.4
Funkciya arifmeticheskogo kvadratnogo_kornya
Prilozheniya proizvodnoj
путешествие в страну алгебраических дробей
Algoritm nahozhdeniya proizvodnoj
гдз по алгебре 11 класс мордкович, 2001 год
13.02.9.3
презентация к уроку 3
13.02.9.1
Egje po matematike_zadaniya_s5
Разбор задач модуля "Теория графов ll"
Сложение и вычитание чисел
proverochnie-raboti-po-algebre
Простейшие преобразования графиков функций.
Functions
Ad

Viewers also liked (9)

PPS
Язык программирования Pascal
PPTX
Deliteli i kratnye_2
PDF
Программирование на языке C Sharp (СИ решетка) ПРАКТИКУМ
PPT
графические возможности паскаль
PPTX
арифметические действия над элементами массива
DOCX
«Анимация в PascalABC»
PPT
бомба для графики в паскаль
PDF
ривкінд інфо п 8.укр_(125-15)_s
PPT
графика Pascal ABC
Язык программирования Pascal
Deliteli i kratnye_2
Программирование на языке C Sharp (СИ решетка) ПРАКТИКУМ
графические возможности паскаль
арифметические действия над элементами массива
«Анимация в PascalABC»
бомба для графики в паскаль
ривкінд інфо п 8.укр_(125-15)_s
графика Pascal ABC
Ad

Similar to сборник-задач-Pascal (20)

PDF
wqdw
PPT
задания части С олейник
PPT
задания с олейник
DOC
Dlya ustnogo scheta
PDF
1827 огэ-2016. математика. трен. задания мирошин в.в-2015 -96с
PDF
PPT
паскаль
PPTX
Цикл For
PPT
Программирование циклических алгоритмов
PPT
PPT
характеристика основных числовых множеств
PPT
Презентация на тему: Обзор возможных Исполнителей в заданиях ГИА
PPT
Gia 2013 modul_algebra_3_
PPT
урок в 9 классе
PPT
якобовский - введение в параллельное программирование (1)
PPTX
программы на языке с
PDF
Основы комбинаторики II. Разбор задач
PDF
1882 1 устный счет. сборник упражн. 2кл. в 2ч. ч.1.-самсонова л.ю._2016 -48с
PPT
обыкновенные дроби !!!!!
PPT
обыкновенные дроби !!!!!
wqdw
задания части С олейник
задания с олейник
Dlya ustnogo scheta
1827 огэ-2016. математика. трен. задания мирошин в.в-2015 -96с
паскаль
Цикл For
Программирование циклических алгоритмов
характеристика основных числовых множеств
Презентация на тему: Обзор возможных Исполнителей в заданиях ГИА
Gia 2013 modul_algebra_3_
урок в 9 классе
якобовский - введение в параллельное программирование (1)
программы на языке с
Основы комбинаторики II. Разбор задач
1882 1 устный счет. сборник упражн. 2кл. в 2ч. ч.1.-самсонова л.ю._2016 -48с
обыкновенные дроби !!!!!
обыкновенные дроби !!!!!

сборник-задач-Pascal

  • 1. Сборник задач. PASCAL Язык программирования: PASCAL Сергей Митрофанов E-mail: infostar@mail.ru http://www.Best-Listing.ru/ В сборнике 196 задач Гимназия "Лаборатория Салахова" Сургут 1 декабря 2013 года
  • 2. Содержание 1 Ввод и Вывод [io_8] 3 2 Условный оператор [if_14] 5 3 Оператор выбора (case) [c_4] 7 4 Циклы [ts_15] 8 5 Графика [gr_9] 10 6 Процедуры и функции [pf_11] 11 7 Целочисленная арифметика [tsa_20] 13 8 Строки [str_22] 15 9 Одномерные массивы [om_8] 19 10 Двумерные массивы [dm_21] 20 11 Вычислительная математика [vm_1] 23 12 Сортировка [s_4] 24 13 Рекурсия [rec_8] 25 14 Записи [z_5] 26 15 Множества [mn_14] 27 16 Биты, байты [bit_5] 29 17 Логика [log_3] 30 18 Текстовые файлы [txt_2] 31 19 Типизированные файлы [tf_7] 32 20 Динамическая память [dp_5] 33 21 ЕГЭ по информатике [ege_1] 34 22 Олимпиадные задачи [o_9] 35 2
  • 3. 1 Ввод и Вывод [io_8] io_1. Написать программу, которая со мною поздоровается. Пусть она спросит меня мое имя и сколько мне лет. И если я отвечу, что ме- ня зовут, например, Алеша и мне 13 лет, то пусть поприветствует меня следующим образом: "Привет, Алеша!", а потом напечата- ет фразу "Теперь я знаю, что тебе 13 лет.". io_2. Даны два действительных числа a и b. Получить их сумму, раз- ность и произведение. Написать программу так, чтобы результат выводился полным ответом (например, 4 * 5 = 20, если были введены числа 4 и 5). io_3. Найти значение выражения: (𝑎 + (𝑑 − 12) · 3) · (𝑐 − 5 · 𝑘), где значения переменных a, d, c и k вводятся с клавиатуры. Если, например, были введены числа 1, 1, 1, 1, то на рабочий экран программы напечатать ответ следующим образом: (1 + (1 − 12) * 3) * (1 − 5 * 1) = 128. io_4. Составить программу, вычисляющую расстояние 𝐿 между дву- мя точками на плоскости, заданных своими координатами. Если даны 𝐴(𝑥1, 𝑦1) и 𝐵(𝑥2, 𝑦2), то 𝐿 = √︀ (𝑥1 − 𝑥2)2 + (𝑦1 − 𝑦2)2. io_5. Написать программу, которая вычисляет площадь треугольника по формуле Герона: 𝑆 = √︀ 𝑝(𝑝 − 𝑎)(𝑝 − 𝑏)(𝑝 − 𝑐), где 𝑎, 𝑏, 𝑐 – стороны треугольника, а 𝑝 – его полупериметр. io_6. Поменять местами значения переменных Х и Y с использованием промежуточной переменной. io_6v2. Поменять местами значения переменных x и y без использования промежуточной переменной. 3
  • 4. io_7. Четыре человека пообедали в ресторане. Официант подал им счет на 𝑥 рублей каждому. Они решают оставить официанту чае- вые в размере 15% от счета. Составьте программу, которая вы- ведет на экран сумму чаевых, которую получил официант. io_8. Привести примеры, когда в Паскале не выполняются равенства y = y, y + y = 2 * y, b and b = b. 4
  • 5. 2 Условный оператор [if_14] if_1. Определить h – полное количество часов и m – полное коли- чество минут, прошедших от начала суток до того момента (в первой половине дня), когда часовая стрелка повернулась на f градусов (0 𝑓 360), где f – вещественное число. if_2. Даны действительные числа x, y. Получить большее и меньшее из двух. if_3. Составьте программу, которая из трех введенных с клавиатуры чисел возводит в квадрат положительные и четные, а остальные оставляет без изменения. if_4. Даны три действительных числа. Выбрать из них те, которые принадлежат интервалу (1; 3) if_5. Напишите программу, которая анализирует человека по возрасту и относит к одной из четырех групп: дошкольник, ученик, работ- ник, пенсионер. if_6. Найти минимум из трех чисел несколькими способами. if_7. Даны три действительных числа а, b, c. Получить максимальное из трех. if_7v2. Даны три действительных числа а, b, c. Получить максимальное из трех. [Решение с 3-мя if-then] if_7v3. Даны три действительных числа а, b, c. Получить максимальное из трех. [Алгоритм с 1-м if-then-else] if_7v4. Даны три действительных числа а, b, c, Получить максимальное из трех. [1 оператор if-then-else] if_8. Найти минимум из четырех целых чисел несколькими способа- ми. if_9. С помощью одного if найти максимальное из четырех чисел. if_10. Написать прграмму, которая для заданных трех чисел A, B, C проверяет, упорядочены ли они (A < B < C). 5
  • 6. if_11. Для трех чисел A, B и C найти произведение двух наибольших, пользуясь формулой 𝐴𝐵𝐶 𝑚𝑖𝑛(𝐴, 𝐵, 𝐶) . if_12. Составьте программу, реализирущую эпизод применения компьютера в книжном магазине. Компьютер запрашивает сто- имость книг, сумму денег внесенную покупателем; если сдачи не требуется, печатает на экране "спасибо"; если денег внесено больше, то печатается "возьмите сдачу" и указывает сумму сда- чи; если денег недостаточно, то печатает об этом сообщение и указывает размер недостающей суммы. if_13. Написать программу расположения чисел n1, n2, n3 в возраста- ющем порядке. if_13v2. Написать программу расположения чисел n1, n2, n3 в возраста- ющем порядке. if_14. Даны действительные числа a, b, c. Вычислите корни уравнения 𝑎𝑥2 + 𝑏𝑥 + 𝑐 = 0. 6
  • 7. 3 Оператор выбора (case) [c_4] c_1. Написать программу, позволяющую по номеру дня недели - це- лому числу от 1 до 7 выдавать в качестве результата количество уроков в классе в соответствующий день. c_2. Написать программу, которая по заданной букве русского алфа- вита определяет, гласная ли это буква. c_3. Написать программу нахождения числа дней в месяце, если да- ны: номер месяца n, целое число a, равное 1 для високосного года и равное 0 в противном случае. c_4. Составьте программу, которая по введенному вами k - числу гри- бов согласовывает фразу "Мы нашли в лесу k грибов", причем согласовывает окончание слова "гриб" с числом k. (Количество грибов может быть любым числом: 1, 3, 34, 127 и т.д. Окончание фразы определяется значением последних цифр). 7
  • 8. 4 Циклы [ts_15] ts_1. Написать программу вычисления суммы всех двузначных чисел. ts_2. Составить программу вычисления куба суммы всех четных чисел от 2 до 100. ts_3. Определите номерной знак автомашины нарушившей правила движения, если по показателям свидетелей номер записывает- ся тремя цифрами, кратен 2, 5 и 7, а сумма его цифр равна 12. ts_4. Из чисел от 10 до 99 вывести те, сумма цифр которых равна n, где 0 < 𝑛 18. ts_5. Трехзначное десятичное число оканчивается цифрой 3. Если эту цифру переместить на первое слева место в числе, т.е. с нее будет начинаться запись нового числа, то это новое число будет на 1 больше утроенного исходного числа. Найти исходное число. ts_6. Ввести натуральное число N. Выдать все тройки натуральных чисел X, Y, Z, для которых 𝑁 = 𝑋2 + 𝑌 2 + 𝑍2 . ts_7. С помощью repeat напишите программу, которая требует у вас пароль, например 111, и если пароль правильный, то заполня- ет все строки экрана сообщением "Молодец!!!". Если после 5 попытки пароль все равно не верен, выйти из программы. ts_8. Для последовательности из N целых чисел. Найти суммы поло- жительных и отрицательных элементов. ts_9. Даны действительные числа. Вычислите их среднее арифмети- ческое. ts_10. Дано целое N > 0 и последовательность из N вещественных чисел, среди которых есть хотя бы одно отрицательное число. Найти величину наибольшего из отрицательных чисел этой по- следовательности. 8
  • 9. ts_10v2. Дано целое n > 0 и последовательность из n вещественных чи- сел. Найти величину наибольшего из отрицательных чисел этой последовательности. ts_11. Имеется последовательность целых чисел. Найти сумму первых из них, произведение которых не превышает заданного числа 𝑀. ts_12. Задано целое 𝐴 > 1. Найти наименьшее целое неотрицательное k, при котором 5 𝑘 > 𝐴. ts_13. Написать программу вычисления суммы всех нечетных N чисел. ts_13v2. Написать программу вычисления суммы всех нечетных n чисел. Записать варианты программы с разными видами циклов while, repeat, for-to, for-downto. ts_14. Найдите все двузначные числа, сумма цифр которых не меняется при умножении числа на 2, 3, 4, 5, 6, 7. ts_15. Вычислить при 𝑥 = 𝑠𝑖𝑛(5 𝑜 ), 𝑠𝑖𝑛(10 𝑜 ), . . . , 𝑠𝑖𝑛(60 𝑜 ) и вывести в виде таблицы с заголовками: – значения функции 𝑎𝑟𝑐𝑠𝑖𝑛(𝑥); – приближенные значения этой функции по формуле 𝑎𝑟𝑐𝑠𝑖𝑛(𝑥) ≈ 𝑥 + 𝑥3 2 · 3 − 3 · 𝑥5 2 · 4 · 5 + 3 · 5 · 𝑥7 2 · 4 · 6 · 7 − 3 · 5 · 7 · 𝑥9 2 · 4 · 6 · 8 · 9 используя скобочные формы и/или дополнительные перемен- ные; – приближенные значения этой функции по этой же формуле, не используя скобочные формы и дополнительные переменные; – абсолютную и относительную ошибки приближенных значе- ний. Для организации цикла использовать оператор for–to. При вы- числениях приближенных значений использовать только опера- ции сложения, вычитания, умножения, деления и стандартную функцию 𝑆𝑞𝑟(𝑥). 9
  • 10. 5 Графика [gr_9] gr_1. Построить и закрасить круг радиуса 50 пиксель, центр которого совмещен с центром экрана. gr_2. Нарисовать разноцветный круг. gr_3. Нарисовать нотный стан и ноты. gr_4. Нарисовать сетку-муар из пересекающихся прямоугольников. gr_5. Построить оси координат. Начало координат поместить в центр экрана. gr_6. Изобразить шахматную доску. gr_7. Нарисовать "снежную бабу" и клавишами "стрелка вверх", "стрелка вниз", "стрелка налево", "стрелка направо" управлять движением этой фигуры по экрану. gr_8. Изобразить шахматную доску и закрасить ее диагонали разными цветами. gr_9. Изобразить шахматную доску и закрасить клеточки ее диагона- лей разными цветами. 10
  • 11. 6 Процедуры и функции [pf_11] pf_1. Напишите программу, которая выбирает максимальное из четы- рех заданных чисел, используя функцию, которая выбирает мак- симальное из двух чисел. pf_2. Напишите процедуру, которая будет возвращать среднее ариф- метическое двух чисел. pf_3. Нарисовать на экране стрелку: – –> и клавишами "стрелка вверх", "стрелка вниз", "стрелка налево", "стрелка направо" управлять движением по экрану этой нарисо- ванной стрелки. pf_4. Вывести на экран таблицу умножения от 2 до 9. pf_5. Даны отрезки A, B, C и D. Для каждой тройки этих отрезков, из которых можно построить треугольник, напечатать площадь данного треугольника (определить процедуру, печатающую пло- щадь треугольника со сторонами x, y и z, если такой треугольник существует). pf_5v2. Даны отрезки А, В, С и D. Для каждой тройки этих отрезков, из которых можно построить треугольник, напечатать площадь данного треугольника (определить процедуру печплощ (x, y, z), печатающую площадь треугольника со сторонами x, y, z, если такой треугольник существует). pf_6. Демонстрация факта, что применять var в параметрах функции можно! pf_7. Type ряд = file of 1..MaxInt; Описать процедуру fib (f, n), записывающую в ряд f все числа Фибоначчи (1, 1, 2, 3, 5, ...), не превосходящие целого положи- тельнорго числа N. pf_8. Составить программу вычисления суммы трехзначных чисел, в десятичной записи которых нет четной цифры. Использовать функцию обнаружения таких чисел. pf_9. Даны два натуральных числа. Определить, является ли первое перевертышем второго. 11
  • 12. pf_10. Составьте программу подсчета числа всех натуральных чисел, меньших M, квадрат суммы цифр которых равен X. pf_11. Составить программу вычисления суммы трехзначных чисел, в десятичной записи которых нет четной цифры. 12
  • 13. 7 Целочисленная арифметика [tsa_20] tsa_1. Найти количество четных цифр целого положительного числа. tsa_2. Напечатать цифры числа в прямом порядке. tsa_3. Найти самую большую цифру целого числа. tsa_4. Вводится число N. Определить максимальную четную цифру этого числа. tsa_4v2. Вводится число N. Определить максимальную четную цифру этого числа. tsa_5. Дано число. Напечатать это же число "задом наперед", как чис- ло. tsa_6. Поменять местами первую и последнюю цифру натурального числа. tsa_7. Вычеркнуть максимальную и минимальную цифры из натураль- ного числа. tsa_8. Дано натуральное число. Определить, является ли это число пе- ревертышем. tsa_9. Даны два натуральных числа. Определить, ялвяется ли первое перевертышем второго. tsa_10. Из цифр числа составить наибольшее число. Ответ получить не как набор последовательных цифр, а как настоящее число. tsa_11. Три алгоритма о том, чтобы узнать, является ли число простым. tsa_12. Дано простое число p. Найти и вывести на экран следующее за ним простое число. tsa_13. Составить программу для проверки, можно ли заданное нату- ральное число N представить в ввиде квадрата простого числа. 13
  • 14. tsa_14. Напечатать все простые числа от 1 до 1 000 000. В коде должна быть функция, определяющая является ли число простым. tsa_15. Разложить число на простые множители. tsa_16. Узнать, является ли данное число палиндромом. tsa_16v2. Написать программу определения палиндрома. tsa_16v3. Написать программу определения палиндрома. tsa_17. Разработать программу поиска и печати всех пар дружественных чисел, меньших 10000. tsa_18. Разработать программу поиска и печати всех "близнецов", при- надлежащих заданному диапазону [N; M]. tsa_18v2. Разработать программу поиска и печати всех "близнецов", при- надлежаших заданному диапазону [N; M]. tsa_19. Вывести на печать все совершенные числа в диапазоне от L до R. tsa_20. Найти все простые числа от 1 до N, используя алгоритм "Решето Эратосфена". 14
  • 15. 8 Строки [str_22] str_1. Найти сколько раз в предложении встречается символ, введеный с клавиатуры. str_2. В заданной последовательности слов найти все слова, начинаю- щиеся c заданной приставки. str_3. Дан произвольный текст. Подсчитать общее число вхождений символов "+", "-", "*" в тексте. str_4. Задано число, записанное двумя римскими цифрами. Вывести его значение в общепринятой арабской системе счисления. str_5. Составьте программу, запрашивающую символьную строку и вы- водящую ее же, но в обратном порядке. Например, "Коза" - "азоК". str_5v2. Составьте программу, запрашивающую символьную строку и вы- водящую ее же, но в обратном порядке. Например, "Коза" - "азоК". str_6. Удвоить каждую букву в заданном тексте. str_6v2. Удвоить каждую букву в заданном тексте. str_6v3. Удвоить каждую букву в данном тексте. str_7. Из данной строки получить новую строку, удалив все звездочки и повторив каждый символ, отличный от звездочки. str_7v2. Из данной строки получить новую строку, удалив все звездочки и повторив каждый символ, отличный от звездочки. Решить с помощью процедур Delete и Insert. Delete (T, i, count); T - из какого текста удаляем, i - с какой позиции, count - сколько удаляем символов. Insert (R, T, i); R - какой вставляем текст, T - в какой текст (данный текст), i - с какой позиции текста Т. 15
  • 16. str_7v3. Из заданной строки получть новую строку, удалив все звездочки и повторив каждый символ, отличный от звездочки. Напишите код, используя функции и процедуры Pos, Delete и Insert. str_8. Составьте программу, которая каждую встречную в слове букву "б" заменяла сочетанием букв "ку". str_8v2. Составьте программу, которая каждую встречную в слове букву "б" заменяла сочетанием букв "ку". str_9. Из слова удалить среднюю букву, если длина строки нечетна, иначе - удалить две средние буквы. str_10. Дан текст, среди которого есть двоеточие. Получить все симво- лы, расположенные между первым и вторым двоеточием. Если второго двоеточия нет, то получить все символы, расположенные после единственного двоеточия. str_10v2. Дан текст, среди которого есть двоеточие. Получить все симво- лы, расположенные между первым и вторым двоеточием. Если второго двоеточия нет, то получить все символы, расположенные после единственного двоеточия. str_10v3. Дан текст, среди которого есть двоеточие. Получить все симво- лы, расположенные между первым и вторым двоеточием. Если второго двоеточия нет, то получить все символы, расположенные после единственного двоеточия. str_11. Заданы две строки str1 и str2, каждая из которых содержит n литер. Подсчитать число цифр в str1 и количество строчных ла- тинских букв в str2. str_12. Написать нерекурсивную программу, которая находит все пере- становки из 6-ти символов. str_13. Дано предложение. Напечатать все слова, отличные от слова "hello". str_13v2. Дана последовательность слов. Напечатать все слова, отличные от "hello". str_13v3. Дана последовательность слов. Напечатать все слова, отличные от "hello". 16
  • 17. str_14. Написать программу, которая подсчитывает количество слов во введенной строке, первый и последний символ которых равны. str_15. Предложение состоит из слов, между словами один пробел, а после последнего слова точка. Найти длину самого длинного слова. str_16. Определить количество слов в строке символов между словами максимальной и минимальной длины. str_17. Из заданного предложения выбрать и напечатать только те сим- волы, которые встречаются в нем только 1 раз. (в том порядке, в котором они встречаются в тексте) str_18. Выясните сколько раз в предложенном тексте встречается каж- дое двухбуквенное слово. str_18v2. Выясните, сколько раз в предложенном тексте встречается каждое двухбуквенное слово. str_19. В заданном предложении удалите каждое второе слово, а остав- шиеся переверните. (Например, из текста "А роза упала на лапу Азора" должен получится текст "А алапу упал"). str_20. Дана последовательность слов. Напечатать все слова последо- вательности, которые встречаются в ней по одному разу. str_20v2. Дана последовательность слов. Напечатать все слова последо- вательности, которые встречаются в ней по одному разу. str_21. Дана последовательность слов. Напечатать все слова в алфавит- ном порядке. str_21v2. Дано предложение, между словами которого может быть любое число пробелов. Напечать слова данного предложения в алфа- витном порядке. Массивы не использовать. str_22. Алгоритм Рабина-Карпа Данo: T - текст из n символов. T [i] - его i-тый символ. S - слово-строка-образец, которое ищем в T, его длина m S [i] - i-тый символ слова-строки-образца. 17
  • 18. Задача. Узнать, входит ли S в T, и если входит, то начиная с какого символа текста T. 18
  • 19. 9 Одномерные массивы [om_8] om_1. Задан одномерный массив А. Требуется переписать элементы одномерного массива А кратные 5 в массив В, а если такие от- сутствуют, то выдать соответствующее сообщение. om_2. Дан одномерный массив, cостоящий только из нулей и единиц. Проверьте строго ли они чередуются. om_3. Дан одномерный массив натуральных чисел, определить есть ли в нем K подряд идущих одинаковых чисел (𝐾 < 100). om_4. Дан одномерный массив из целых чисел. Перевернуть его. om_5. Дан массив целых чисел, заполненный случайными числами. Удалить все элементы, начиная с k1-го по k2-ой (k1 и k2 вводить с клавиатуры). Сделать проверку корректности ввода значений k1 и k2 (𝑘1 𝑘2), если ввод некорректный, то вывести сообщение об ошибке и закончить работу. om_6. Даны два одномерных массива. Найти наименьший среди тех элементов первого массива, которые не входят во второй. om_7. Разработать программу поиска и печати всех пар дружественных чисел, меньших 10 000. om_8. Дан целочисленный массив А. Подсчитать, сколько раз встре- чается в этом массиве максимальное по величине число. Найти это максимальное за один проход по массиву. 19
  • 20. 10 Двумерные массивы [dm_21] dm_1. Заполнить двумерный массив двумя способами: 1) с клавиатуры; 2) случайными числами от -4 до 5, используя генератор слу- чайных чисел. dm_2. Заполнить двумерный массив при помощи счетчика случайных чисел и найти сумму элементов массива. dm_3. Заполнить двумерный массив с клавиатуры, найти произведение элементов по главной и побочной диагонали. dm_4. Найти сумму элементов двумерного массива, выше побочной диагонали. dm_5. Заполнить двумерный массив по следующему правилу: элемен- ты главной диагонал равны 1, ниже главной диагонали - 0, а выше - сумме индексов. dm_6. Составить программу, записывающую все положителные элемен- ты двумерного массива А в одномерный массив В, а отрицатель- ные – в одномерный массив С. dm_7. Из предложенного одномерного массива размерностью S сфор- мируйте двумерный массив так, чтобы первая строка новой таб- лицы содержала четные по номеру элементы исходного массива, а вторая – нечетные. Предусмотреть случай нечетности S. dm_8. Дана матрица F (10, 8). Ее элементами являются целые случай- ные числа из интервала [0..255]. Транспонировать эту матрицу. Вывести на печать элементы главной диагонали и диагонали, расположенной под главной. Найти сумму всех элементов, крат- ных 10 и находящихся над главной диагональю. dm_9. Дан двумерный массив. Составьте программу определения зна- чения наибольшего элемента этого массива. dm_10. Дан двумерный массив. Составьте программу определения ин- дексов минимального элемента этого массива. dm_11. В двумерном массиве X все числа различны. В каждой стро- ке выбирается минимальный элемент, затем среди этих чисел 20
  • 21. выбирается максимальное. Напечатать номер строки массива, в которой расположено найденное число. dm_12. Написать функцию, выясняющую, есть ли в двумерном массиве одинаковые элементы. Вспомогательные массивы не за- водить. dm_13. Дан двумерный массив. Найти номера строк, элементы в каждой из которых одинаковы. dm_14. Дан двумерный массив. Поменять значения элементов побочной диагонали, с соответствующими значениями элементов главной диагонали (или, по другому говоря, поменять местами побочную и главную диагонали). dm_15. Дан двумерный массив. Поменять местами два его столбца, если известны их номера. dm_16. Дан двумерный массив. Все элементы, расположенные под по- бочной диагональю поменять на соответствующие им элементы, расположенные над побочной диагональю. dm_17. В двумерном массиве удалить строчку с номером 𝑁. dm_18. Дана матрица A (n, k) (n <= 20, k <= 10). Сформировать мат- рицу B (n, max) следующим образом: каждая строка матрицы A переписывается в соответствующую (в такую же по номеру) строку матрицы B. Причем переписываются все первые неотри- цательные элементы строки матрицы A, пока в ней не встретит- ся первое отрицательное число. Число столбцов в матрице B – переменная max – это наибольшее значение числа неотрицатель- ных элементов в строках матрицы A, предшествующих первому отрицательному числу строки. Вывести на печать сформирован- ную матрицу B. dm_19. Заполнение квадратной четной матрицы по спирали, начиная с центра. dm_20. Удалить все строки и столбцы, на пересечении которых стоят отрицательные элементы. dm_20v2. Составить программу, удаляющую все строки и столбцы, на пе- ресечении которых стоят отрицательные элементы. 21
  • 22. dm_21. Рассчитать ранг введенной матрицы. Автоматизировать ввод матрицы. Создать возможность распечатки ранга текущей мат- рицы или всех расчетов матриц, производимых в данной про- грамме. 22
  • 23. 11 Вычислительная математика [vm_1] vm_1. Дано уравнение 3 · 𝑥4 − 2 · sin(−𝑥2 ) + 3𝑥 − 1 = 0. Найти корни этого уравнения с точностью 𝐸𝑃 𝑆 = 1𝐸 − 3 в интер- вале [−10; 10]. 23
  • 24. 12 Сортировка [s_4] s_1. Произвести сортировку одномерного массива методом "пузырь- ка". s_1v2. Отсортировать массив методом "пузырька" или обменом. Алго- ритм пузырьковой сортировки. s_2. Из двух одномерных массивов (K и N) сформируйте массив раз- мером K + N, упорядоченый. s_3. В заданном двумерном массиве найдите сумму элементов в каж- дой строке. Сформируйте одномерный массив, содержащий по- лученные суммы, расположенные по возрастанию. s_4. Составьте программу упорядочения по возрастанию элементов каждой строки двумерного массива. s_4v2. Составьте программу упорядочения по возрастанию элементов каждой строки двумерного массива. Для сортировки используй- те алгоритм quicksort. 24
  • 25. 13 Рекурсия [rec_8] rec_1. Найти факториал числа. rec_2. Вычислить i-е число Фибоначчи. Известно, что каждое последующее число Фибоначчи равняется сумме двух предыду- щих. rec_3. Найти степень числа 𝐴 𝑛 . rec_4. Составьте программу вычисления суммы: 𝑆 = 𝑥1 1! + 𝑥2 2! + 𝑥3 3! + ... + 𝑥 𝑛 𝑛! rec_5. Напечатать цифры натурального числа в прямом порядке с по- мощью рекурсии. rec_5v2. Дано десятичное число N. Составить рекурсивную процедуру, пе- чатающие все цифры числа в "прямом" порядке, в том порядке, в каком они идут в самой записи числа N. rec_6. Напишите рекурсивную процедуру, которая выводит переданное ей натуральное число в двоичной системе счисления, не исполь- зуя при этом никаких переменных. rec_7. Найти все перестановки из ’ABCD’. rec_8. Поиск троек Дано N приборов, их число не превосходит 2147483647. Прибо- ры делятся на две группы. В первую группу попадают приборы с нечетными номерами, а во вторую – с четными. Если в группе остается только три прибора, то эта тройка приборов упаковыва- ется. А если в группе приборов больше чем 3, то процесс деления на группы повторяется. Узнать, сколько троек будет упаковано в процессе такого деления. 25
  • 26. 14 Записи [z_5] z_1. Демонстрация работы с записью. z_2. Багаж пассажира характеризуется количеством вещей и общим весом вещей. Дан массив, содержащий сведения о багаже каж- дого пассажира, которые представляют из себя записи с двумя полями: одно поле целого типа (количество вещей) и другое – дейстительное (вес в килограммах). Найти багаж, средний вес одной вещи в котором минимален. z_3. Создать список гимназистов с указанием возраста. Отсортиро- вать его сначала по фамилии, затем по возрасту. z_3v2. Распечатать список студентов, упорядоченный по алфавиту. Сор- тировку "пузырьком" написать с помощью цикла while. z_4. В деканате на карточке студента отмечается его успеваемость. Узнать, сколько имеется студентов отличников, хорошистов и с одной тройкой по 4 предметам. z_5. Распечатать список студентов, упорядоченный по их весу. Ис- пользовать сортировку выбором. 26
  • 27. 15 Множества [mn_14] mn_1. Составьте программу, которая по введенному вами k – числу грибов печатает фразу "Мы нашли в лесу k грибов", причем согласовывает окончание слова "гриб" с числом k. (Окончание фразы определяется значением последних цифр). mn_2. Дана непустая последовательность символов. Требуется построить и напечатать множество, элементами которого явля- ются встречающиеся в последовательности знаки препинания. mn_3. Дана непустая последовательность символов. Требуется построить и напечатать множество, элементами которого явля- ются встречающиеся в последовательности буквы от ’А’ до ’Z’ и цифры от ’0’ до ’5’. mn_4. Дана непустая последовательность символов. Требуется построить и напечатать множество, элементами которого явля- ются встречающиеся в последовательности цифры и знаки арифметических операций. mn_5. Опишите множества 𝑀1 (1, 2) и 𝑀2 (5, 6). Получите результиру- ющее множество 𝑀3 = 𝑀1 + 𝑀2. Определите, имеется ли в 𝑀3 элемент 7. mn_6. Опишите множества 𝑀1 (1, 2, 3, 4) и 𝑀2 (3, 4, 1). Получите резуль- тирующее множество 𝑀3 = 𝑀1 − 𝑀2. Определите, имеется ли в 𝑀3 элемент 2. mn_7. Опишите множества 𝑀1 (1, 2, 3) и 𝑀2 (1, 4, 2, 5). Получите резуль- тирующее множество 𝑀3 = 𝑀1 * 𝑀2. Определите, имеется ли в 𝑀3 элемент 2. mn_8. Пусть даны 𝑀1 (1, 2, 3, 4) и 𝑀2 (5, 6). Получите результирующее множество 𝑀3 = 𝑀1 + 𝑀2. Определите, имеются ли в 𝑀3 эле- менты 1 и 2. mn_9. Опишите множества 𝑅 и 𝐿, содержащие русские и латинские бук- вы. Последовательно вводите русские и латинские буквы и выво- дите сообщения о том, какая эта буква: русская или латинская. Ввод букв прекращается при нажатии на клавишу ’!’. mn_10. Составить программу печати в возрастающем порядке всех цифр, входящих в данное десятичное число, состоящее из 10 27
  • 28. любых цифр. mn_11. Составить программу подсчета общего количества цифр и зна- ков "+", "–", "*" в строке 𝑠, введенной с клавиатуры. mn_12. Составить программу, подсчитывающую количество гласных и согласных букв в заданном тексте и определяющую, каких букв больше, учесть, что в строке могут быть и другие символы, кро- ме букв. mn_13. muha + muha = slon Решить ребус с помощью множеств. mn_14. Найти все простые числа от 2 до 255 с помощью решета Эрато- сфена. 28
  • 29. 16 Биты, байты [bit_5] bit_1. Дано натуральное N. При возврате из процедуры все биты этого N должны быть представлены в обратном порядке. Найти деся- тичное число, соответствующее этому порядку. Например: 1110 → 10112 → 11012 → 1310 bit_1v2. Дано натуральное N. При возврате из процедуры все биты этого N должны быть представлены в обратном порядке. Найти де- сятичное число, соответствующее этому порядку. (Тип данных string не использовать. Примените логическую операцию сдвига влево – SHL) Например: 1110 → 10112 → 11012 → 1310 bit_2. Напечать биты байта. bit_3. Определить количество бит в двоичном представлении данного натурального числа. bit_4. Дано натуральное N. Вычислить 2 𝑁 . Использовать операцию shl. bit_5. Дано десятичное натуральное число N. Вывести его в двоичной системе, отделяя каждые 4 бита справа запятой. (Используйте рекурсию) Например: 4810 → 11, 00002 29
  • 30. 17 Логика [log_3] log_1. Три грибника, рассматривая найденный гриб, высказали свои предположения. Первый грибник сказал: "Не верно, что, если это не опенок, то этот гриб съедобный". Второй грибник был также осторожен и сказал: "Не верно, что этот гриб или ядо- витый или опенок или не сыроежка". Третий грибник заявил: "Этот гриб не ядовитый, и я отрицаю, что, если это сыроежка, что на съедобна". В итоге оказалось, что все три грибника были правы и их суждения оказались истинными. Какой гриб нашли грибники? log_2. Алеша, Боря и Гриша нашли в земле сосуд. Рассматривая уди- вительную находку, каждый высказал по два предположения: Алеша. Это сосуд греческий и изготовлен в V веке. Боря. Это сосуд финикийский и изготовлен в III веке. Гриша. Это сосуд не греческий и изготовлен в IV веке. Учитель истории сказал ребятам, что каждый из них прав только в одном из двух предположений. Где и в каком веке изготовлен сосуд? log_3. В школьном первенстве по настольному теннису в четверку луч- ших вошли девушки: Наташа, Маша, Люда и Рита. Самые горя- чие болельщики высказали свои предположения о распределе- нии мест в дальнейших состязаниях. Один считает, что первой будет Наташа, а Маша будет второй. Другой болельщик на второе место прочит Люду, а Рита, по его мнению, займет четвертое место. Третий любитель тенниса с ними не согласился. Он считает, что Рита займет третье место, а Наташа будет второй. Когда соревнования закончились, оказалось, что каждый из бо- лельщиков был прав только в одном из своих прогнозов. Какое место на чемпионате заняли Наташа, Маша, Люда, Рита? 30
  • 31. 18 Текстовые файлы [txt_2] txt_1. Дан файл F, компонентами которого являются целые числа. За- писать в файл G все четные числа файла F, а в файл H - все нечетные. Порядок следования чисел сохранить. txt_2. Задается имя файла и целое число N. Распечатать последние N строк. 31
  • 32. 19 Типизированные файлы [tf_7] tf_1. Дан файл F, компонентами которого являются целые числа. За- писать в файл G все четные числа файла F, а в файл H - все нечетные. Порядок следования чисел сохранить. tf_2. Дан файл F, компоненты которого являются целыми числами. Записать в файл G все элементы файла F в обратном порядке. tf_3. Имеется файл из целых чисел. Составьте программу упорядоче- ния файла по возрастанию. Вспомогательного массива не заводить. Для решения задачи применить типизированный файл. tf_4. Пусть 𝑡𝑦𝑝𝑒 ряд = 𝑓 𝑖𝑙𝑒 𝑜𝑓 1..𝑀 𝑎𝑥𝐼𝑛𝑡; Описать процедуру 𝑓 𝑖𝑏(𝑓, 𝑛), записывающую в ряд 𝑓 все числа Фибоначчи (1, 1, 2, 3, 5, ...), не превосходящие целого положитель- норго числа 𝑛. tf_5. Отсортировать файл по возрастанию методом выбора. tf_6. Используя структуру с полями пол, имя, возраст, распечатать количество девушек по имени "Елена" и имена тех, кому 19 лет (данные находятся в файле). tf_7. Пусть простейшее описание книги будет состоять из ее названия, автора, цены и года издания. В процессе ввода данных описание книг записывать в типизиро- ванный файл. Ввод описания книг прекращать при значении названия книги равном ’@’. Напечатать список описаний книг по определенному году изда- ния, указывая логический номер записи в файле. В полученном типизированном файле поменять местами первую и последнюю запись. Затем проделать следующие операции с типизированным фай- лом: – записать какую-либо запись в конец файла; – удалить запись из файла, зная ее логический номер; – вставить новую запись на опредленный логический номер. 32
  • 33. 20 Динамическая память [dp_5] dp_1. Завести динамические переменные и уничтожить их по оконча- нии работы программы. dp_2. Завeсти в Heap (куче) два динамических массива. Слить их в один динамический массив. Распечатать результат. Перед тем, как закончить работу программы, вернуть занятую память об- ратно OS. dp_3. Определить матрицу A (200 * 2, 200), такую что: в 1 и 2 строке по 200 чисел, в 3-ей и 4-ой строке по 199 чисел, в 5-ой и 6-ой строке – по 198 чисел и так далее. Элементы матрицы заполня- ются последовательными натуральными числами. Первое число первой строки – 1. Первое число второй строки – 201, третьей – 401 и так далее. Памяти выделяется ровно столько, сколько нужно. С помощью MemAvail пронаблюдать за расходом памя- ти. После Begin, после выделения памяти, после ее освобожде- ния. По номеру строки и столбца, узнать какой там находится элемент-число. Памяти использовать как можно меньше. dp_4. Организовать новую структуру данных - односвязный список. dp_5. Из текстового файла (не менее 900 Kb) прочитать 20 000 слов, записать их в двумерный массива T (100, 200). Отсортировать массив стрингов T методом пузырька. 33
  • 34. 21 ЕГЭ по информатике [ege_1] ege_1. В данном массиве найти второе по величине значение (второе максимальное или второе минимальное) за однократный про- смотр массива. 34
  • 35. 22 Олимпиадные задачи [o_9] o_1. Требуется сложить два целых числа А и В. Время: 1 с. Память: 16 Мб Сложность: 2% Входные данные: В единственной строке input.txt записано 2 числа через пробел, не превышающих 109 . Выходные данные: В единственную строку выходного файла output.txt нужно выве- сти одно целое число – сумму чисел А и В. Пример: input.txt output.txt 2 3 5 o_2. Требуется посчитать сумму целых чисел от 1 до N. Время: 1 с. Память: 16 Мб Сложность: 19% Входные данные: В единственной строке input.txt записано единственное целое число N, не превышающее по абсолютной величине 104 Выходные данные: В единственную строку выходного файла output.txt нужно выве- сти одно целое число – сумму чисел от 1 до N. Пример: input.txt output.txt 5 15 o_3. Напечатать введенное число прописью. o_4. В написанном выражении ((((1?2)?3)?4)?5)?6) вместо каждого зна- ка ? вставить знак одного из четырех арифметических действий: +, −, *, / так, чтобы результат вычислений равнялся 35 (при де- лении дробная часть отбрасывается). Достаточно найти одно ре- шение. o_5. Имеется пять целых чисел. Среди них: - если одинаковы 5, то вывести "Impossible", иначе - если одинаковы 4, то вывести "Four of a Kind", иначе - если одинаковы 3 и 2, вывести "Full House", иначе - если есть 5 последовательных, вывести "Straight", иначе - если одинаковы 3, то вывести "Three of a Kind", иначе - если 35
  • 36. одинаковы 2 и 2, то вывести "Two Pairs", иначе - если одинаковы 2, вывести "One Pair", иначе - вывести "Nothing". Примечание. 5 чисел берутся из интервалла от 1 до 13, разде- ленных пробелом. o_6. Пятью пять – двадцать пять! (Время: 1 сек. Память: 16 Мб. Сложность: 8 %) Вася и Петя учатся в школе в одном классе. Недавно Петя по- ведал Васе о хитром способе возведения в квадрат натураль- ных чисел, оканчивающихся на цифру 5. Теперь Вася может с легкостью возводить в квадрат двузначные (и даже некоторые трехзначные) числа, оканчивающиеся на 5. Способ заключается в следующем: для возведения в квадрат числа, оканчивающе- гося на 5 достаточно умножить число, полученное из исходно- го вычеркиванием последней пятерки на следующее по порядку число, затем остается лишь приписать "25" к получившемуся результату справа. Например, для того, чтобы возвести число 125 в квадрат достаточно 12 умножить на 13 и приписать 25, т.е. приписывая к числу 12 · 13 = 156 число 25, получаем результат 15625, т.е. 1252 = 15625. Напишите программу, возводящую чис- ло, оканчивающееся на 5, в квадрат для того, чтобы Вася смог проверить свои навыки. Входные данные В единственной строке входного файла INPUT.TXT записано од- но натуральное число А, оканчивающееся на цифру 5, не превы- шающее 4 · 105 . Выходные данные В выходной файл OUTPUT.TXT выведите одно натуральное число – 𝐴2 без лидирующих нулей. Примеры N INPUT.TXT OUTPUT.TXT 1 5 25 2 75 5625 3 4255 18105025 o_6v2. Вася и Петя учатся в школе в одном классе. Недавно Петя по- ведал Васе о хитром способе возведения в квадрат натураль- ных чисел, оканчивающихся на цифру 5. Теперь Вася может с легкостью возводить в квадрат двузначные (и даже некоторые трехзначные) числа, оканчивающиеся на 5. 36
  • 37. Способ заключается в следующем: для возведения в квадрат числа, оканчивающегося на 5 достаточно умножить число, по- лученное из исходного путем вычеркивания последней пятерки на следующее за ним по порядку число, затем остается лишь приписать "25" к получившемуся результату справа. Время: 1 с. Память: 16 Мб Сложность: 8% Входные данные: В единственной строке input.txt записано единственное целое число N, не превышающее по абсолютной величине 4 · 105 . Выходные данные: В единственную строку выходного файла output.txt нужно выве- сти одно натуральное число – 𝐴2 без лидирующих нулей Пример: input.txt output.txt 5 25 75 5625 4255 18105025 o_7. Шахматы (Время: 1 сек. Память: 16 Мб. Сложность: 18 %) Совсем недавно Вася занялся программированием и решил ре- ализовать собственную программу для игры в шахматы. Но у него возникла проблема определения правильности хода конем, который делает пользователь. то есть если пользователь вво- дит значение "C7–D5", то программа должна определить это как правильный ход, если же введено "E2–E4", то ход невер- ный. Так же нужно проверить корректность записи ввода: если, например, введено "D9–N5", то программа должна определить данную запись как ошибочную. Помогите ему осуществить эту проверку. Входные данные В единственной строке входного файла INPUT.TXT записан текст хода, который указал пользователь. Пользователь не мо- жет ввести строку, длиннее 5 символов. Выходные данные В выходной файл OUTPUT.TXT нужно ввести "YES", если ука- занный ход конем верный, если же запись корректна (в смысле записи координат), но ход невозможен, то нужно вывести "NO". 37
  • 38. Если же координаты не определены или заданы некорректно, то вывести сообщение "ERROR". Примеры N INPUT.TXT OUTPUT.TXT 1 C7 – D5 YES 2 E2 – E4 NO 3 BSN ERROR o_8. Статистика. (Время: 1 сек. Память: 16 Мб. Сложность: 25 %) Вася не любит английский язык, но каждый раз старается полу- чить хотя бы четверку за четверть, чтобы оставаться ударником. В текущей четверти Вася заметил следующую закономерность: по нечетным дням месяца он получал тройки, а по четным – четверки. Так же он помнит, в какие дни он получал эти оценки. Поэтому он выписал на бумажке все эти дни для того, чтобы оценить, сколько у него троек и сколько четверок. Помогите Ва- се это сделать, расположив четные и нечетные числа в разных строчках. Вася может рассчитывать на оценку 4, если четверок не меньше, чем троек. Входные данные В первой строке входного файла INPUT.TXT записано един- ственное число N - количество элементов массива (1 𝑁 100). Вторая строка содержит N чисел, представляющих заданный массив. Каждый элемент массива – натуральное число от 1 до 31. Все элементы массива разделены пробелом. Выходные данные В первую строку выходного файла OUTPUT.TXT нужно выве- сти числа, которые соответствуют дням месяцев, в которые Ва- ся получил тройки, а во второй строке соответственно располо- ить числа месяца, в которые Вася получил четверки. В третьей строке нужно вывести "YES", если Вася может рассчитывать на четверку и "NO" в противном случае. В каждой строчке чис- ла следует выводить в том же порядке, в котором они идут во входных данных. При выводе, числа отделяются пробелом. Примеры 38
  • 39. N INPUT.TXT OUTPUT.TXT 1 5 19 31 4 16 19 31 2 4 16 2 YES 2 8 29 7 15 17 1 29 4 7 12 15 17 24 1 4 12 24 NO o_9. Олимпиадная задача (Время: 1 сек. Память: 16 Мб. Сложность: 25 %) Петя успевает по математике лучше всех в классе, поэтому учи- тель задал ему сложное домашнее задание, в котором нужно в заданном наборе целых чисел найти сумму всех положитель- ных элементов, затем найти где в заданной последовательности находятся максимальный и минимальный элемент и вычислить произведение чисел, расположенных между ними. Так же из- вестно, что минимальный и максимальный элемент встречаются в заданном множестве чисел только один раз. Поскольку задач такого рода учитель дал Пете около ста, то Петя как сильный программист смог написать программу, которая по заданному набору чисел самостоятельно находит решение. А вам слабо? Входные данные В первой строке входного файла INPUT.TXT записано един- ственное число N - количество элементов массива. Вторая стро- ка содержит N целых чисел, представляющих заданный массив. Все элементы массива разделены пробелом. Каждое из чисел во входном файле не превышает 102 по абсолютной величине. Выходные данные В первую строку выходного файла OUTPUT.TXT нужно вывести два числа: сумму всех положительных чисел и произведение чи- сел, расположенных между минимальным и максимальным эле- ментами. Значения суммы и произведения не превышают по мо- дулю 3 · 104 . Примеры 39
  • 40. N INPUT.TXT OUTPUT.TXT 1 5 17 -15 -7 5 -1 3 9 2 8 26 180 3 14 -9 4 -5 1 -12 4 3 10 36 5040 -5 1 2 3 4 5 6 7 8 -3 40