Задачи по информатике.

Задачи по курсу
Информатика

2007-2008
Оглавление:

Задача 1. Оператор присваивания 2
Задача 2. Условный оператор 5
Задача 3. Циклы 7
Задача 4. Ряды 9
Задача 5. Строки 11
Задача 6,7,8. Массивы 14
Задача 9. Структуры 19
Задача 10. Файлы 21
Задача 11. Сортировки 23
Задача 12. Списки 25

Задача 1. Оператор присваивания
1. Составить программу для решения системы двух линейных уравнений с двумя неизвестными.
Указание
Значение неизвестных x, y системы уравнений

находятся по формулам .
Считать, что .
2. Подсчитать, сколько очков набрала команда в первом круге чемпионата по хоккею, если известно, что m встреч она выиграла, n встреч проиграла, k встреч закончились ничьими.
Указание
За выигрыш команда получает два очка, за ничью - 1 очко, за проигрыш - 0 очков.
3. Известны длины сторон a, b, c треугольника. Вычислить высоты этого треугольника.
Указание
Высоты треугольника вычисляются по формулам:

где .
4. Составить программу для вычисления времени t встречи автомобилей, движущихся равноускоренно навстречу друг другу, если известны их скорости V1 и V2, ускорения а1 и а2 и начальное расстояние S между ними.
Указание.
Расстояние S1, пройденное первым автомобилем, вычисляется по формуле ; расстояние, пройденное вторым автомобилем, вычисляется по формуле . Время t встречи автомобилей определяется из уравнения ,
откуда .
5. Найти x из пропорции .
6. Сколько процентов от А+В-С приходится на А? На В? На С?
7. Составить программу вычисления идеального веса человека по его росту, при условии, что идеальный_вескг = ростсм - 100.
8. Вы положили деньги в сбербанк на срочный депозит на квартал из расчета 24% годовых. Составить программу, которая вычислит причитающуюся вам сумму через 4 месяца.
9. Розничная цена мужского костюма составляет R рублей. Наценка магазина составляет T% от оптовой цены. Составить программу определения оптовой цены костюма.
10. Зарплата сотрудника частной фирмы r рублей в месяц. Сколько денег он получит за полгода после вычета налогов в размере t% ежемесячно и s% за полгода?
11. Даны координаты вершин некоторого треугольника. Вычислить его периметр.
12. Смешано V1 литров воды температуры t1 с V2 литрами воды температуры t2. Составить программу вычисления объема и температуры образованной смеси.
13. Определить стоимость набора, в который входят следующие конфеты:

Таблица 1.7.
Название Вес Стоимость 1кг
Петровские 200г K руб.
Воронежские 300г P руб.
Чародейка 250г R руб.
Факел 150г B руб.
Ласточка 200г L руб.
Стоимость упаковки — U руб.
14. Сколько времени в минутах затратит школьник на дорогу от школы до стадиона, если известна длина этого расстояния S км и средняя скорость движения школьника V км/ч.
15. В квадрат вписана окружность (рис. 1.3). Определить площадь заштрихованной части фигуры, если известна длина стороны квадрата.
16. В квадрат вписана окружность (рис. 1.3). Определить площадь заштрихованной части фигуры, если известен радиус окружности.
17. В квадрат вписана окружность (рис. 1.4). Определить площадь заштрихованной части фигуры, если известна длина стороны квадрата.
Рис. 1.3 Рис. 1.4 Рис. 1.5
18. В квадрат вписана окружность (рис. 1.5). Определить площадь заштрихованной части фигуры, если известна длина стороны квадрата.

Задача 2. Условный оператор
1. Ввести три числа. Если они могут быть длинами сторон прямоугольного треугольника, вывести их в порядке возрастания, вычислить площадь полученного треугольника.
2. Ввести три числа. Если они могут быть длинами сторон остроугольного треугольника, вывести их в порядке убывания, вычислить площадь полученного треугольника.
3. Ввести три числа. Если они могут быть длинами сторон тупоугольного треугольника, вывести их в порядке убывания, вычислить площадь полученного треугольника.
4. Ввести три числа. Если они могут быть сторонами равностороннего треугольника, вычислить его площадь и длину высоты. Вывести стороны, площадь и длину высоты в порядке возрастания.
5. Ввести три числа. Если они могут быть длинами сторон равнобедренного треугольника, вычислить длины его высот. Вывести длину основания и длины высот в порядке возрастания.
6. Ввести три числа. Если они могут быть длинами сторон разностороннего тупоугольного треугольника, вывести их в порядке возрастания, вычислить площадь полученного треугольника.
7. Ввести три числа. Если они могут быть длинами сторон равнобедренного тупоугольного треугольника, вычислить его площадь. Вывести длины сторон и площадь в порядке возрастания.
8. Ввести три числа. Если они могут быть длинами сторон равнобедренного остроугольного треугольника, вычислить его площадь. Вывести длины сторон и площадь в порядке возрастания.
9. Ввести три числа. Если они могут быть длинами сторон разностороннего остроугольного треугольника, вывести их в порядке возрастания, вычислить площадь полученного треугольника.
10. Даны координаты трех точек на плоскости. Если они могут быть вершинами остроугольного треугольника, вывести их в порядке убывания, вычислить площадь полученного треугольника.
11. Даны три числа. Если они могут быть длинами сторон треугольника, определить его вид (прямоугольный, тупоугольный, остроугольный). Вычислить длины его высот и напечатать их в порядке убывания.
12. Составить программу, которая определяла бы вид треугольника (равносторонний, равнобедренный, разносторонний, прямоугольный, тупоугольный, остроугольный), если по данным трём отрезкам его можно построить.
13. Даны координаты трех точек на плоскости. Составить программу, которая определяла бы вид треугольника (равносторонний, равнобедренный, разносторонний, прямоугольный, тупоугольный, остроугольный), если данные координаты вершин позволяют его построить.
14. Даны координаты трех вершин прямоугольника. Определить координаты четвертой вершины.

Задача 3. Циклы
1. Составить программу вычисления суммы вида:

