36
Сборник задач. PASCAL Язык программирования: PASCAL Сергей Митрофанов E-mail: [email protected] http://www.Best-Listing.ru/ В сборнике 192 задачи Гимназия "Лаборатория Салахова" Сургут 30 октября 2013 года

Сборник задач pascal

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Сборник задач pascal

Сборник задач. PASCAL

Язык программирования: PASCAL

Сергей МитрофановE-mail: [email protected]

http://www.Best-Listing.ru/

В сборнике 192 задачи

Гимназия "Лаборатория Салахова"Сургут

30 октября 2013 года

Page 2: Сборник задач pascal

Содержание

1 Ввод и Вывод [io_8] 3

2 Условный оператор [if_14] 5

3 Оператор выбора (case) [c_4] 7

4 Циклы [ts_15] 8

5 Графика [gr_9] 10

6 Процедуры и функции [pf_10] 11

7 Целочисленная арифметика [tsa_20] 12

8 Строки [str_21] 14

9 Одномерные массивы [om_8] 17

10 Двумерные массивы [dm_20] 18

11 Вычислительная математика [vm_1] 20

12 Сортировка [s_4] 21

13 Рекурсия [rec_8] 22

14 Записи [z_5] 23

15 Множества [mn_14] 24

16 Биты, байты [bit_5] 26

17 Логика [log_3] 27

18 Текстовые файлы [txt_2] 28

19 Типизированные файлы [tf_7] 29

20 Динамическая память [dp_5] 30

21 Олимпиадные задачи [o_9] 31

2

Page 3: Сборник задач pascal

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

Page 4: Сборник задач pascal

io_7. Четыре человека пообедали в ресторане. Официант подал имсчет на 𝑥 рублей каждому. Они решают оставить официанту чае-вые в размере 15% от счета. Составьте программу, которая вы-ведет на экран сумму чаевых, которую получил официант.

io_8. Привести примеры, когда в Паскале не выполняются равенстваy = y, y + y = 2 * y, b and b = b.

4

Page 5: Сборник задач pascal

2 Условный оператор [if_14]