2. Составить программу вычисления при заданных x и a значения функции y вида:
;
.
3. Вычислить: ;
4. Написать программу вычисления при заданном x величины y по формуле
.
5. Вычислить .
6. Составить программу для нахождения и печати всех пифагоровых чисел, не превышающих 20.
7. Дано натуральное n. Вычислить значение выражения
8. Даны натуральное число n и действительное число x. Вычислить:

9. Дано натуральное k. Напечатать k-ую цифру последовательности 12345678910111213…, в которой выписаны подряд все натуральные числа.
10. Последовательность x1, x2, … образована по закону:
;
x1 = 1; x2 = 0.3; xi = (i+1) xi – 2 , i = 3, 4, … .
11. Дано вещественное число x и натуральное число n. Вычислить .
12. Даны вещественные числа a, h, натуральное число n.
Вычислить , где
13. Дано натуральное число n. Вычислить 12+234+…+n …2n.

Задача 4. Ряды

14. При некоторых заданных x, N и E, определяемых вводом, вычислить:
 сумму N слагаемых заданного вида;
 сумму тех слагаемых, которые по абсолютной величине больше Е.
Для случая b выполнить суммирование для двух значений Е, отличающихся на порядок, и при этом определить количество слагаемых, включенных в сумму. Сравнить результаты с точным значением функции, для которой данная сумма определяет приближенное значение при x, лежащем в интервале (-R, R).
Задача 5. Строки
1. Дана строка. Напечатать слова в нее входящие, но в обратном порядке (сначала последнее, потом предпоследнее и т.д.).
2. Дана строка. Напечатать те слова этой строки, которые отличны от последнего слова и выполняется условие: в слове гласные буквы а, е, и, о, у чередуются с согласными.
3. Для большинства существительных, оканчивающихся на -онок и -енок, множественное число образуется от другой основы. Как правило, это происходит по образцу: цыпленок – цыплята, мышонок – мышата и т.д. (в новой основе перед последней буквой т пишется а или я, в зависимости от предыдущей буквы: если это шипящая, то а, иначе – я). Имеются слова-исключения, из которых укажем следующие: ребенок (дети), бесенок (бесенята), опенок (опята), звонок (звонки), позвонок (позвонки), подонок (подонки), колонок (колонки), жаворонок (жаворонки), бочонок (бочонки). Есть еще ряд малоупотребительных слов-исключений, которые мы не рассматриваем.
4. Дан текст, среди символов которого имеется пробел. Группа символов, предшествующая первому пробелу, представляет собой русское слово, оканчивающееся на -онок или -енок. Получить это слово во множественном числе.
5. Дан русский текст, слова которого разделены пробелами, запятой или точкой. Все слова, оканчивающееся на -онок или -енок, представить во множественном числе.
6. Вводится строка. Если она является записью римского числа, то преобразовать ее в целое число.
7. Вводится 10 произвольных имен. Необходимо распечатать их в алфавитном порядке.
Замечание
Попытайтесь решить задачу, не сортируя сами имена. Поскольку требуется просто распечатать их в алфавитном порядке, заведите массив, содержащий порядковые номера имен. При необходимости перестановки, переставляйте не сами имена, а их порядковые номера. Такой подход особенно удобен, когда приходится сортировать сложные и "громоздкие" объекты.
8. Напишите функцию RightPosition(str1,str2: string), которая получает два параметра str1 и str2 типа string и возвращает позицию начала последнего появления str2 в str1. Например, RightPosition( 'Миссисипи', 'си' ) вернет значение 6.
9. Напишите функцию CountStr(str1,str2: string) которая получает два параметра str1 и str2 типа string и возвращает число, указывающее, сколько раз str2 встречается в str1. Функция не должна изменять свои параметры. Кроме того, любая литера в str1 может учитываться не более чем в одном вхождении str2. Например, CountStr( 'балалайка', 'ала' ) должна возвращать 1, а не 2.
10. Напишите функцию NonAlpha(str: string), которая получает параметр str типа string и возвращает позицию его первой литеры, не являющейся буквой (как латинского, так и русского алфавитов) строчной или прописной. Например, NonAlpha( 'stev7n' ) дает 5.
11. Напишите функцию Splite(name: string; var first, last : string ), которая из параметра name, хранящего имя и фамилию человека, извлекает их в first (имя) и last (фамилия). Имя и фамилия разделены некоторым числом пробелов. Например, после обращения Splite('Вася Иванов', str1,str2) в str1 должно оказаться 'Вася', а в str2 — 'Иванов'. Необходимо также предусмотреть обнаружение и обработку некорректных данных. В частности, если в name вообще не окажется ни одного пробела, процедура должна установить в обоих выходных параметрах специальное значение 'error' (ошибка). Какие еще ошибочные ситуации следует учесть?
12. Пусть даны две строки str1 и str2. Необходимо выяснить, можно ли из str1 путём перестановки литер получить строку str2. Напишите подпрограмму, которая решала бы указанную задачу.
13. Напишите процедуру SortMid, которая сортировала бы ряд из n строк в алфавитном порядке, основываясь на k–ой литере каждой строки, где k является параметром, передаваемым процедуре SortMid. Например, если k=3, то элементы ряда должны быть отсортированы по возрастанию значения в третьей литере каждой строки. Если длина строки меньше k, то будем предполагать, что его k–ой литерой, реально не существующей, служит пробел.
14. Напишите процедуру сортировки строк в обратном алфавитном порядке.
15. Напишите подпрограммы Encode (зашифровать) и Decode (расшифровать), которые получают два параметра str и alpha типа string. В первом параметре задается слово, подлежащее шифрованию (расшифровке), второй представляет собой некоторую перестановку 26 латинских букв алфавита. Принцип преобразования для шифрации состоит в следующем. Если некоторая буква в str является k–ой буквой в обычном алфавите, то вместо нее должна быть взята буква из k–ой позиции "нового" алфавита alpha. Для подпрограммы дешифровки используется обратный принцип.
16. Расширим предыдущую задачу. Напишите программу для тестирования Encode и Decode. Она должна начинаться с ввода ключа для шифрования и дешифрации — 26–буквенной строки. Затем вводится серия строк, подлежащих обработке. Над каждой строкой применяется сначала операция шифрования, а затем дешифрации. При этом необходимо контролировать некоторые ошибочные ситуации. Например, каждая содержащаяся в ключе буква должна быть представлена только один раз.
17. Написать программу, которая будет вводить значения типа string и определять, является ли каждое из них правильным идентификатором, удовлетворяющем требованиям Паскаля. Напомним, вкратце правила построения имен. Всякое имя может содержать от 1 до 127 литер; первой литерой должна быть буква (строчная или прописная); любая другая литера (начиная со второй) может быть буквой, цифрой (от 0 до 9) или знаком подчеркивания. Если обнаружена ошибка, необходимо выдать сообщение, квалифицирующее ее.
18. Усовершенствуйте программу из предыдущей задачи, чтобы она умела распознавать служебные слова Паскаля и отвергать попытки их предъявления. Для простоты ограничьте набор служебных слов, взяв за основу только некоторые из них.
19. Усовершенствуйте программу из задачи 18, сделав возможным автоматическое преобразование неправильных идентификаторов в синтаксически допустимые. Если исходная строка имеет слишком большую длину, укоротите её до допустимого размера путем отбрасывания избыточных литер; если она пуста, добавьте букву 'x'. Если первая литера не является буквой, то вставьте перед ней 'x'. Если в строке присутствуют какие-то "незаконные" литеры, удалите их.
20. Задано десять русских имен. В тексте проверить, все ли эти имена написаны с большой буквы, если нет, то исправить.

Задача 6,7,8. Массивы

1. Даны действительные числа x1, x2, ... , xn, y1, y2, ... , yn, r1, r2, ... , rn. Выяснить, есть ли на плоскости точка, принадлежащая всем кругам с1, с2, ... , сn, где ci имеет центр с координатами xi, yi и радиус ri.
2. Даны действительные числа a1, a2, ... , a2n. Эти точки определяют n интервалов числовой оси (a1, a2), (a3, a4), ..., (a2n-1, a2n). Является ли интервалом объединение этих интервалов? Если да, то указать концы этого интервала.
3. Даны действительные числа a1, a2, ..., a2n. Эти точки определяют n интервалов числовой оси (a1, a2), (a3, a4), ..., (a2n-1, a2n). Имеются ли точки числовой оси, принадлежащие по крайней мере трем каким-нибудь из данных интервалов. Если да, то указать какую-нибудь из этих точек.
4. Даны целые числа a1, a2, ..., an. Пусть M — наибольшее, m — наименьшее из них. Получить в порядке возрастания все целые числа из интервала (m, M), которые не входят в последовательность a1, a2, ..., an.
5. Даны координаты центров n окружностей и их радиусы. Определить число пересекающихся окружностей.
6. Все отрицательные элементы массива X перенести в его начало, а все остальные – в конец, сохраняя исходное взаимное расположение как среди отрицательных, так и среди остальных элементов. Дополнительный массив не заводить.
7. Переменной t присвоить значение true, если в массиве нет нулевых элементов и при этом положительные элементы чередуются с отрицательными и значение false в противном случае.
8. Имеются десять гирь весом a1, a2, ..., a10. Обозначим через ck – число способов, которыми можно составить вес k, то есть ck – это число решений уравнения a1x1 + a2x2 +...+ a10x10 = k, где xi может принимать значения 0 или 1 (i=1,..., 10). Получить с0, с1, ..., с10.
9. Прямая на плоскости может быть задана уравнением ax + by = c, где a, b одновременно не равны нулю, a, b, c – целые. Пусть даны коэффициенты нескольких прямых a1, b1, c1, a2, b2, c2, ..., an, bn, cn. Определить, имеются ли среди этих прямых совпадающие или параллельные.
10. Прямая на плоскости может быть задана уравнением ax + by = c, где a, b одновременно не равны нулю, a, b, c – целые. Пусть даны коэффициенты нескольких прямых a1, b1, c1, a2, b2, c2, ..., an, bn, cn. Определить, имеются ли среди этих прямых три прямые, пересекающиеся в одной точке.
11. Даны две последовательности по n чисел в каждой. Найти наименьшее среди тех чисел первой последовательности, которые не входят во вторую (считать, что хотя бы одно такое число есть).
12. Даны натуральное число n, целые числа a, x1, x2, ..., xn. Если в последовательности x1, x2, ..., xn есть хотя бы один член, равный a, то получить сумму всех членов, следующих за первым таким членом, иначе найти минимальный среди нечетных чисел последовательности x1, x2, ..., xn.
13. Даны целые числа a1, a2, ..., an, среди которых могут быть повторяющиеся. Составить новый массив из чисел, которые входят в последовательность по одному разу.
14. Даны целые числа a1, a2, ..., an, среди которых могут быть повторяющиеся. Составить новый массив из чисел, взятых по одному из каждой группы равных членов данной последовательности.
15. Даны натуральные числа k, n, действительные числа a1, a2, ..., akn. Получить последовательность min(a1, a2, ..., ak), min(ak+1, ak+2, ..., a2k), ..., min(ak(n-1)+1, ..., akn).
16. Даны натуральные числа k, n, действительные числа a1, a2, ..., akn. Получить последовательность max(a1, a2, ..., ak), max(ak+1, ak+2, ..., a2k), ..., max(ak(n-1)+1, ..., akn).
17. Даны натуральные числа k, n, действительные числа a1, a2, ..., akn. Получить min(a1 + a2 + ... + ak, ak+1 + ak+2 + ... + a2k, ..., ak(n-1)+1 + ... + akn).
18. Дано натуральное число n. Получить вещественную матрицу A, для которой
;

19. Дана вещественная матрица A. Получить матрицу A=BC, где

20. Получить вещественную матрицу A размерности 77, первая строка которой задается формулой (j = 1, ..., 7), вторая строка задается формулой (j = 1, ..., 7), а каждая следующая строка есть сумма двух предыдущих.
21. Дано натуральное число n и вещественная матрица размера n9. Найти среднее арифметическое:
22. каждого из столбцов;
23. каждого из столбцов, имеющих четные номера.
24. Дано натуральное число n. Выяснить, сколько положительных элементов содержит матрица A размерности nn, если