if_1. Определить h – полное количество часов и m – полное коли-чество минут, прошедших от начала суток до того момента (впервой половине дня), когда часовая стрелка повернулась на fградусов (0 6 𝑓 6 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

Page 6: Сборник задач pascal

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

Page 7: Сборник задач pascal

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

Page 8: Сборник задач pascal

4 Циклы [ts_15]

ts_1. Написать программу вычисления суммы всех двузначныхчисел.

ts_2. Составить программу вычисления куба суммы всех четных чиселот 2 до 100.

ts_3. Определите номерной знак автомашины нарушившей правиладвижения, если по показателям свидетелей номер записывает-ся тремя цифрами, кратен 2, 5 и 7, а сумма его цифр равна 12.

ts_4. Из чисел от 10 до 99 вывести те, сумма цифр которых равна n,где 0 < 𝑛 6 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

Page 9: Сборник задач pascal

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

Page 10: Сборник задач pascal

5 Графика [gr_9]

gr_1. Построить и закрасить круг радиуса 50 пиксель, центр которогосовмещен с центром экрана.

gr_2. Нарисовать разноцветный круг.

gr_3. Нарисовать нотный стан и ноты.

gr_4. Нарисовать сетку-муар из пересекающихся прямоугольников.

gr_5. Построить оси координат. Начало координат поместить в центрэкрана.

gr_6. Изобразить шахматную доску.

gr_7. Нарисовать "снежную бабу" и клавишами "стрелка вверх","стрелка вниз", "стрелка налево", "стрелка направо" управлятьдвижением этой фигуры по экрану.

gr_8. Изобразить шахматную доску и закрасить ее диагонали разнымицветами.

gr_9. Изобразить шахматную доску и закрасить клеточки ее диагона-лей разными цветами.

10

Page 11: Сборник задач pascal

6 Процедуры и функции [pf_10]

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. Составить программу вычисления суммы трехзначных чисел, вдесятичной записи которых нет четной цифры. Использоватьфункцию обнаружения таких чисел.

pf_8. Даны два натуральных числа. Определить, является ли первоеперевертышем второго.

pf_9. Составьте программу подсчета числа всех натуральных чисел,меньших M, квадрат суммы цифр которых равен X.

pf_10. Составить программу вычисления суммы трехзначных чисел, вдесятичной записи которых нет четной цифры.

11

Page 12: Сборник задач pascal

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 представить в ввиде квадрата простогочисла.

12

Page 13: Сборник задач pascal

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, используя алгоритм "РешетоЭратосфена".

13

Page 14: Сборник задач pascal

8 Строки [str_21]

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 - с какой позиции текста Т.

14

Page 15: Сборник задач pascal

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".

15

Page 16: Сборник задач pascal

str_14. Написать программу, которая подсчитывает количество слов вовведенной строке, первый и последний символ которых равны.

str_15. Предложение состоит из слов, между словами один пробел, апосле последнего слова точка. Найти длину самогодлинного слова.

str_16. Определить количество слов в строке символов между словамимаксимальной и минимальной длины.

str_17. Из заданного предложения выбрать и напечатать только те сим-волы, которые встречаются в нем только 1 раз. (в том порядке,в котором они встречаются в тексте)

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

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

str_19. В заданном предложении удалите каждое второе слово, а остав-шиеся переверните. (Например, из текста "А роза упала на лапуАзора" должен получится текст "А алапу упал").

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

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

str_21. Дана последовательность слов. Напечатать все слова в алфавит-ном порядке.

str_21v2. Дано предложение, между словами которого может быть любоечисло пробелов. Напечать слова данного предложения в алфа-витном порядке. Массивы не использовать.

16

Page 17: Сборник задач pascal

9 Одномерные массивы [om_8]

om_1. Задан одномерный массив А. Требуется переписать элементыодномерного массива А кратные 5 в массив В, а если такие от-сутствуют, то выдать соответствующее сообщение.

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

om_3. Дан одномерный массив натуральных чисел, определить есть лив нем K подряд идущих одинаковых чисел (𝐾 < 100).

om_4. Дан одномерный массив из целых чисел. Перевернуть его.

om_5. Дан массив целых чисел, заполненный случайными числами.Удалить все элементы, начиная с k1-го по k2-ой (k1 и k2 вводитьс клавиатуры). Сделать проверку корректности ввода значенийk1 и k2 (𝑘1 6 𝑘2), если ввод некорректный, то вывести сообщениеоб ошибке и закончить работу.

om_6. Даны два одномерных массива. Найти наименьший среди техэлементов первого массива, которые не входят во второй.

om_7. Разработать программу поиска и печати всех пар дружественныхчисел, меньших 10 000.

om_8. Дан целочисленный массив А. Подсчитать, сколько раз встре-чается в этом массиве максимальное по величине число. Найтиэто максимальное за один проход по массиву.

17

Page 18: Сборник задач pascal

10 Двумерные массивы [dm_20]

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 все числа различны. В каждой стро-ке выбирается минимальный элемент, затем среди этих чисел

18

Page 19: Сборник задач pascal

выбирается максимальное. Напечатать номер строки массива, вкоторой расположено найденное число.

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. Составить программу, удаляющую все строки и столбцы, на пе-ресечении которых стоят отрицательные элементы.

19

Page 20: Сборник задач pascal

11 Вычислительная математика [vm_1]

vm_1. Дано уравнение

3 · 𝑥4 − 2 · sin(−𝑥2) + 3𝑥− 1 = 0.

Найти корни этого уравнения с точностью 𝐸𝑃𝑆 = 1𝐸− 3 в интер-вале [−10; 10].

20

Page 21: Сборник задач pascal

12 Сортировка [s_4]

s_1. Произвести сортировку одномерного массива методом "пузырь-ка".

s_1v2. Отсортировать массив методом "пузырька" или обменом. Алго-ритм пузырьковой сортировки.

s_2. Из двух одномерных массивов (K и N) сформируйте массив раз-мером K + N, упорядоченый.

s_3. В заданном двумерном массиве найдите сумму элементов в каж-дой строке. Сформируйте одномерный массив, содержащий по-лученные суммы, расположенные по возрастанию.

s_4. Составьте программу упорядочения по возрастанию элементовкаждой строки двумерного массива.

s_4v2. Составьте программу упорядочения по возрастанию элементовкаждой строки двумерного массива. Для сортировки используй-те алгоритм quicksort.

21

Page 22: Сборник задач pascal

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, то процесс деленияна группы повторяется. Узнать, сколько троек будет упаковано впроцессе такого деления.

22

Page 23: Сборник задач pascal

14 Записи [z_5]

z_1. Демонстрация работы с записью.

z_2. Багаж пассажира характеризуется количеством вещей и общимвесом вещей. Дан массив, содержащий сведения о багаже каж-дого пассажира, которые представляют из себя записи с двумяполями: одно поле целого типа (количество вещей) и другое –дейстительное (вес в килограммах). Найти багаж, средний весодной вещи в котором минимален.

z_3. Создать список гимназистов с указанием возраста. Отсортиро-вать его сначала по фамилии, затем по возрасту.

z_3v2. Распечатать список студентов, упорядоченный по алфавиту. Сор-тировку "пузырьком" написать с помощью цикла while.

z_4. В деканате на карточке студента отмечается его успеваемость.Узнать, сколько имеется студентов отличников, хорошистов и содной тройкой по 4 предметам.

z_5. Распечатать список студентов, упорядоченный по их весу. Ис-пользовать сортировку выбором.

23

Page 24: Сборник задач pascal

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

24

Page 25: Сборник задач pascal

любых цифр.

mn_11. Составить программу подсчета общего количества цифр и зна-ков "+", "–", "*" в строке 𝑠, введенной с клавиатуры.

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

mn_13. muha + muha = slonРешить ребус с помощью множеств.

mn_14. Найти все простые числа от 2 до 255 с помощью решета Эрато-сфена.

25

Page 26: Сборник задач pascal

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

26

Page 27: Сборник задач pascal

17 Логика [log_3]

log_1. Три грибника, рассматривая найденный гриб, высказали своипредположения. Первый грибник сказал: "Не верно, что, еслиэто не опенок, то этот гриб съедобный". Второй грибник былтакже осторожен и сказал: "Не верно, что этот гриб или ядо-витый или опенок или не сыроежка". Третий грибник заявил:"Этот гриб не ядовитый, и я отрицаю, что, если это сыроежка,что на съедобна". В итоге оказалось, что все три грибника былиправы и их суждения оказались истинными. Какой гриб нашлигрибники?

log_2. Алеша, Боря и Гриша нашли в земле сосуд. Рассматривая уди-вительную находку, каждый высказал по два предположения:

Алеша. Это сосуд греческий и изготовлен в V веке.Боря. Это сосуд финикийский и изготовлен в III веке.Гриша. Это сосуд не греческий и изготовлен в IV веке.

Учитель истории сказал ребятам, что каждый из них прав тольков одном из двух предположений. Где и в каком веке изготовленсосуд?

log_3. В школьном первенстве по настольному теннису в четверку луч-ших вошли девушки: Наташа, Маша, Люда и Рита. Самые горя-чие болельщики высказали свои предположения о распределе-нии мест в дальнейших состязаниях.Один считает, что первой будет Наташа, а Маша будет второй.Другой болельщик на второе место прочит Люду, а Рита, по егомнению, займет четвертое место.Третий любитель тенниса с ними не согласился. Он считает, чтоРита займет третье место, а Наташа будет второй.Когда соревнования закончились, оказалось, что каждый из бо-лельщиков был прав только в одном из своих прогнозов.Какое место на чемпионате заняли Наташа, Маша, Люда, Рита?

27

Page 28: Сборник задач pascal

18 Текстовые файлы [txt_2]

txt_1. Дан файл F, компонентами которого являются целые числа. За-писать в файл G все четные числа файла F, а в файл H - всенечетные. Порядок следования чисел сохранить.

txt_2. Задается имя файла и целое число N. Распечатать последние Nстрок.

28

Page 29: Сборник задач pascal

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. Пусть простейшее описание книги будет состоять из ее названия,автора, цены и года издания.В процессе ввода данных описание книг записывать в типизиро-ванный файл.Ввод описания книг прекращать при значении названия книгиравном ’@’.Напечатать список описаний книг по определенному году изда-ния, указывая логический номер записи в файле.В полученном типизированном файле поменять местамипервую и последнюю запись.Затем проделать следующие операции с типизированным фай-лом:

– записать какую-либо запись в конец файла;– удалить запись из файла, зная ее логический номер;– вставить новую запись на опредленный логический номер.

29

Page 30: Сборник задач pascal

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 методом пузырька.

30

Page 31: Сборник задач pascal

21 Олимпиадные задачи [o_9]

o_1. Требуется сложить два целых числа А и В.Время: 1 с. Память: 16 Мб Сложность: 2%

Входные данные:В единственной строке input.txt записано 2 числа через пробел,не превышающих 109.

Выходные данные:В единственную строку выходного файла output.txt нужно выве-сти одно целое число – сумму чисел А и В.

Пример:

input.txt output.txt2 3 5

o_2. Требуется посчитать сумму целых чисел от 1 до N.Время: 1 с. Память: 16 Мб Сложность: 19%

Входные данные:В единственной строке input.txt записано единственное целоечисло N, не превышающее по абсолютной величине 104

Выходные данные:В единственную строку выходного файла output.txt нужно выве-сти одно целое число – сумму чисел от 1 до N.

Пример:

input.txt output.txt5 15

o_3. Напечатать введенное число прописью.

o_4. В написанном выражении ((((1?2)?3)?4)?5)?6) вместо каждого зна-ка ? вставить знак одного из четырех арифметических действий:+,−, *, / так, чтобы результат вычислений равнялся 35 (при де-лении дробная часть отбрасывается). Достаточно найти одно ре-шение.