25. Дана действительная матрица размера nm, в которой не все элементы равны нулю. Получить новую матрицу путем деления всех элементов данной матрицы на ее наибольший по модулю элемент.
26. Даны натуральное число m, числа и целочисленная квадратная матрица порядка m. Строку с номером i назовем отмеченной, если , и неотмеченной в противном случае.
27. Нужно все элементы, расположенные в отмеченных строках матрицы, преобразовать по правилу: отрицательные элементы заменить на -1, положительные — на 1, а нулевые оставить без изменения.
28. Подсчитать число отрицательных элементов матрицы, расположенных в отмеченных строках.
29. Дана вещественная квадратная матрица порядка 12. Заменить нулями все ее элементы, расположенные на главной диагонали и выше нее.
30. Даны вещественные числа . Получить квадратную матрицу порядка 8, образованную по правилу:

31. Будем называть соседями элемента с индексами i, j некоторой матрицы такие элементы этой, соответствующие индексы которых отличатся от i, j не более чем на единицу. Для данной целочисленной матрицы А ( ) размерности mm найти матрицу В, состоящую из нулей и единиц, элемент которой равен единице, когда среди соседей есть не менее двух совпадающих с .
32. Элемент матрицы назовем седловой точкой, если он является наименьшим в своей строке и одновременно наибольшим в своем столбце или, наоборот, является наибольшим в своей строке и наименьшим в своем столбце. Для заданной целой матрицы размером 10  15 напечатать индексы всех ее седловых точек.
33. Выполнить следующие задания, используя процедуры и функции.
34. Для заданной вещественной матрицы определить, образуют ли ее элементы упорядоченную последовательность следующего вида:

35. В квадратной матрице определить количество строк
35.1. упорядоченных по возрастанию;
35.2. упорядоченных по убыванию;
35.3. состоящих из равных элементов;
35.4. неупорядоченных.
36. Использовать функцию, определяющую тип каждой строки.
37. Задано конечное множество имен жителей некоторого города, причем для каждого из жителей перечислены имена его детей. Жители А и Б называются родственниками, если:
37.1. либо А — ребенок Б
37.2. либо Б — ребенок А
37.3. либо существует некий В такой, что А является родственником В, а В является родственником Б.
38. Перечислить все пары жителей города, которые являются родственниками.
39. Проверить свойство АТТ=(АТ)Т=А, где А — исходная матрица (nn), знак Т означает транспонирование. Использовать процедуру транспонирования.
40. В матрице А(nn) определить количество строк, элементы которой образуют арифметическую прогрессию. Использовать подпрограмму проверки строки.
41. В заданной матрице А(nn) найти максимум из всех минимальных элементов матрицы по столбцам.
42. В заданной матрице А(nn) найти минимум всех сумм абсолютных величин элементов матрицы по столбцам. Для нахождения суммы абсолютных величин столбца использовать функцию.
43. Подсчитать количество строк матрицы А(nn), элементы которых образуют монотонную последовательность. Для определения монотонности использовать процедуру.
44. Уплотнить матрицу А(nn) влево и вверх. Для выявления нулевых строк и столбцов и столбцов использовать подпрограмму.
45. Матрица А(nn) просматривается сверху вниз про строкам. Найти скалярное произведение строки и столбца, соответствующих строке с первым найденным отрицательным элементом и последним нулевым.
46. Упорядочить строки матрицы по возрастанию их евклидовых норм.
47. Проверить, есть ли в матрице А(nn) строки не содержащие более двух отрицательных элементов.
48. Дана матрица А(nn). Построить вектор, каждый элемент которого содержит наименьший по абсолютной величине элемент строки.
49. Составить программу поиска минимального элемента, расположенного под главной диагональю, и максимального элемента, расположенного над главной диагональю заданной вещественной матрицы А(nn).
50. Сформировать одномерный массив размера N по следующему принципу: четные элементы равны квадрату индекса, а нечетные его обратной величине.
51. Заполнить одномерный массив размера N так, чтобы каждый элемент с четным индексом был равен половине своего номера, а каждый элемент с нечетным индексом – 0.
52. Даны два массива А(N) и В(N).Сформировать С(N) такой, что С[i]=А[i]/B[i], если i нечетное, и C[i]=A[i]*B[i], если i четное.
53. Дан массив размера N. Вывести его элементы в обратном порядке.
54. Подсчитать сумму элементов одномерного массива.
55. Подсчитать сумму элементов двухмерного массива.
56. Найти максимальный элемент в массиве. Найти индекс максимального элемента.
57. Найти минимальный элемент в массиве. Найти индекс минимального элемента.
58. Поменять местами минимальный и максимальный элементы массива.
59. Найти среднее арифметическое элементов массива.
60. Вывести всех элементов массива из интервала C..D.
61. Массив размера N заполнен случайными числами от –15 до 15.Определить количество отрицательных элементов и их индексы.
62. Дан массив размера N. Осуществить циклический сдвиг элементов массива влево (вправо) на одну позицию.
63. Дан массив размера N и число k (0 < k < 5, k < N). Осуществить циклический сдвиг элементов массива влево (вправо) на k позиций.
64. Вывести наиболее часто встречающийся элемент массива.
65. Проверить, все ли элементы массива различны.
66. Проверить, имеется ли в массиве размера N. хотя бы одна пара чисел, совпадающих по величине.
67. Дан массив размера N. Определить индексы всех равных элементов.
68. Дан массив размера N. Вывести вначале его элементы с четными (нечетными) индексами, а затем — с нечетными (четными).
69. Дан целочисленный массив A размера N. Вывести номер первого (последнего) из тех его элементов A[i], которые удовлетворяют двойному неравенству: A[1] < A[i] < A[N]. Если таких элементов нет, то вывести 0.
70. Дан целочисленный массив A размера N и два числа x и y (x < y). Найти номера элементов, удовлетворяющих условию x< A[i] < y.
71. Дан целочисленный массив размера N. Преобразовать его, прибавив к четным (нечетным) числам первый (последний) элемент. Первый и последний элементы массива не изменять.
72. Дан целочисленный массив размера N. Вывести вначале все его четные (нечетные) элементы, а затем — нечетные (четные).
73. Дан целочисленный массив размера N. Изменить знак всех элементов с четными индексами на противоположный.
74. Дан целочисленный массив размера N. Заменить нулевые элементы квадратами их индексов.
75. Дан целочисленный массив размера N. Поменять местами соседние четные и нечетные по номеру элементы. Указание: дополнительные массивы не использовать.
76. Заменить все положительные (отрицательные) элементы целочисленного массива на значение минимального (|максимального).
77. Дан массив размера N. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами.
78. Проверить, образуют ли элементы целочисленного массива размера N арифметическую прогрессию. Если да, то вывести разность прогрессии, если нет — вывести 0.
79. Проверить, образуют ли элементы целочисленного массива размера N геометрическую прогрессию. Если да, то вывести знаменатель прогрессии, если нет — вывести 0.
80. Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем четные и нечетные числа. Если чередуются, то вывести 0, если нет, то вывести номер первого элемента, нарушающего закономерность.
81. Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем положительные и отрицательные числа. Если чередуются, то вывести 0, если нет, то вывести номер первого элемента, нарушающего закономерность.
82. Дан массив ненулевых целых чисел размера N. Определить число соседств из двух чисел разного знака.
83. Дан массив размера N. Вычислить сумму произведений всех пар соседних чисел.
84. Дан массив размера N. Вычислить сумму произведений всех троек соседних чисел.
85. Дан массив размера N. Определить количество пар соседних чисел, являющихся противоположными.
86. Дан массив размера N. Определить произведение нечетных элементов, имеющих четные индексы.
87. Дан массив размера N. Найти количество его локальных минимумов.
88. Дан массив размера N. Найти количество его локальных максимумов.
89. Дан массив размера N. Найти максимальный из его локальных минимумов.
90. Дан массив размера N. Найти минимальный из его локальных максимумов.
91. Дан массив размера N. Определить количество участков, на которых его элементы монотонно возрастают.
92. Дан массив размера N. Определить количество участков, на которых его элементы монотонно убывают.
93. Дан массив размера N. Определить количество его промежутков монотонности (то есть участков, на которых его элементы возрастают или убывают).
94. Дано вещественное число R и массив размера N. Найти элемент массива, который наиболее близок к данному числу.
95. Дано вещественное число R и массив размера N. Найти элемент массива, который наименее близок к данному числу.
96. Дано вещественное число R и массив размера N. Найти два элемента массива, сумма которых наиболее близка к данному числу.
97. Дано вещественное число R и массив размера N. Найти два элемента массива, сумма которых наименее близка к данному числу.
98. Дан массив размера N. Найти номера двух ближайших чисел из этого массива.
99. Дан целочисленный массив размера N. Определить максимальное количество его одинаковых элементов.
100. Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся менее двух раз.
101. Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся более двух раз.
102. Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся ровно два раза.
103. Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся ровно три раза.
104. Дан целочисленный массив размера N, содержащий большое количество нулевых элементов. Заменить все группы подряд встречающихся нулей на один нуль.
105. Дан целочисленный массив размера N, содержащий большое количество нулевых элементов. Заменить группы элементов, состоящие из нечетного количества нулей, на один нулевой элемент, а из четного – на два.
106. Дан целочисленный массив размера N, содержащий большое количество нулевых элементов. Заменить все группы подряд встречающихся нулей на элемент, состоящий из двух цифр, где первая цифра – 0, а вторая – количество нулей в группе.
107. Дан целочисленный массив размера N. Если он является перестановкой, то есть содержит все числа от 1 до N, то вывести 0, в противном случае вывести номер первого недопустимого элемента.
108. Дан массив размера N. Преобразовать его, вставив перед1|после2 каждого положительного3|отрицательного4 элемента нулевой элемент.
109. Дан целочисленный массив размера N. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии — количество этих элементов (длина серии может быть равна 1). Вывести массив, содержащий длины всех серий исходного массива.
110. Дан целочисленный массив размера N. Преобразовать массив, увеличив1|уменьшив2 каждую его серию на один элемент.
111. Дан целочисленный массив размера N. Преобразовать массив, увеличив первую1|последнюю2|все3 серии наибольшей длины на один элемент.
112. Дан целочисленный массив размера N. Вставить перед1|после2 каждой серии нулевой элемент.
113. Дано число k и целочисленный массив размера N. Поменять местами первую1|последнюю2 и k-ю серии массива. Если серий в массиве меньше k, то вывести массив без изменений.
114. Дано число k и целочисленный массив размера N. Удалить из массива все серии, длина которых меньше1|равна2|больше3 k.
115. Дано число k и целочисленный массив размера N. Заменить каждую серию, длина которой меньше1|равна2|больше3 k, на один нулевой элемент.
116. Даны два массива A и B размера 5, элементы которых упорядочены по возрастанию1|убыванию2. Объединить эти массивы так, чтобы результирующий массив остался упорядоченным.
117. Дан массив размера N. Вывести индексы массива в том порядке, в котором соответствующие им элементы образуют возрастающую1|убывающую2 последовательность.
118. Дана точка A и множество (массив) B из N точек. Найти номер точки из множества (массива)B, наиболее близкой1|удаленной2 от точки A.
119. Дано множество A из N точек. Среди всех точек этого множества, лежащих в первой1|второй2|третьей3|четвертой4 четверти, найти точку, наиболее близкую5|удаленную6 от начала координат. Если таких точек нет, то вывести точку с нулевыми координатами.
120. Дано множество A из N точек. Найти пару различных точек этого множества с минимальным1|максимальным2 расстоянием между ними и само это расстояние (точки выводятся в том же порядке, в котором они перечислены при задании множества A).
121. Дано множество A из N точек. Найти такую точку из данного множества, сумма расстояний от которой до остальных его точек минимальна1|максимальна2, и саму эту сумму.
122. Даны множества A и B, состоящие соответственно из N1 и N2 точек. Найти минимальное1|максимальное2 расстояние между точками этих множеств и сами точки, расположенные на этом расстоянии.
123. Дано множество A из N точек. Найти наименьший1|наибольший2 периметр треугольника, вершины которого принадлежат различным точкам множества A, и сами эти точки (точки выводятся в том же порядке, в котором они перечислены при задании множества A).