o_5. Имеется пять целых чисел. Среди них: - если одинаковы 5, товывести "Impossible", иначе - если одинаковы 4, то вывести "Fourof a Kind", иначе - если одинаковы 3 и 2, вывести "Full House",иначе - если есть 5 последовательных, вывести "Straight", иначе- если одинаковы 3, то вывести "Three of a Kind", иначе - если

31

Page 32: Сборник задач pascal

одинаковы 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.TXT1 5 252 75 56253 4255 18105025

o_6v2. Вася и Петя учатся в школе в одном классе. Недавно Петя по-ведал Васе о хитром способе возведения в квадрат натураль-ных чисел, оканчивающихся на цифру 5. Теперь Вася может слегкостью возводить в квадрат двузначные (и даже некоторыетрехзначные) числа, оканчивающиеся на 5.

32

Page 33: Сборник задач pascal

Способ заключается в следующем: для возведения в квадратчисла, оканчивающегося на 5 достаточно умножить число, по-лученное из исходного путем вычеркивания последней пятеркина следующее за ним по порядку число, затем остается лишьприписать "25" к получившемуся результату справа.

Время: 1 с. Память: 16 Мб Сложность: 8%

Входные данные:В единственной строке input.txt записано единственное целоечисло N, не превышающее по абсолютной величине 4 · 105.Выходные данные:В единственную строку выходного файла output.txt нужно выве-сти одно натуральное число – 𝐴2 без лидирующих нулей