Задача 9. Структуры
1. Дано
type
данные = record
имя : string[20];
пол : (муж, жен);
рост: 140..200
end;
группа = array of данные;
Описать функцию СредРост( ГР ), определяющую средний рост женщин из группы ГР.
2. Дано
type
рац = record
числ : integer;
знам : 1..maxint
end;
массив = array[1..20] of рац;

Описать логическую функцию Равно( a, b ), сравнивающую два рациональных числа a и b.
3. Даны комплексное число z (пара вещественных чисел) и вещественное число  > 0. Вычислить с точностью  значение следующей комплексной функции:
 sh z = z + z3 / 3! + z5 / 5! + … + z2n+1 / (2n + 1)! + …;
 ch z = z + z2 / 2! + z4 / 4! + … + z2n / (2n)! + …;
 sin z = z - z3 / 3! + z5 / 5! - …+ (-1)nz2n+1 / (2n + 1)! + …;
 cos z = z – z2 / 2! + z4 / 4! - … + (-1)nz2n / (2n)! + …;
 ln (1 + z) = z - z2 / 2 + z3 / 3 - … + (-1)n-1zn / n + … (| z | < 1);
 arctg z = z - z3 /3 + z5 /5 -…+ (-1)nz2n+1 /(2n + 1) +… (| z | < 1).
4. Дано
const
MaxN = 30;
type
ВещТип = record
знак : boolean;
мантисса, порядок : real;
end;
список = array[1..MaxN] of ВещТип;

Описать:
 функцию MaxNeg( C ) для нахождения минимального отрицательного числа из списка чисел С;
 функцию MaxDi( C ) для нахождения максимального порядка числа из списка вещественных чисел С;
5. Дано
type
декарт = record
x, y : real
end;
поляр = record
r, fi : real { r  0, - < fi   }
end;
Описать процедуру ДП( d, p ), преобразующую координаты точки на плоскости из декартовых d в полярные p, и ПД( p, d ), выполняющую обратное преобразование.
6. Дано
type
число = 1..31;
месяц = 1..12;
год = 1..2000;
дата = record
ч : число;
м : месяц;
г : год
end;
ДеньНедели = (пн, вт, ср, чт, пт, сб, вс);

Считая, что все даты даются по григорианскому календарю (в «новом стиле»), описать:
 функцию ПослЧисло( d ), вычисляющую количество дней в том месяце, которому принадлежит дата d;
 логическую функцию ВернаяДата( d ), проверяющую правильность даты d;
 функцию ЧислоДней( d ), подсчитывающую, сколько дней прошло от 1 января 1-го года нашей эры до даты d;
 функцию ДН( d ) для определения дня недели, на который приходится дата d (учесть, что 1 января 1-го года нашей эры было понедельником);
 функцию Пятница13( d ), которая определяет количество дней до даты d, которые были пятницами 13-ого числа.

Задача 10. Файлы

1. Прочитать текстовый файл. На отдельной форме вывести информацию о количестве слов, состоящих из одного символа, двух символов и т.д.
2. Прочитать текстовый файл. На отдельной форме вывести словарь, используемых слов с указанием частоты их использования.
3. Прочитать текстовый файл. На отдельной форме вывести текст, из которого удалены незначащие пробелы.
4. Прочитать текстовый файл. На отдельной форме вывести этот же текст, но в котором каждое новое предложение написано с новой строки (предложения заканчиваются точкой).
5. Прочитать текстовый файл. Реализовать функцию замены одного слова на другое.
6. Написать программу для кодирования и декодирования текстового файла с помощью слова-пароля.
7. Прочитать текстовый файл. На отдельной форме вывести текст, в котором все слова из латинских символов и цифр выделены другим цветом.
8. Прочитать текстовый файл. На отдельной форме вывести тот же текст, но в котором все числа записаны словами.
9. В текстовом файле записан английский /немецкий текст. Необходимо выделять сплошной фрагмент текста и определять, все ли буквы латинского алфавита в нём задействованы, отметить незадействованные.
10. Прочитать текстовый файл, в котором хранятся статьи уголовного кодекса. Разбить весь текст на отдельные статьи, если известно, что признаком начала статьи является предложение, состоящее из слова <Статья>, за которым следует номер статьи с точкой, написанное в начале строки.
11. Прочитать текстовый файл, в котором хранятся одна статья уголовного кодекса. Разбить эту статью на пункты, если известно, что признаком начала пункта является предложение, состоящее из номера пункта с точкой, написанное в начале строки.
12. Прочитать текстовый файл, в котором хранятся одна статья уголовного кодекса, состоящая из одного единственного пункта. Отделить от этой статьи санкцию, если известно, что она начинается со слов <наказывается> или <наказываются>.

В задачах 13..27 использовать типизированный файл c информацией о студентах факультета Stud.dat со структурой:

const NumSemestr=10;
type
TStud=record
FIO : string[80]; // фамилия имя отчество
Year : TDateTime; // дата рождения
// средние оценки за семестр
MedB : array [1..NumSemestr] of real;
Kurs : byte; // курс
Group: byte; // группа
End;

13. Убедиться в отсутствии задолженностей для выбранного студента-выпускника (наличие положительных оценок за все десять семестров).
14. Вывести список студентов, для которых дни рождения попадают на дни текущей недели.
15. Вывести список студентов, у которых средний балл постоянно увеличивается от семестра к семестру.
16. Вывести список студентов, у которых средний балл постоянно уменьшается за всё время обучения.
17. Вывести информацию о самых молодых студентах с указанием возраста - N человек, начиная с самого молодого, N определяется вводом.
18. Вывести информацию о средних баллах по курсам.
19. Вывести информацию об однофамильцах.
20. Организовать поиск студентов по ФИО, курсу, группе, году рождения.
21. Определить группы студентов, у которых средний балл ниже факультетского среднего.
22. Вывести информацию о студентах, которые стали учиться хуже, чем на 1-ом курсе.
23. Упорядочить список студентов заданной группы по среднему баллу, вывести его.
24. Вывести список студентов, у которых средний балл больше 40.
25. Вывести студента с наибольшим средним баллом на каждом курсе.
26. Вывести студента с наименьшим средним баллом на каждом курсе.
27. Составить список 5 студентов с максимальным средним баллом.

Задача 11. Сортировки
1. Написать программу, которая наглядно иллюстрирует работу следующих методов сортировки:
 пузырьковая;
 шейкерная.
Провести сравнение этих сортировок по количеству сравнений, по количеству обменов. Для этого построить графики зависимостей данных величин от количества элементов массива.
2. Написать программу, которая наглядно иллюстрирует работу следующих методов сортировки:
 простыми вставками;
 бинарными вставками.
Провести сравнение этих сортировок по количеству сравнений, по количеству обменов. Для этого построить графики зависимостей данных величин от количества элементов массива.
3. Примером сортировки по двум ключам может служить список файлов, имеющих одинаковые имена и разные расширения. Список упорядочен по именам, а для каждого имени – по расширениям.
Написать программу, которая сортирует элементы массива по двум ключам. Элементом массива является запись, два поля которой – два ключа
4. В магазине строительных материалов в продаже имеются стеновые панели, которые характеризуются следующими величинами:
 ширина,
 длина,
 количество штук,
 цена за 1 м2.
Вывести в порядке возрастания цены сведения о тех стеновых панелях, общая площадь которых не менее заданной.
5. Есть некий измерительный прибор, работа которого зависит от входных параметров a и x, а результат определяется следующей формулой у = a sin(ax) cos2 (x/a). Проводится серия опытов для значений xt ,х2,... xn, a = const. Вывести результат в виде таблицы, упорядоченной по убыванию значений показаний прибора, полученных в ходе опытов.
6. В чемпионате России по футболу принимают участие 16 команд. Для каждой команды известен список игроков, каждый игрок из команды имеет свой рейтинг. Вывести список команд в порядке убывания вероятности победы в чемпионате. Рейтинг команды равен сумме рейтингов игроков. Вероятность победы равна рейтингу команды минус сумма рейтингов 11 лучших игроков.
7. Элемент хэш-таблицы содержит информацию о номере телефона и фамилию человека, который доступен по этому телефону. То есть у одного человека может быть несколько телефонов: домашний, рабочий, мобильный и т.п. Напишите программу, которая по заданной фамилии выводит все номера телефонов, по которым доступен этот человек.
8. Упорядочить массив размера N по возрастанию1|убыванию2.
9. Дано множество A из N точек с целочисленными координатами. Порядок на координатной плоскости определим следующим образом: (x1, y1) < (x2, y2), если либо x1 < x2, либо x1 = x2 и y1 < y2. Расположить точки данного множества по возрастанию1|убыванию2 в соответствии с указанным порядком.
10. Из двух упорядоченных по невозрастанию массивов A(M) и B(N) получить путем слияния упорядоченный по убыванию массив C; удаляемые элементы собрать в массиве D. Подсчитать количество элементов в массивах C и D.
11. Заданы два одномерных массива А(N) и В(N). Сформировать массив С(2*N), содержащий элементы обоих массивов, расположенные в порядке возрастания.
12. Путем слияния из возрастающего A(M) и невозрастающего B(N) массивов получить возрастающий массив C (с удалением совпадающих элементов). Подсчитать количество элементов в массиве С.
13. Задан массив записей, поле key которого – целые числа. Написать программу, которая наглядно демонстрирует сортировку массива по ключу key:
13.1. методом простого слияния;
13.2. методом естественного слияния.
Количество элементов массива таково, что все элементы отображаются на экране. В данных сортировках используется дополнительный массив
14. Задан массив записей, поле key которого – целые числа. Написать программу, которая
наглядно демонстрирует пирамидальную сортировку по ключу key. Массив изображен в виде последовательности элементов. При построении пирамиды на экране массив отображается не только в виде последовательности, но и в виде построенной пирамиды.
15. Написать программу, иллюстрирующую работу сортировки Хоара:
15.1. реализовать рекурсивным методом;
15.2. реализовать нерекурсивным методом;
15.3. реализовать любым из методов, но учитывать, что для сортировки массива маленького размера лучше применять какой-нибудь другой метод сортировки (например, простыми вставками, пузырьком ...).
16. Написать программу, которая наглядно иллюстрирует работу следующих методов сортировки:
16.1. пузырьковая
16.2. шейкерная
17. Провести сравнение сортировок методом пузырька и шейкерной по количеству сравнений, по количеству обменов. Для этого построить графики зависимостей данных величин от количества элементов массива.
18. Написать программу, которая иллюстрирует работу метода Шелла с одной из формул вычисления шага сортировки:
18.1. h[k–1] = 3h[k] + 1, h[t]=1, t = [log3n]–l;
18.2. h[k–1] = 2h[k] + 1, h[t]=1, t = [log2n]–l;
18.3. 2k–l;
18.4. 2k +1;
18.5. (2k–(–l)k)/3;
18.6. (3k–l)/2;
18.7. числа Фибоначчи.
19. Реализовать сортировку массива целых чисел методом двухпутевых вставок при использовании следующих дополнительных структур данных:
19.1. массива;
19.2. двунаправленного списка.
Программа должна наглядно иллюстрировать работу данного алгоритма.
20. Исследовать зависимость количества сравнений в сортировках простыми и бинарными вставками от количества элементов в этих массивах. При этом отобразить необходимое количество перестановок.
21. Написать программу, которая иллюстрирует сортировку массива распределяющим подсчетом. Элементом массива является запись следующего типа:
record
ch: char;
key: integer
end
Указание. Ключом сортировки является поле целого типа.
22. В магазине строительных материалов в продаже имеются стеновые панели, которые характеризуются следующими величинами:
22.1. ширина,
22.2. длина,
22.3. количество штук,
22.4. цена за 1 м2.
Вывести в порядке возрастания цены сведения о тех стеновых панелях, общая площадь которых не менее заданной.
23. Есть некий измерительный прибор, работа которого зависит от входных параметров a и x, а результат определяется следующей формулой у = a sin(ax) cos2 (x/a). Проводится серия опытов для значений xt ,х2,... xn, a = const. Вывести результат в виде таблицы, упорядоченной по убыванию значений показаний прибора, полученных в ходе опытов.
24. Информация агентства по продаже недвижимости содержит следующие сведения о квартирах:
24.1. район, в котором находится квартира,
24.2. этаж,
24.3. количество комнат,
24.4. общая площадь,
24.5. цена за 1 м2.
Клиент, обращаясь в агентство, имеет возможность указать вес для каждого из критериев (важный критерий имеет большой вес, незначительный – маленький), а агентство, в свою очередь, предлагает ему список квартир, упорядоченный по невозрастанию суммы весов.
25. В чемпионате России по футболу принимают участие 16 команд. Для каждой команды известен список игроков, каждый из команды имеет рейтинг. Вывести список команд в порядке убывания вероятности победы в чемпионате. Вероятность победы равна рейтингу команды – сумме рейтингов 11 лучших игроков.