Пример:

input.txt output.txt5 25

75 56254255 18105025

o_7. Шахматы

(Время: 1 сек. Память: 16 Мб. Сложность: 18 %)

Совсем недавно Вася занялся программированием и решил ре-ализовать собственную программу для игры в шахматы. Но унего возникла проблема определения правильности хода конем,который делает пользователь. то есть если пользователь вво-дит значение "C7–D5", то программа должна определить этокак правильный ход, если же введено "E2–E4", то ход невер-ный. Так же нужно проверить корректность записи ввода: если,например, введено "D9–N5", то программа должна определитьданную запись как ошибочную. Помогите ему осуществить этупроверку.

Входные данные

В единственной строке входного файла INPUT.TXT записантекст хода, который указал пользователь. Пользователь не мо-жет ввести строку, длиннее 5 символов.

Выходные данные

В выходной файл OUTPUT.TXT нужно ввести "YES", если ука-занный ход конем верный, если же запись корректна (в смыслезаписи координат), но ход невозможен, то нужно вывести "NO".

33

Page 34: Сборник задач pascal

Если же координаты не определены или заданы некорректно, товывести сообщение "ERROR".

Примеры

N INPUT.TXT OUTPUT.TXT1 C7 – D5 YES2 E2 – E4 NO3 BSN ERROR

o_8. Статистика.

(Время: 1 сек. Память: 16 Мб. Сложность: 25 %)

Вася не любит английский язык, но каждый раз старается полу-чить хотя бы четверку за четверть, чтобы оставаться ударником.В текущей четверти Вася заметил следующую закономерность:по нечетным дням месяца он получал тройки, а по четным –четверки. Так же он помнит, в какие дни он получал эти оценки.Поэтому он выписал на бумажке все эти дни для того, чтобыоценить, сколько у него троек и сколько четверок. Помогите Ва-се это сделать, расположив четные и нечетные числа в разныхстрочках. Вася может рассчитывать на оценку 4, если четверокне меньше, чем троек.

Входные данные

В первой строке входного файла INPUT.TXT записано един-ственное число N - количество элементов массива (1 6 𝑁 6 100).Вторая строка содержит N чисел, представляющих заданныймассив. Каждый элемент массива – натуральное число от 1 до31. Все элементы массива разделены пробелом.

Выходные данные

В первую строку выходного файла OUTPUT.TXT нужно выве-сти числа, которые соответствуют дням месяцев, в которые Ва-ся получил тройки, а во второй строке соответственно располо-ить числа месяца, в которые Вася получил четверки. В третьейстроке нужно вывести "YES", если Вася может рассчитывать начетверку и "NO" в противном случае. В каждой строчке чис-ла следует выводить в том же порядке, в котором они идут вовходных данных. При выводе, числа отделяются пробелом.

Примеры

34

Page 35: Сборник задач pascal

N INPUT.TXT OUTPUT.TXT1 5 19 31

4 16 19 31 2 4 16 2YES

2 8 29 7 15 17 129 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.Примеры

35

Page 36: Сборник задач pascal

N INPUT.TXT OUTPUT.TXT1 5 17 -15

-7 5 -1 3 92 8 26 180

3 14 -9 4 -5 1 -12 43 10 36 5040

-5 1 2 3 4 5 6 7 8 -3

36