Задача 12. Списки
1. Реализовать функцию поиска элемента Е в односвязном списке L.
2. Подсчитать число максимальных элементов списка.
3. В списке A хранится информация о людях (фамилия, имя, отчество, профессия). Имеется список В, содержащий перечень профессий. Удалить из списка А тех людей, чья профессия не указана в списке В.
4. Дан список слов. Из каждой группы подряд идущих одинаковых слов оставить только одно.
5. Дан текстовый файл. Распечатать слова, имеющие максимальную длину.
6. Дан список вещественных чисел. Проверить, упорядочены ли числа по возрастанию или по убыванию.
7. Дан список вещественных чисел. Для каждого элемента списка напечатать число отрицательных элементов, следующих за ним.
8. Реализовать проект "Частотный словарь". В качестве обрабатываемого текста можно использовать, например, модули этого проекта. Результатом должно явиться перечисление всех "слов" в алфавитном порядке с частотой их появления. Отметить, что частота появления таких слов, как begin и end, всегда одинакова.
9. Создать приложение, проверяющее правильность расстановки скобок в арифметическом выражении.
10. Даны два стека. Используя операции ИзСтека, ВСтек и функцию СтекПуст подсчитать общее число элементов в стеках. В качестве вспомогательных структур разрешается использование переменных целых типов. Алгоритм должен предусматривать восстановление исходного расположения элементов в стеках.
11. Дан текстовый файл А. Переписать его содержимое в файл В, перенося при этом в конец каждой строки все входящие в нее знаки препинания.
12. Даны две очереди X и Y, содержащие вещественные числа. Из каждой очереди одновременно извлекается по одному числу, х и у соответственно. Если х < у, то число (х + у) помещается в конец очереди X, иначе число (х–у) помещается в конец очереди Y. Необходимо определить число шагов, через которое одна из очередей станет пустой.

Задача 13
1. Написать рекурсивную функцию для нахождения биномиальных коэффициентов

2. Для заданного М вычислить все
3. Задано конечное множество имен жителей некоторого города, причем для каждого из жителей перечислены имена его детей. Жители А и Б называются родственниками, если:
3.1. либо А — ребенок Б,
3.2. либо Б — ребенок А,
3.3. либо существует некий В такой, что А является родственником В, а В является родственником Б. Перечислить все пары жителей города, которые являются родственниками.
4. Подсчитать количество различных представлений заданного натурального N в виде суммы не менее двух попарно различных положительных слагаемых. Представления, отличающиеся порядком слагаемых, различными не считаются.
5. Вычислить определитель заданной матрицы, пользуясь формулой разложения по первой строке:

где матрица B получается вычеркиванием из А первой строки и k-го столбца.
6. Построить синтаксический анализатор для понятия простое_выражение,
простое выражение ::= простой_ идентификатор | (простое_выражение знак_операции простое_выражение);
7. простой идентификатор: := буква;
8. знак_операци::= + | – | *;
9. Написать процедуру, которая по заданному простому логическому выражению вычисляет его значение.
10. логическое выражение.:= TRUE | FALSE | NOT логическое_выражение
11. (логическое_выражение знак_операции логическое_выражение);
12. знак_операщш::= AND | OR;
13. Расставить на шахматной доске 8 ферзей таким образом, чтобы ни один не угрожал другому.
14. Получить расстановки 8 ладей на шахматной доске, при которых ни одна ладья не угрожает другой.
15. Получить все перестановки элементов 1,..., 6.
16. Получить все размещения из 10 элементов 1, 2,..., 10 по 3 в каждом. Размещением называется выборка из п указанных элементов т неповторяющихся элементов.
17. На шахматной доске определигь поля, в которые может попасть конь за п ходов из указанной позиции.
18. Имеются п городов. Некоторые из них соединены дорогами известной длины.
18.1. Найти кратчайшие маршруты из заданного города в остальные.
18.2. Найти кратчайший маршрут, начинающийся в заданном городе и проходящий через все остальные.
19. Найти расстановку 5 ферзей, при которой каждое поле шахматной доски будет находиться под ударом хотя бы одного из них.
20. «Задача о рюкзаке». Имеется М различных предметов, известны вес каждого предмета и его стоимость. Определить, какие предметы надо положить в рюкзак, чтобы общий вес не превышал заданной границы, а общая стоимость была максимальной.
21. Даны целое п от 2 до 20 и вещественное Е>0. Найти с точностью Е все корни n-го многочлена Чебышева Тп(х), определяемого формулами Т0 (х) = 1; Т1 (х) = х; Тk (х) = 2хTk-1 (х) - Тк-2 (х), (к = 2,3,...).
22. Найти расстановку 5 ферзей, при которой каждое поле шахматной доски будет находиться под ударом хотя бы одного из них.
23. Покрыть все клетки шахматной доски ходом коня, начальное положение коня на поле с координатами x0, y0
24. Задана система двусторонних дорог. Найти замкнутый путь, проходящий через каждую вершину и длиной не более 100 км.
25. Прямоугольная матрица содержит ячейки двух типов — "белые" и "черные". Написать процедуру, находящую хотя бы один путь от первой строки матрицы до последней по "белым" ячейкам. Переход возможен только в соседнюю ячейку: левую, правую, верхнюю, нижнюю, то есть при изменении только одного индекса.