Zadachi






Факультет
компьютерных наук










Сборник задач по курсу
по программированию

для студентов специальности 230201
«Информационные системы и технологии»





Составители:
Н.А. Тюкачев
Е.Е. Михайлова
Г.Э. Вощинская
Е.М. Михайлов



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

Рецензент: д.ф.-м.н., зав. каф. ПОиАИС Артемов М.А.















Печатается по решению ученого совета
факультета компьютерных наук
Воронежского государственного университета

( Коллектив авторов, 2010
( Оформление.
Воронежский государственный университет, 2010

1. Линейные алгоритмы
Составить программу для решения системы двух линейных уравнений с двумя неизвестными.
Указание
Значение неизвестных x, y системы уравнений
13 EMBED Equation.3 1415 находятся по формулам
13 EMBED Equation.3 1415.
Проверить, что 13 EMBED Equation.3 1415.
Подсчитать, сколько очков набрала команда в первом круге чемпионата по хоккею, если известно, что m встреч она выиграла, n встреч проиграла, k встреч закончились ничьими.
Указание
За выигрыш команда получает два очка, за ничью 1 очко, за проигрыш 0 очков.
Известны длины сторон a, b, c треугольника. Вычислить высоты этого треугольника.
Указание
Высоты треугольника вычисляются по формулам:
13 EMBED Equation.3 1415
где 13 EMBED Equation.3 1415.
Составить программу для вычисления времени t встречи автомобилей, движущихся равноускоренно навстречу друг другу, если известны их скорости V1 и V2, ускорения а1 и а2 и начальное расстояние S между ними.
Указание.
Расстояние S1, пройденное первым автомобилем, вычисляется по формуле 13 EMBED Equation.3 1415; расстояние, пройденное вторым автомобилем, вычисляется по формуле 13 EMBED Equation.3 1415. Время t встречи автомобилей определяется из уравнения 13 EMBED Equation.3 1415,
откуда 13 EMBED Equation.3 1415.

Найти x из пропорции 13 EMBED Equation.3 1415.
Сколько процентов от А+В–С приходится на А? На В? На С?
Составить программу вычисления идеального веса человека по его росту, при условии, что идеальный_вес(кг) = рост(см) ( 100.
Вы положили деньги в сбербанк на срочный депозит на квартал из расчета 24% годовых. Составить программу, которая вычислит причитающуюся вам сумму через 4 месяца.
Розничная цена мужского костюма составляет R рублей. Наценка магазина составляет T% от оптовой цены. Составить программу определения оптовой цены костюма.
Зарплата сотрудника частной фирмы r рублей в месяц. Сколько денег он получит за полгода после вычета налогов в размере t% ежемесячно и s% за полгода?
Даны координаты вершин некоторого треугольника. Вычислить его периметр.
Смешано V1 литров воды температуры t1 с V2 литрами воды температуры t2. Составить программу вычисления объема и температуры образованной смеси.
Определить стоимость набора, в который входят следующие конфеты:
Название
Вес
Стоимость 1кг

Петровские
200г
K руб.

Воронежские
300г
P руб.

Чародейка
250г
R руб.

Факел
150г
B руб.

Ласточка
200г
L руб.

Стоимость упаковки U руб.

Сколько времени в минутах затратит школьник на дорогу от школы до стадиона, если известна длина этого расстояния S км и средняя скорость движения школьника V км/ч.
В квадрат вписана окружность (рис. 1.3). Определить площадь заштрихованной части фигуры, если известна длина стороны квадрата.
В квадрат вписана окружность (рис. 1.3). Определить площадь заштрихованной части фигуры, если известен радиус окружности.
В квадрат вписана окружность (рис. 1.4). Определить площадь заштрихованной части фигуры, если известна длина стороны квадрата.
Рис. 1.3 Рис. 1.4 Рис. 1.5
В квадрат вписана окружность (рис. 1.5). Определить площадь заштрихованной части фигуры, если известна длина стороны квадрата.
Даны два ненулевых числа. Найти их сумму, разность, произведение и частное.
Даны два числа. Найти среднее арифметическое их квадратов и среднее арифметическое их модулей.
Скорость лодки в стоячей воде V км/ч, скорость течения реки U км/ч (U < V). Время движения лодки по озеру T1 ч, а по реке (против течения) T2 ч. Определить путь S, пройденный лодкой.
Скорость первого автомобиля V1 км/ч, второго V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили удаляются друг от друга.
Скорость первого автомобиля V1 км/ч, второго V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили первоначально движутся навстречу друг другу.
Найти периметр и площадь прямоугольного треугольника, если даны длины его катетов a и b.

2. Логическое выражение
Во всех заданиях данного пункта требуется вывести логическое значение True, если приведенное высказывание для предложенных исходных данных является истинным, и значение False в противном случае. Все числа, для которых указано количество цифр (двузначное число, трехзначное число и т.д.), считаются целыми.

Проверить истинность высказывания: «Данные числа x, y являются координатами точки, лежащей во второй координатной четверти».
Проверить истинность высказывания: «Данные числа x, y являются координатами точки, лежащей в первой или третьей координатной четверти».
Проверить истинность высказывания: «Точка с координатами (x, y) лежит внутри прямоугольника, левая верхняя вершина которого имеет координаты (x1, y1), правая нижняя (x2, y2), а стороны параллельны координатным осям».
Проверить истинность высказывания: «Данное целое число является четным двузначным числом».
Проверить истинность высказывания: «Данное целое число является нечетным трехзначным числом».
Проверить истинность высказывания: «Среди трех данных целых чисел есть хотя бы одна пара совпадающих».
Проверить истинность высказывания: «Среди трех данных целых чисел есть хотя бы одна пара взаимно противоположных».
Проверить истинность высказывания: «Сумма цифр данного трехзначного числа является четным числом».
Проверить истинность высказывания: «Сумма двух первых цифр данного четырехзначного числа равна сумме двух его последних цифр».
Проверить истинность высказывания: «Данное четырехзначное число читается одинаково слева направо и справа налево».
Проверить истинность высказывания: «Все цифры данного трехзначного числа различны».
Проверить истинность высказывания: «Цифры данного трехзначного числа образуют возрастающую последовательность».
Проверить истинность высказывания: «Цифры данного трехзначного числа образуют возрастающую или убывающую последовательность».
Проверить истинность высказывания: «Цифры данного трехзначного числа образуют арифметическую прогрессию».
Проверить истинность высказывания: «Цифры данного трехзначного числа образуют геометрическую прогрессию».
Даны координаты (как целые от 1 до 8) двух различных полей шахматной доски. Если ладья1( король2( слон3( ферзь4( конь5 за один ход может перейти с одного поля на другое, вывести логическое значение True, в противном случае вывести значение False.
3. Условный оператор
Ввести три числа. Если они могут быть длинами сторон прямоугольного треугольника, вывести их в порядке возрастания, вычислить площадь полученного треугольника.
Ввести три числа. Если они могут быть длинами сторон остроугольного треугольника, вывести их в порядке убывания, вычислить площадь полученного треугольника.
Ввести три числа. Если они могут быть длинами сторон тупоугольного треугольника, вывести их в порядке убывания, вычислить площадь полученного треугольника.
Ввести три числа. Если они могут быть сторонами равностороннего треугольника, вычислить его площадь и длину высоты. Вывести стороны, площадь и длину высоты в порядке возрастания.
Ввести три числа. Если они могут быть длинами сторон равнобедренного треугольника, вычислить длины его высот. Вывести длину основания и длины высот в порядке возрастания.
Ввести три числа. Если они могут быть длинами сторон разностороннего тупоугольного треугольника, вывести их в порядке возрастания, вычислить площадь полученного треугольника.
Ввести три числа. Если они могут быть длинами сторон равнобедренного тупоугольного треугольника, вычислить его площадь. Вывести длины сторон и площадь в порядке возрастания.
Ввести три числа. Если они могут быть длинами сторон равнобедренного остроугольного треугольника, вычислить его площадь. Вывести длины сторон и площадь в порядке возрастания.
Ввести три числа. Если они могут быть длинами сторон разностороннего остроугольного треугольника, вывести их в порядке возрастания, вычислить площадь полученного треугольника.
Даны координаты трех точек на плоскости. Если они могут быть вершинами остроугольного треугольника, вывести их в порядке убывания, вычислить площадь полученного треугольника.
Даны три числа. Если они могут быть длинами сторон треугольника, определить его вид (прямоугольный, тупоугольный, остроугольный). Вычислить длины его высот и напечатать их в порядке убывания.
Составить программу, которая определяла бы вид треугольника (равносторонний, равнобедренный, разносторонний, прямоугольный, тупоугольный, остроугольный), если по данным трём отрезкам его можно построить.
Даны координаты трех точек на плоскости. Составить программу, которая определяла бы вид треугольника (равносторонний, равнобедренный, разносторонний, прямоугольный, тупоугольный, остроугольный), если данные координаты вершин позволяют его построить.
Даны координаты трех вершин прямоугольника. Определить координаты четвертой вершины.
Даны три целых числа. Возвести в квадрат отрицательные числа и в третью степень положительные (число 0 не изменять).
Из трех данных чисел выбрать наименьшее.
Из трех данных чисел выбрать наибольшее.
Из трех данных чисел выбрать наименьшее и наибольшее.
Перераспределить значения переменных X и Y так, чтобы в X оказалось меньшее из этих значений, а в Y большее.
Значения переменных X, Y, Z поменять местами так, чтобы они оказались упорядоченными по возрастанию.
Значения переменных X, Y, Z поменять местами так, чтобы они оказались упорядоченными по убыванию.
Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной сумму этих значений, а если равны, то присвоить переменным нулевые значения.
Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной максимальное из этих значений, а если равны, то присвоить переменным нулевые значения.
Даны три переменные: X, Y, Z. Если их значения упорядочены по убыванию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное.
Даны три переменные: X, Y, Z. Если их значения упорядочены по возрастанию или убыванию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное.
Даны целочисленные координаты точки на плоскости. Если точка не лежит на координатных осях, то вывести 0. Если точка совпадает с началом координат, то вывести 1. Если точка не совпадает с началом координат, но лежит на оси OX или OY, то вывести соответственно 2 или 3.
Даны вещественные координаты точки, не лежащей на координатных осях OX и OY. Вывести номер координатной четверти, в которой находится данная точка.
На числовой оси расположены три точки: A, B, C. Определить, какая из двух последних точек (B или C) расположена ближе к A, и вывести эту точку и ее расстояние от точки A.
Даны четыре целых числа, одно из которых отлично от трех других, равных между собой. Вывести порядковый номер этого числа.
Дан номер некоторого года (положительное целое число). Вывести соответствующий ему номер столетия, учитывая, что, к примеру, началом 20 столетия был 1901 год.
Дан номер некоторого года (положительное целое число). Вывести число дней в этом году, учитывая, что обычный год насчитывает 365 дней, а високосный 366 дней. Високосным считается год, делящийся на 4, за исключением тех годов, которые делятся на 100 и не делятся на 400 (например, годы 300, 1300 и 1900 не являются високосными, а 1200 и 2000 являются).
Ввести три числа. Если они могут быть длинами сторон прямоугольного треугольника, вывести их в порядке возрастания, вычислить площадь полученного треугольника.
Ввести три числа. Если они могут быть длинами сторон остроугольного треугольника, вывести их в порядке убывания, вычислить площадь полученного треугольника.
Ввести три числа. Если они могут быть длинами сторон тупоугольного треугольника, вывести их в порядке убывания, вычислить площадь полученного треугольника.
Ввести три числа. Если они могут быть сторонами равностороннего треугольника, вычислить его площадь и длину высоты. Вывести стороны, площадь и длину высоты в порядке возрастания.
Ввести три числа. Если они могут быть длинами сторон равнобедренного треугольника, вычислить длины его высот. Вывести длину основания и длины высот в порядке возрастания.
Ввести три числа. Если они могут быть длинами сторон разностороннего тупоугольного треугольника, вывести их в порядке возрастания, вычислить площадь полученного треугольника.
Ввести три числа. Если они могут быть длинами сторон равнобедренного тупоугольного треугольника, вычислить его площадь. Вывести длины сторон и площадь в порядке возрастания.
Ввести три числа. Если они могут быть длинами сторон равнобедренного остроугольного треугольника, вычислить его площадь. Вывести длины сторон и площадь в порядке возрастания.
Ввести три числа. Если они могут быть длинами сторон разностороннего остроугольного треугольника, вывести их в порядке возрастания, вычислить площадь полученного треугольника.
Даны координаты трех точек на плоскости. Если они могут быть вершинами остроугольного треугольника, вывести их в порядке убывания, вычислить площадь полученного треугольника.
Даны три числа. Если они могут быть длинами сторон треугольника, определить его вид (прямоугольный, тупоугольный, остроугольный). Вычислить длины его высот и напечатать их в порядке убывания.
Даны координаты трех точек на плоскости. Составить программу, которая определяла бы вид треугольника (равносторонний, равнобедренный, разносторонний, прямоугольный, тупоугольный, остроугольный), если данные координаты вершин позволяют его построить.
Даны координаты трех вершин прямоугольника. Определить координаты четвертой вершины.
Даны действительные положительные числа a, b, c, x, y. Выяснить, пройдет ли кирпич с ребрами a, b, c в прямоугольное отверстие со сторонами x и y. Просовывать кирпич в отверстие разрешается только так, чтобы каждое из его ребер было параллельно или перпендикулярно каждой из сторон отверстия

4. Циклы
Составить программу вычисления суммы вида:
a) 13EMBED Equation.31415
b) 13EMBED Equation.31415
Составить программу вычисления при заданных x и a значения функции y вида:
a) 13EMBED Equation.31415;
b) 13EMBED Equation.31415.
Вычислить: 13EMBED Equation.31415;
Написать программу вычисления при заданном x величины y по формуле
13EMBED Equation.31415.
Вычислить 13EMBED Equation.31415.
Составить программу для нахождения и печати всех пифагоровых чисел, не превышающих 20.
Дано натуральное n. Вычислить значение выражения 13EMBED Equation.31415
Даны натуральное число n и действительное число x. Вычислить:
a) 13EMBED Equation.31415
b) 13EMBED Equation.31415
Дано натуральное k. Напечатать k-ую цифру последовательности 12345678910111213, в которой выписаны подряд все натуральные числа.
Вычислить x1+x2++ x20, если последовательность x1, x2, образована по следующему закону:
13EMBED Equation.31415;
x1 = 1; x2 = 0.3; xi = (i+1) Чxi – 2 , i = 3, 4, .
x1 = x2 = x3 =1; xi = (i+3) Ч (xi – 3 –1)+ (i+4) Чxi – 2, i = 4, 5, .
Дано вещественное число x и натуральное число n. Вычислить 13EMBED Equation.31415.
Даны вещественные числа a, h, натуральное число n. Вычислить 13EMBED Equation.31415, где 13EMBED Equation.31415
Дано натуральное число n. Вычислить 1(2+2(3(4++n( (2n.
При некоторых заданных x, N и E, определяемых вводом, вычислить:
a) сумму N слагаемых заданного вида;
b) сумму тех слагаемых, которые по абсолютной величине больше Е.
Для случая b выполнить суммирование для двух значений Е, отличающихся на порядок, и при этом определить количество слагаемых, включенных в сумму. Сравнить результаты с точным значением функции, для которой данная сумма определяет приближенное значение при x, лежащем в интервале (-R, R).
13EMBED Equation.31415 (R=().
13EMBED Equation.31415 (R=().
13EMBED Equation.31415 (R=1)
13EMBED Equation.31415 (R=1).
13EMBED Equation.31415(R=1).
13EMBED Equation
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Последовательности чисел
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, сколько раз в последовательности меняется знак при переходе к следующему элементу.
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, является ли эта последовательность возрастающей.
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, номер числа, по абсолютной величине самого близкого к своему номеру.
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, каких чисел в последовательности больше: положительных или отрицательных.
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, упорядочены ли положительные элементы по возрастанию.
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, равны ли все отрицательные.
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, имеют ли первое и последнее числа последовательности один знак.
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, заканчивается ли последовательность не менее чем двумя числами одного знака.
Вводится последовательность целых чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, являются ли вводимые числа числами Фибоначчи.
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, расположены ли все положительные числа после отрицательных.
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Найти разность между суммой четных и нечетных значений.
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Найти разность между суммой элементов, стоящих на четных и нечетных местах.
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Вывести числа последовательности, добавив к каждому, кроме первого, значение предыдущего.
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, образует ли эта последовательность ряд Фибоначчи.
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, сумму и количество тех из них, которые принадлежат отрезку [a,b]. a и b вводятся.
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Найти количество и сумму положительных и отрицательных.
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Найти количество и сумму элементов, равных первому отрицательному1| больших, чем первый отрицательный2| меньших, чем первый отрицательный3.
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Вывести числа последовательности, добавив к каждому, кроме последнего, значение следующего.
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Найти сумму тех из них, которые находятся, начиная с позиции i, и заканчивая позицией j. i и j вводятся. Если элементов с указанными номерами нет, сообщить об этом.
Вводится последовательность целых чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, сколько раз встречаются два равных рядом.
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Вывести для каждого количество стоящих перед ним положительных.
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, образуют ли эта последовательность арифметическую прогрессию.
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, образуют ли эта последовательность геометрическую прогрессию.
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, сколько в ней интервалов возрастания.
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, сколько из них имеют равных «соседей» слева и справа.

Строки
Дана строка. Напечатать входящие в нее слова, но в обратном порядке (сначала последнее, потом предпоследнее и т.д.).
Дана строка. Напечатать те слова этой строки, которые отличны от последнего слова и выполняется условие: в слове гласные буквы а, е, i, о, u чередуются с согласными.
Вводится строка. Если она является записью римского числа, то преобразовать ее в целое число.
Вводится 10 произвольных имен. Необходимо распечатать их в алфавитном порядке.
Замечание
Попытайтесь решить задачу, не сортируя сами имена. Поскольку требуется просто распечатать их в алфавитном порядке, заведите массив, содержащий порядковые номера имен. При необходимости перестановки, переставляйте не сами имена, а их порядковые номера. Такой подход особенно удобен, когда приходится сортировать сложные и "громоздкие" объекты.
Напишите функцию RightPosition(str1, str2: string), которая получает два параметра str1 и str2 типа string и возвращает позицию начала последнего появления str2 в str1. Например, RightPosition('Миссисипи', 'си') вернет значение 6.
Напишите функцию CountStr(str1, str2: string) которая получает два параметра str1 и str2 типа string и возвращает число, указывающее, сколько раз str2 встречается в str1. Функция не должна изменять свои параметры. Кроме того, любая литера в str1 может учитываться не более чем в одном вхождении str2. Например, CountStr('балалайка', 'ала') должна возвращать 1, а не 2.
Напишите функцию NonAlpha(str: string), которая получает параметр str типа string и возвращает позицию его первой литеры, не являющейся буквой (как латинского, так и русского алфавитов) строчной или прописной. Например, NonAlpha( 'stev7n' ) дает 5.
Напишите функцию Splite(name: string; var first, last : string), которая из параметра name, хранящего имя и фамилию человека, извлекает их в first (имя) и last (фамилия). Имя и фамилия разделены некоторым числом пробелов. Например, после обращения Splite('Вася Иванов', str1, str2) в str1 должно оказаться 'Вася', а в str2  'Иванов'. Необходимо также предусмотреть обнаружение и обработку некорректных данных. В частности, если в name вообще не окажется ни одного пробела, процедура должна установить в обоих выходных параметрах специальное значение 'error' (ошибка). Какие еще ошибочные ситуации следует учесть?
Пусть даны две строки str1 и str2. Необходимо выяснить, можно ли из str1 путём перестановки литер получить строку str2. Напишите подпрограмму, которая решала бы указанную задачу.
Напишите процедуру SortMid, которая сортировала бы ряд из n строк в алфавитном порядке, основываясь на k–ой литере каждой строки, где k является параметром, передаваемым процедуре SortMid. Например, если k=3, то элементы ряда должны быть отсортированы по возрастанию значения в третьей литере каждой строки. Если длина строки меньше k, то будем предполагать, что его k–ой литерой, реально не существующей, служит пробел.
Напишите процедуру сортировки строк в обратном алфавитном порядке.
Напишите подпрограммы Encode (зашифровать) и Decode (расшифровать), которые получают два параметра str и alpha типа string. В первом параметре задается слово, подлежащее шифрованию (расшифровке), второй представляет собой некоторую перестановку 26 латинских букв алфавита. Принцип преобразования для шифрации состоит в следующем. Если некоторая буква в str является k–ой буквой в обычном алфавите, то вместо нее должна быть взята буква из k–ой позиции "нового" алфавита alpha. Для подпрограммы дешифровки используется обратный принцип.
Расширим предыдущую задачу. Напишите программу для тестирования Encode и Decode. Она должна начинаться с ввода ключа для шифрования и дешифрации 26–буквенной строки. Затем вводится серия строк, подлежащих обработке. Над каждой строкой применяется сначала операция шифрования, а затем дешифрации. При этом необходимо контролировать некоторые ошибочные ситуации. Например, каждая содержащаяся в ключе буква должна быть представлена только один раз.
Написать программу, которая будет вводить значения типа string и определять, является ли каждое из них правильным идентификатором, удовлетворяющем требованиям Паскаля. Напомним, вкратце правила построения имен. Всякое имя может содержать от 1 до 127 литер; первой литерой должна быть буква (строчная или прописная); любая другая литера (начиная со второй) может быть буквой, цифрой (от 0 до 9) или знаком подчеркивания. Если обнаружена ошибка, необходимо выдать сообщение, квалифицирующее ее.
Усовершенствуйте программу из предыдущей задачи, чтобы она умела распознавать служебные слова Паскаля и отвергать попытки их предъявления. Для простоты ограничьте набор служебных слов, взяв за основу только некоторые из них.
Усовершенствуйте программу из задачи 18, сделав возможным автоматическое преобразование неправильных идентификаторов в синтаксически допустимые. Если исходная строка имеет слишком большую длину, укоротите её до допустимого размера путем отбрасывания избыточных литер; если она пуста, добавьте букву 'x'. Если первая литера не является буквой, то вставьте перед ней 'x'. Если в строке присутствуют какие-то "незаконные" литеры, удалите их.
Задано десять русских имен. В тексте проверить, все ли эти имена написаны с большой буквы, если нет, то исправить.
Дана строка. Определить, стоят ли в данной строке подряд символы а и б.
Дана строка. Определить, есть ли в этой строке символы А и Е, а также количество каждого из этих символов.
Дана строка. Определить, сколько в ней знаков '+', и заменить их на '–'.
Дана строка. Определить, есть ли в ней все буквы, входящие в слово шина.
Дана строка. Определить, какие символы и сколько раз встречаются в данной строке.
В заданной строке установить пробелы вместо символов, номера позиций которых при делении на 4 дают в остатке 3.
Дана строка. Найти слова, которые имеют четную длину и начинаются с заданного символа.
Вывести строку длины N (N четное), которая состоит из чередующихся символов C1 и C2, начиная с C1.
Дана строка. Вывести строку, содержащую те же символы, но расположенные в обратном порядке.
Дана строка. Вывести коды ее первого и последнего символа.
Дана строка. Подсчитать количество содержащихся в ней цифр1|прописных букв2|строчных букв3.
Дана строка. Преобразовать все строчные1|прописные2 латинские3|русские4 буквы в прописные1|строчные2.
Дана строка. Если она представляет собой запись целого числа, то вывести 1; если вещественного (с дробной частью), то вывести 2; если строку нельзя преобразовать в число, то вывести 0.
Дано целое число. Вывести набор символов, содержащий цифры этого числа в исходном1|обратном2 порядке.
Дана строка S, изображающая вещественное число в формате с плавающей точкой, и целое число N (N> 0). Вывести набор символов, изображающих первые N цифр дробной части этого вещественного числа (без округления).
Дана строка, изображающая целое число. Вывести сумму цифр этого числа.
Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N, то отбросить первые символы, если длина строки S меньше N, то в ее начало добавить символы . (точка).
Даны два числа: N1 и N2, и две строки: S1 и S2. Получить из этих строк новую строку, объединив N1 первых символов строки S1 и N2 последних символов строки S2.
Даны две строки: S1 и S2. Проверить, содержится ли строка S2 в строке S1. Если да, то вывести номер позиции, начиная с которой S2 содержится в S1, если нет, то вывести 0.
Даны две строки: S1 и S2. Определить количество вхождений строки S2 в строку S1.
Дана строка S и символ C. Удвоить каждое вхождение символа C в строку S.
Даны строки S1, S2 и символ C. Перед1|после2 каждого вхождения символа C в строку S1 вставить строку S2.
Даны две строки: S1и S2. Удалить из строки S1 первую1| последнюю2| все3 подстроки, совпадающие с S2. Если таких подстрок нет, то вывести S1без изменений.
Даны три строки: S1, S2, S3. Заменить в строке S1 первое1| последнее2| все3 вхождения строки S2 на S3.
Дана строка. Вывести подстроку, расположенную между первой и второй1|последней2 точками исходной строки. Если в строке менее двух точек, то вывести всю исходную строку.
Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов в строке.
Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов, которые [начинаются и заканчиваются одной и той же буквой]1|[содержат хотя бы одну букву А]2.
Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов, которые содержат ровно три буквы А .
Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить длину самого короткого1|длинного2 слова.
Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова, но разделенные одним символом . (точка). В конце точку не ставить.
Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова (разделенные одним пробелом), но расположенные в обратном порядке.
Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Преобразовать каждое слово в строке, удалив из него все последующие1|предыдущие2 вхождения первой1|последней2 буквы этого слова (количество пробелов между словами не изменять).
Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова (разделенные одним пробелом), но расположенные в алфавитном порядке.
Дана строка-предложение на русском языке. Преобразовать строку так, чтобы каждое слово начиналось с заглавной буквы.
Дана строка-предложение на русском языке. Подсчитать количество содержащихся в строке [знаков препинания]1|[гласных букв]2.
Дана строка-предложение на русском языке. Вывести самое короткое1|длинное2 слово в предложении (если таких слов несколько, то вывести первое3|последнее4 из них).
Дана строка-предложение, содержащая избыточные пробелы. Преобразовать ее так, чтобы между словами был ровно один пробел.
Дана строка, содержащая полное имя файла, то есть имя диска, список каталогов (путь), собственно имя и расширение. Выделить из этой строки имя1|расширение2 файла.
Дана строка, содержащая полное имя файла. Выделить из строки название последнего каталога (без символов \ ). Если файл содержится в корневом каталоге, то вывести символ \.
Дана строка-предложение на русском языке. Зашифровать ее, выполняя циклическую замену каждой буквы на следующую за ней в алфавите и сохраняя при этом регистр букв (А перейдет в Б , а в б , Б в В , я в а и т.д.). Букву ё в алфавите не учитывать (е должна переходить в ж). Знаки препинания и пробелы не изменять.
Дана строка-предложение на русском языке и число k (0 < k < 10). Зашифровать строку, выполнив циклическую замену каждой буквы на букву того же регистра, расположенную в алфавите на kй позиции после шифруемой буквы (например, для k = 2 А перейдет в В , а в в , Б в Г , я в б и т.д.). Букву ё в алфавите не учитывать, знаки препинания и пробелы не изменять.
Дано зашифрованное предложение на русском языке (способ шифрования описан в задании 41) и кодовое смещение k (0 < k < 10). Расшифровать предложение.
Дано зашифрованное предложение на русском языке (способ шифрования описан в задании 41) и его расшифрованный первый символ C. Определить кодовое смещение k и расшифровать предложение.
Дана строка-предложение. Зашифровать ее, поместив вначале все символы, расположенные на четных местах, а затем, в обратном порядке, все символы, расположенные на нечетных местах (например, строка Программа превратится в ргамамроП ).
Дано предложение, зашифрованное по правилу, описанному в предыдущем задании. Расшифровать это предложение.
Дана строка, содержащая несколько круглых скобок. Если скобки расставлены правильно (то есть каждой открывающей соответствует одна закрывающая), то вывести число 0. В противном случае вывести или номер позиции, в которой расположена первая ошибочная закрывающая скобка, или, если закрывающих скобок не хватает, число –1.
Дана строка, содержащая комментарии типа {...}. Создать другую строку, содержащую тот же текст, но без комментариев.
Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить, сколько слов в строке являются палиндромами (перевертышами), и вывести эти слова.
Дана строка, содержащая некоторый текст. Определить, является ли данный текст палиндромом, т.е. читается ли он слева направо так же, как и справа налево (например: А роза упала на лапу Азора).
Дана строка, состоящая из латинских букв, в которой слова разделены пробелами (одним или несколькими). Напечатать те слова строки, которые отличны от последнего слова и удовлетворяют следующему свойству:
слово симметрично;
первая буква слова входит в него еще раз;
слово совпадает с начальным отрезком латинского алфавита (a, ab, abc и т.д.);
слово совпадает с конечным отрезком латинского алфавита (z, yz, xyz и т.д.);
длина слова максимальна;
в слове нет повторяющихся букв;
каждая буква входит в слово не менее двух раз;
в слове гласные буквы (a, e, i, o, u) чередуются с согласными.
Дана строка, ограниченная точкой, в которой слова разделены пробелом. Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них по следующему правилу:
a) перенести первую букву в конец слова;
b) перенести последнюю букву в начало слова;
c) удалить из слова первую букву;
d) удалить из слова последнюю букву;
e) удалить из слова все последующие вхождения первой буквы;
f) удалить из слова все предыдущие вхождения последней буквы;
g) оставить в слове только первые вхождения каждой буквы;
h) если слово нечетной длины, то удалить его среднюю букву.

Входные строковые параметры, если они не изменяются в теле процедуры/функции, для экономии памяти рекомендуется описывать как параметры-константы.
Описать функцию IsIdent(S) целого типа, проверяющую, является ли строка S допустимым идентификатором Паскаля. При утвердительном ответе возвращается 0. Если S является пустой строкой, то возвращается –1, если строка начинается с цифры, то возвращается –2. Если S содержит недопустимые символы, то возвращается номер первого недопустимого символа.
Описать функцию FillStr(S, Len) строкового типа, возвращающую строку длины Len, заполненную повторяющимися копиями строки-шаблона S (последняя копия строки-шаблона может входить в результирующую строку частично).
Описать процедуру UpCase(S)1|LowCase(S)2, преобразующую все строчные1|прописные2 буквы строки S в прописные1|строчные2 (остальные символы строки S не изменяются).
Описать процедуру TrimL(S)1|TrimR(S)2|Trim(S)3, удаляющую в строке S начальные1|конечные2|[начальные и конечные]3 пробелы.
Описать функцию PosLast(subS, S) целого типа, возвращающую номер позиции, с которой в строке S содержится последнее вхождение подстроки subS. Если в строке S отсутствуют подстроки subS, то функция возвращает 0.
Описать функцию PosK(subS, S, k) целого типа, возвращающую номер позиции, с которой в строке S содержится k-е вхождение подстроки subS (k > 0). Если количество вхождений subS в строке S меньше k, то функция возвращает 0.
Описать функцию WordN(S, k) строкового типа, возвращающую kе слово строки S (под словом понимается набор символов, не содержащий пробелов и ограниченный пробелами или началом/концом строки). Если количество слов в строке меньше k, то функция возвращает пустую строку. Используя эту функцию, выделить из данной строки S слова с номерами k1, k3, k3.
Описать процедуру SplitStr(S, W, N), которая формирует по данной строке S набор слов W, входящих в S (W выходной строковый массив; N его размер; предполагается, что N не будет превышать 10). Под словом понимается набор символов, не содержащий пробелов и ограниченный пробелами или началом/концом строки. Используя эту функцию, вывести количество слов N, содержащихся в данной строке S, и сами эти слова.

Одномерные массивы
Даны действительные числа x1, x2, ... , xn, y1, y2, ... , yn, r1, r2, ... , rn. Выяснить, есть ли на плоскости точка, принадлежащая всем кругам с1, с2, ... , сn, где ci имеет центр с координатами xi, yi и радиус ri.
Даны действительные числа a1, a2, ... , a2n. Эти точки определяют n интервалов числовой оси (a1, a2), (a3, a4), ..., (a2n-1, a2n). Является ли интервалом объединение этих интервалов? Если да, то указать концы этого интервала.
Даны действительные числа a1, a2, ... , a2n. Эти точки определяют n интервалов числовой (a1, a2), (a3, a4), ..., (a2n-1, a2n). Имеются ли точки числовой оси, принадлежащие по крайней мере трем каким-нибудь из данных интервалов. Если да, то указать какую-нибудь из этих точек.
Даны целые числа a1, a2, ..., an. Пусть M наибольшее, m наименьшее из них. Получить в порядке возрастания все целые числа из интервала (m, M), которые не входят в последовательность a1, a2, ..., an.
Даны координаты центров n окружностей и их радиусы. Определить число пересекающихся окружностей.
Все отрицательные элементы массива X перенести в его начало, а все остальные в конец, сохраняя исходное взаимное расположение как среди отрицательных, так и среди остальных элементов. Дополнительный массив не заводить.
Переменной t присвоить значение true, если в массиве нет нулевых элементов и при этом положительные элементы чередуются с отрицательными и значение false в противном случае.
Имеются десять гирь весом a1, a2, ..., a10. Обозначим через ck число способов, которыми можно составить вес k, то есть ck это число решений уравнения a1x1 + a2x2 +...+ a10x10 = k, где xi может принимать значения 0 или 1 (i=1,..., 10). Получить с0, с1, ..., с10.
Прямая на плоскости может быть задана уравнением ax + by = c, где a, b одновременно не равны нулю, a, b, c целые. Пусть даны коэффициенты нескольких прямых a1, b1, c1, a2, b2, c2, ..., an, bn, cn. Определить, имеются ли среди этих прямых совпадающие или параллельные.
Прямая на плоскости может быть задана уравнением ax + by = c, где a, b одновременно не равны нулю, a, b, c целые. Пусть даны коэффициенты нескольких прямых a1, b1, c1, a2, b2, c2, ..., an, bn, cn. Определить, имеются ли среди этих прямых три прямые, пересекающиеся в одной точке.
Даны две последовательности по n чисел в каждой. Найти наименьшее среди тех чисел первой последовательности, которые не входят во вторую (считать, что хотя бы одно такое число есть).
Даны натуральное число n, целые числа a, x1, x2, ..., xn. Если в последовательности x1, x2, ..., xn есть хотя бы один член, равный a, то получить сумму всех членов, следующих за первым таким членом, иначе найти минимальный среди нечетных чисел последовательности x1, x2, ..., xn.
Даны целые числа a1, a2, ..., an, среди которых могут быть повторяющиеся. Составить новый массив из чисел, которые входят в последовательность по одному разу.
Даны целые числа a1, a2, ..., an, среди которых могут быть повторяющиеся. Составить новый массив из чисел, взятых по одному из каждой группы равных членов данной последовательности.
Даны натуральные числа k, n, действительные числа a1, a2, ..., akn. Получить последовательность min(a1, a2, ..., ak), min(ak+1, ak+2, ..., a2k), ..., min(ak(n-1)+1, ..., akn).
Даны натуральные числа k, n, действительные числа a1, a2, ..., akn. Получить последовательность последовательность max(a1, a2, ..., ak), max (ak+1, ak+2, ..., a2k), ..., max (ak(n-1)+1, ..., akn).
Даны натуральные числа k, n, действительные числа a1, a2, ..., akn. Получить min(a1 + a2 + ... + ak, ak+1 + ak+2 + ... + a2k, ..., ak(n-1)+1 + ... + akn).
Сформировать одномерный массив размера N по следующему принципу: четные элементы равны квадрату индекса, а нечетные его обратной величине.
Заполнить одномерный массив размера N так, чтобы каждый элемент с четным индексом был равен половине своего номера, а каждый элемент с нечетным индексом 0.
Даны два массива А(N) и В(N).Сформировать С(N) такой, что С[i]=А[i]/B[i], если i нечетное, и C[i]=A[i]*B[i], если i четное.
Дан массив размера N. Вывести его элементы в обратном порядке.
Подсчитать сумму элементов одномерного массива.
Подсчитать сумму элементов двухмерного массива.
Найти максимальный элемент в массиве. Найти индекс максимального элемента.
Найти минимальный элемент в массиве. Найти индекс минимального элемента.
Поменять местами минимальный и максимальный элементы массива.
Найти среднее арифметическое элементов массива.
Вывести всех элементов массива из интервала C..D.
Массив размера N заполнен случайными числами от –15 до 15.Определить количество отрицательных элементов и их индексы.
Дан массив размера N. Осуществить циклический сдвиг элементов массива влево (вправо) на одну позицию.
Дан массив размера N и число k (0 < k < 5, k < N). Осуществить циклический сдвиг элементов массива влево (вправо) на k позиций.
Вывести наиболее часто встречающийся элемент массива.
Проверить, все ли элементы массива различны.
Проверить, имеется ли в массиве размера N. хотя бы одна пара чисел, совпадающих по величине.
Дан массив размера N. Определить индексы всех равных элементов.
Дан массив размера N. Вывести вначале его элементы с четными (нечетными) индексами, а затем с нечетными (четными).
Дан целочисленный массив A размера N. Вывести номер первого (последнего) из тех его элементов A[i], которые удовлетворяют двойному неравенству: A[1] < A[i] < A[N]. Если таких элементов нет, то вывести 0.
Дан целочисленный массив A размера N и два числа x и y (x < y). Найти номера элементов, удовлетворяющих условию x< A[i] < y.
Дан целочисленный массив размера N. Преобразовать его, прибавив к четным (нечетным) числам первый (последний) элемент. Первый и последний элементы массива не изменять.
Дан целочисленный массив размера N. Вывести вначале все его четные (нечетные) элементы, а затем нечетные (четные).
Дан целочисленный массив размера N. Изменить знак всех элементов с четными индексами на противоположный.
Дан целочисленный массив размера N. Заменить нулевые элементы квадратами их индексов.
Дан целочисленный массив размера N. Поменять местами соседние четные и нечетные по номеру элементы. Указание: дополнительные массивы не использовать.
Заменить все положительные (отрицательные) элементы целочисленного массива на значение минимального (|максимального).
Дан массив размера N. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами.
Проверить, образуют ли элементы целочисленного массива размера N арифметическую прогрессию. Если да, то вывести разность прогрессии, если нет вывести 0.
Проверить, образуют ли элементы целочисленного массива размера N геометрическую прогрессию. Если да, то вывести знаменатель прогрессии, если нет вывести 0.
Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем четные и нечетные числа. Если чередуются, то вывести 0, если нет, то вывести номер первого элемента, нарушающего закономерность.
Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем положительные и отрицательные числа. Если чередуются, то вывести 0, если нет, то вывести номер первого элемента, нарушающего закономерность.
Дан массив ненулевых целых чисел размера N. Определить число соседств из двух чисел разного знака.
Дан массив размера N. Вычислить сумму произведений всех пар соседних чисел.
Дан массив размера N. Вычислить сумму произведений всех троек соседних чисел.
Дан массив размера N. Определить количество пар соседних чисел, являющихся противоположными.
Дан массив размера N. Определить произведение нечетных элементов, имеющих четные индексы.
Дан массив размера N. Найти количество его локальных минимумов.
Дан массив размера N. Найти количество его локальных максимумов.
Дан массив размера N. Найти максимальный из его локальных минимумов.
Дан массив размера N. Найти минимальный из его локальных максимумов.
Дан массив размера N. Определить количество участков, на которых его элементы монотонно возрастают.
Дан массив размера N. Определить количество участков, на которых его элементы монотонно убывают.
Дан массив размера N. Определить количество его промежутков монотонности (то есть участков, на которых его элементы возрастают или убывают).
Дано вещественное число R и массив размера N. Найти элемент массива, который наиболее близок к данному числу.
Дано вещественное число R и массив размера N. Найти элемент массива, который наименее близок к данному числу.
Дано вещественное число R и массив размера N. Найти два элемента массива, сумма которых наиболее близка к данному числу.
Дано вещественное число R и массив размера N. Найти два элемента массива, сумма которых наименее близка к данному числу.
Дан массив размера N. Найти номера двух ближайших чисел из этого массива.
Дан целочисленный массив размера N. Определить максимальное количество его одинаковых элементов.
Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся менее двух раз.
Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся более двух раз.
Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся ровно два раза.
Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся ровно три раза.
Дан целочисленный массив размера N, содержащий большое количество нулевых элементов. Заменить все группы подряд встречающихся нулей на один нуль.
Дан целочисленный массив размера N, содержащий большое количество нулевых элементов. Заменить группы элементов, состоящие из нечетного количества нулей, на один нулевой элемент, а из четного на два.
Дан целочисленный массив размера N, содержащий большое количество нулевых элементов. Заменить все группы подряд встречающихся нулей на элемент, состоящий из двух цифр, где первая цифра 0, а вторая количество нулей в группе.
Дан целочисленный массив размера N. Если он является перестановкой, то есть содержит все числа от 1 до N, то вывести 0, в противном случае вывести номер первого недопустимого элемента.
Дан массив размера N. Преобразовать его, вставив перед1|после2 каждого положительного3|отрицательного4 элемента нулевой элемент.
Дан целочисленный массив размера N. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии количество этих элементов (длина серии может быть равна 1). Вывести массив, содержащий длины всех серий исходного массива.
Дан целочисленный массив размера N. Преобразовать массив, увеличив1|уменьшив2 каждую его серию на один элемент.
Дан целочисленный массив размера N. Преобразовать массив, увеличив первую1|последнюю2|все3 серии наибольшей длины на один элемент.
Дан целочисленный массив размера N. Вставить перед1|после2 каждой серии нулевой элемент.
Дано число k и целочисленный массив размера N. Поменять местами первую1|последнюю2 и k-ю серии массива. Если серий в массиве меньше k, то вывести массив без изменений.
Дано число k и целочисленный массив размера N. Удалить из массива все серии, длина которых меньше1|равна2|больше3 k.
Дано число k и целочисленный массив размера N. Заменить каждую серию, длина которой меньше1|равна2|больше3 k, на один нулевой элемент.
Даны два массива A и B размера N, элементы которых упорядочены по возрастанию1|убыванию2. Объединить эти массивы так, чтобы результирующий массив остался упорядоченным.
Дан массив размера N. Вывести индексы массива в том порядке, в котором соответствующие им элементы образуют возрастающую1|убывающую2 последовательность.
Дана точка A и  массив B из N точек. Найти номер точки из массива B, наиболее близкой1|удаленной2 от точки A.
Дан массив из N точек. Среди всех точек этого массива, лежащих в первой1|второй2|третьей3|четвертой4 четверти, найти точку, наиболее близкую5|удаленную6 от начала координат. Если таких точек нет, то вывести точку с нулевыми координатами.
Дан массив из N точек. Найти пару различных точек этого массива с минимальным1|максимальным2 расстоянием между ними и само это расстояние (точки выводятся в порядке возрастания индексов.
Дан массив из N точек. Найти такую точку из данного массива, сумма расстояний от которой до остальных его точек минимальна1|максимальна2, и саму эту сумму.
Даны множества A и B, состоящие соответственно из N1 и N2 точек. Найти минимальное1|максимальное2 расстояние между точками этих множеств и сами точки, расположенные на этом расстоянии.
Дано множество A из N точек. Найти наименьший1|наибольший2 периметр треугольника, вершины которого принадлежат различным точкам множества A, и сами эти точки (точки выводятся в том же порядке, в котором они перечислены при задании множества A).

Процедуры и функции

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

Дано число k (0 < k < n) и матрица размера nЧm. Найти сумму и произведение элементов k-го столбца данной матрицы.
Дана матрица размера nЧm. Найти суммы элементов всех ее четных1|нечетных2 строк3|столбцов4.
Дана матрица размера nЧm. Найти минимальное1|максимальное2 значение в каждой строке3|столбце4.
Дана матрица размера nЧm. В каждой строке1|столбце2 найти количество элементов, больших3|меньших4 среднего арифметического всех элементов этой строки1|столбца2.
Дана матрица размера nЧm. Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке1|столбце2.
Дана матрица размера nЧm. Найти минимальное1|максимальное2 значение среди сумм элементов всех ее строк3|столбцов4 и номер строки3|столбца4 с этим минимальным1|максимальным2 значением.
Дана матрица размера nЧm. Найти минимальный1 или максимальный2 среди максимальных1 или минимальных2 элементов каждой строки3 или столбца4.
Дана целочисленная матрица размера nЧm. Вывести номер ее первой1|последней2 строки3|столбца4, содержащего равное количество положительных и отрицательных элементов (нулевые элементы не учитываются). Если таких строк3|столбцов4 нет, то вывести 0.
Дана матрица размера nЧm. Вывести номер ее первой1|последней2 строки3|столбца4, содержащего только положительные элементы. Если таких строк3|столбцов4 нет, то вывести 0.
Дана целочисленная матрица размера NЧM. Различные строки (столбцы) матрицы назовем похожими, если совпадают множества чисел, встречающихся в этих строках (столбцах). Найти количество строк1|столбцов2, похожих на первую3|последнюю4 строку1|столбец2.
Дана целочисленная матрица размера NЧM. Найти количество ее строк1|столбцов2, все элементы которых различны.
Дана целочисленная матрица размера NЧM. Вывести номер ее первой1|последней2 строки3|столбца4, содержащего максимальное количество одинаковых элементов.
Дана квадратная матрица порядка N. Найти сумму элементов ее главной1|побочной2 диагонали.
Дана квадратная матрица порядка N. Найти суммы элементов ее диагоналей, параллельных главной1|побочной2 (начиная с одноэлементной диагонали A[1,N]1 | A[1,1]2).
Дана квадратная матрица порядка I. Вывести минимальные1|максимальные2 из элементов каждой ее диагонали, параллельной главной3|побочной4 (начиная с одноэлементной диагонали A[1,M]3 | A[1,1]4).
Дана квадратная матрица порядка M. Заменить нулями элементы матрицы, лежащие ниже1|выше2 главной3|побочной4 диагонали.
Дана квадратная матрица порядка M. Заменить нулями элементы, лежащие одновременно выше1|ниже2 главной диагонали (включая эту диагональ) и выше3|ниже4 побочной диагонали (также включая эту диагональ).
Дана квадратная матрица порядка M. Зеркально отразить ее элементы относительно [горизонтальной оси симметрии]1|[вертикальной оси симметрии]2|[главной диагонали]3|[побочной диагонали]4 матрицы.
Дана квадратная матрица порядка M. Повернуть ее на 901|1802|2703 градусов в положительном направлении.
Дана матрица размера NЧM. Вывести количество строк1|столбцов2, элементы которых монотонно возрастают3|убывают4.
Дана матрица размера NЧM. Найти минимальный1|максимальный2 среди элементов тех строк3|столбцов4, которые упорядочены либо по возрастанию, либо по убыванию. Если такие строки3|столбцы4 отсутствуют, то вывести 0.
Даны два числа k1 и k2 и матрица размера NЧM. Поменять местами строки1|столбцы2 матрицы с номерами k1 и k2.
Дана матрица размера NЧM. Поменять местами строки1|столбцы2, содержащие минимальный и максимальный элементы матрицы.
Дана матрица размера NЧM. Поменять местами столбец с номером 11|M2 и первый3|последний4 из столбцов, содержащих только положительные элементы.
Дано число k и матрица размера NЧM. Удалить строку1|столбец2 матрицы с номером k.
Дана матрица размера NЧM. Удалить строку1|столбец2, содержащий минимальный3|максимальный4 элемент матрицы.
Дана матрица размера NЧM. Удалить первый1|последний2|все3 столбцы, содержащие только положительные элементы.
Дано число k и матрица размера NЧM. Перед1|после2 строки3|столбца4 матрицы с номером k вставить строку3|столбец4 из нулей.
Дана матрица размера NЧM. Продублировать строку1|столбец2 матрицы, содержащий ее минимальный3|максимальный4 элемент.
Дана матрица размера NЧM. Перед1|после2 первого3|последнего4 столбца, содержащего только положительные элементы, добавить столбец, состоящий из единиц.
Дана целочисленная матрица размера NЧM. Найти элемент, являющийся максимальным в своей строке и минимальным в своем столбце. Если такой элемент отсутствует, то вывести 0.
Дана матрица размера NЧM. Элемент называется локальным минимумом (максимумом), если он меньше (больше) всех окружающих его элементов. Заменить все локальные минимумы1|максимумы2 данной матрицы на 0.
Дана матрица размера NЧM. Поменять местами ее строки1|столбцы2 так, чтобы их минимальные3|максимальные4 элементы образовывали возрастающую5|убывающую6 последовательность.
Даны два упорядоченных по возрастанию массива A и B. Получить из них путем слияния упорядоченный по возрастанию массив C; совпадающие элементы вставлять единожды. Подсчитать количество элементов в массиве C.
Из двух упорядоченных по невозрастанию массивов A(m) и B(n) получить путем слияния упорядоченный по убыванию массив C; удаляемые элементы собрать в массиве D. Подсчитать количество элементов в массивах C и D.
Путем слияния из возрастающего A(m) и невозрастающего B(n) массивов получить возрастающий массив C (с удалением совпадающих элементов). Подсчитать количество элементов в массиве С.

Матрицы

Дано натуральное число n. Получить вещественную матрицу A, для которой
13EMBED Equation.31415;
13EMBED Equation.31415

Дана вещественная матрица A. Получить матрицу A(=B(C, где
13EMBED Equation.31415

Получить вещественную матрицу A размерности 7(7, первая строка которой задается формулой a1j = 2j+3, (j = 1, ..., 7), вторая строка задается формулой 13EMBED Equation.31415 (j = 1, ..., 7), а каждая следующая строка есть сумма двух предыдущих.
Дано натуральное число n и вещественная матрица размера n(n. Найти среднее арифметическое:
a) каждого из столбцов;
b) каждого из столбцов, имеющих четные номера.
Дано натуральное число n. Выяснить, сколько положительных элементов содержит матрица A размерности n(n, если
13EMBED Equation.31415
13EMBED Equation.31415
13EMBED Equation.31415
Дана действительная матрица размера n(m, в которой не все элементы равны нулю. Получить новую матрицу путем деления всех элементов данной матрицы на ее наибольший по модулю элемент.
Даны натуральное число m, числа a1am и целочисленная квадратная матрица порядка m. Строку с номером i назовем отмеченной, если ai > 0, и неотмеченной в противном случае. Нужно все элементы, расположенные в отмеченных строках матрицы, преобразовать по правилу: отрицательные элементы заменить на –1, положительные на 1, а нулевые оставить без изменения.
См. условие задачи 7. Подсчитать число отрицательных элементов матрицы, расположенных в отмеченных строках.
Дана вещественная квадратная матрица порядка N. Заменить нулями все ее элементы, расположенные на главной диагонали и выше нее.
Даны вещественные числа x1,, x8. Получить квадратную матрицу порядка 8, образованную по правилу:
13EMBED Equation.31415

13EMBED Equation.31415

Будем называть соседями элемента с индексами i, j некоторой матрицы такие элементы, индексы которых отличатся от i, j не более чем на единицу. Для данной целочисленной матрицы А (aij) размерности m(m найти матрицу В, состоящую из нулей и единиц, элемент которой bij равен единице, когда среди соседей aij есть не менее двух совпадающих с aij.
Элемент матрицы назовем седловой точкой, если он является наименьшим в своей строке и одновременно наибольшим в своем столбце или, наоборот, является наибольшим в своей строке и наименьшим в своем столбце. Для заданной целой матрицы размером N ( M напечатать индексы всех ее седловых точек.
Выполнить следующие задания, используя процедуры и функции.
Для заданной вещественной матрицы определить, образуют ли ее элементы упорядоченную последовательность следующего вида:



В квадратной матрице определить количество строк
a) упорядоченных по возрастанию;
b) упорядоченных по убыванию;
c) состоящих из равных элементов;
d) неупорядоченных.
Использовать функцию, определяющую свойство каждой строки.
Задано конечное множество имен жителей некоторого города, причем для каждого из жителей перечислены имена его детей. Жители А и Б называются родственниками, если:
либо А ребенок Б
либо Б ребенок А
либо существует некий В такой, что А является родственником В, а В является родственником Б.
Перечислить все пары жителей города, которые являются родственниками.
В матрице А(n(n) определить количество строк, элементы которой образуют арифметическую прогрессию. Использовать подпрограмму проверки строки.
В заданной матрице А(n(n) найти максимум из всех минимальных элементов матрицы по столбцам.
В заданной матрице А(n(n) найти минимум всех сумм абсолютных величин элементов матрицы по столбцам. Для нахождения суммы абсолютных величин столбца использовать функцию.
Подсчитать количество строк матрицы А(n(n), элементы которых образуют монотонную последовательность. Для определения монотонности использовать процедуру.
Уплотнить матрицу А(n(n) влево и вверх. Для выявления нулевых строк и столбцов и столбцов использовать подпрограмму.
Матрица А(n(n) просматривается сверху вниз про строкам. Найти скалярное произведение строки и столбца, соответствующих строке с первым найденным отрицательным элементом и последним нулевым.
Упорядочить строки матрицы A(m, n) по неубыванию суммы элементов строк.
Упорядочить строки матрицы A(m, n) по неубыванию их евклидовых норм.
Упорядочить строки матрицы A(m, n) по неубыванию количества их нечетных элементов.
Упорядочить строки матрицы A(m, n) по неубыванию сумм цифр элементов строк.
Проверить, есть ли в матрице А(n(n) строки, не содержащие более двух отрицательных элементов.
Дана матрица А(n(n). Построить вектор, каждый элемент которого содержит наименьший по абсолютной величине элемент строки.
Составить программу поиска минимального элемента, расположенного под главной диагональю, и максимального элемента, расположенного над главной диагональю заданной вещественной матрицы А(n(n).
Заполнить квадратную матрицу NЧN следующим образом: элементы, расположенные на главной диагонали, принять равными 1; выше главной диагонали сумме индексов; ниже  их разности.
Заполнить квадратную матрицу NЧN единицами и нулями в шахматном порядке, начиная с верхнего левого угла.
Дана матрица NЧM. Определить сумму элементов, кратных 3, и количество отрицательных элементов.
Задана квадратная матрица NЧN. Определить, где больше четных элементов: выше или ниже главной диагонали.
Дана квадратная целочисленная матрица NЧN. Найти суммы элементов строк, имеющих четные элементы на главной диагонали.
Даны две квадратных матрицы A(NЧN) и B(MЧM). Определить сумму элементов, расположенных на главных диагоналях.
Дана матрица NЧM. Определить четные элементы, имеющие нечетную сумму индексов. Показать индексы этих элементов.
Задана квадратная матрица NЧN. Найти суммы элементов тех строк, у которых элементы, расположенные на главной диагонали, равны нулю.
Дана действительная квадратная матрица NЧN. Найти максимальный элемент на главной диагонали и вывести строку, в которой он находится.
Задана квадратная матрица NЧN. Найти номер столбца К и строки L с максимальным произведением. Сформировать вектор В (2n), нечетные элементы которого равны сумме, а четные разности элементов К-го столбца и L-й строки матрицы.
В матрице A(NЧM) найти строку с максимальной суммой элементов и строку с минимальной суммой элементов. Далее сформировать вектор B(2ЧM), элементы которого чередовались бы с элементами максимальной и минимальной строк.
Дана действительная квадратная матрица NЧN. Требуется переставить строки матрицы по возрастанию первых элементов строк.
Дана действительная квадратная матрица NЧN. Требуется преобразовать матрицу: поэлементно вычесть последнюю строку из всех строк, кроме последней.
Задана прямоугольная матрица A(NЧM). Найти k номер строки с максимальной суммой элементов. Далее сформировать матрицу B(NЧM), каждый элемент строки которой равнялся бы элементу соответствующей строки матрицы А, деленному на соответствующий элемент k-й строки.
Дана квадратная матрица A(NЧN). За один просмотр элементов матрицы A(NЧN) сформировать вектор С(N), каждый j-й элемент которого равен произведению элементов j-го столбца исходной матрицы, и вектор D(N), каждый j-й элемент которого равен сумме соответствующей строки матрицы А.
Задана квадратная матрица A(NЧN). Найти k номер столбца с максимальной суммой элементов и номер строки l c минимальной суммой элементов, а также элемент с минимальным значением в матрице А. Далее сформировать вектор Р(N), каждый элемент которого равен разности соответствующих элементов k-столбца и lстроки, деленной на минимальный элемент матрицы А.
Задана квадратная матрица A(5Ч5). Сформировать вектор x(5), каждый элемент которого равен наибольшему значению элементов соответствующей строки исходной матрицы. Вычислить x1x5+ x2x4+ x3x3+ x4x2+ x5x1.
В данной целочисленной квадратной матрице A(NЧN) указать индексы всех элементов, имеющих наибольшее значение.
Даны две прямоугольные матрицы A(NЧM) и B(NЧM). Найти матрицу C(NЧM), элементы которой равны сумме соответствующих элементов матриц А и В, после чего произвести транспонирование полученной матрицы С.
Дана квадратная матрица A(NЧN). За один просмотр найти строку с минимальной суммой элементов и строку с максимальной суммой элементов и образовать произведение этих строк.

Множества
Даны три множества Х1, Х2, Х3, содержащие целые числа из диапазона 1..100. Известно, что мощность каждого из этих множеств равна 10.
Сформировать новое множество Y=(Х1 ( Х2) (Х2\ Х3), из которого выделить подмножество нечетных чисел. На экран вывести исходные и полученное множества. Значения элементов исходных множеств ввести с клавиатуры.
Даны три множества Х1, Х2, Х3, содержащие целые числа из диапазона 1..100. Известно, что мощность каждого из этих множеств равна 10.
Сформировать новое множество Y=(Х1 ( Х2) (Х2 Ч Х3) и вывести на экран его мощность. Проверить, есть ли в множестве Y числа, делящиеся на 6 без остатка. Значения элементов исходных множеств ввести с клавиатуры.
Даны два множества М и N, состоящие из 10 целых чисел из диапазона 1..100. Из данных множеств выделить соответственно подмножества М1 чисел, делящихся на 3 без остатка, и N1 чисел, делящихся на 2 без остатка. На печать вывести мощность и значения элементов множества MN= М1 ( N1.
Даны три множества Х1, Х2, Х3, содержащие целые числа из диапазона 100...200. Известно, что мощность каждого из этих множеств равна 10.
Сформировать новое множество Y=( Х1 Х2) (Х1 Х3). На печать вывести множества Х1, Х2, Х3 и Y.
Даны три множества Х1= {1,2,3,...,20}, Х2= {10,20,30,...,30} и Х3= {1,3,5,...,19,21}. Сформировать множество Y= (Х1 Х2) (Х1 Х3) (Х2 Х3), из которого выделить подмножество Y1 чисел, делящихся на 4 без остатка. На печать вывести множество Y и мощность множества Y1. Исходные множества ввести с клавиатуры.
Даны три множества Х1= {1,2,3,...,20}, Х2= {10,20,...,190,200} и Х3= {10,11,12,...40}.
Сформировать множество Y= (Х2 Х3)\(( Х1 Х2) (Х1 Х3)) и множество Y1, состоящее из элементов Y, деленных на 2. Если полученное в результате деления число не целое, то округлить его до ближайшего целого. На печать вывести Y и Y1. Исходные множества ввести с клавиатуры.
Даны три множества Х1= {2,4,6,8,10}, Х2= {1,2,3,4,5} и Х3= {2,3,5,7,8}. Сформировать множество Y= (Х2\ Х3) (Х1\ Х3). На печать вывести Y и его мощность. Исходные множества описать как типизированные константы.
Разработать программу для определения, какому алфавиту (латинскому или русскому) принадлежит введенный с клавиатуры символ. На печать вывести введенный символ с комментарием, например, НАБРАН СИМВОЛ "А" НА РУССКОМ РЕГИСТРЕ.

Структуры
Дано
type
имя = (Аня, Валя, Женя, Петя,
Саша, Таня, Шура, Юра);
данные = struct {
пол : (муж, жен);
рост : 140..200
};
группа = array [имя] of данные;
Описать функцию СредРост(ГР), определяющую средний рост женщин из группы ГР.
Даны: структура, описывающая рациональное число
struct rac
{
int chisl;
unsigned int znam;
};

и массив из 20 таких структур. Описать логическую функцию Equal(a, b), сравнивающую два рациональных числа a и b.
Даны комплексное число z (пара вещественных чисел) и вещественное число ( > 0. Вычислить с точностью ( значение следующей комплексной функции:
3.1 sh z = z + z3 / 3! + z5 / 5! + + z2n+1 / (2n + 1)! + ;
3.2 ch z = z + z2 / 2! + z4 / 4! + + z2n / (2n)! + ;
3.3 sin z = z – z3 / 3! + z5 / 5! – + (–1)nz2n+1 / (2n + 1)! + ;
3.4 cos z = z – z2 / 2! + z4 / 4! – + (–1)nz2n / (2n)! + ;
3.5 ln (1 + z) = z – z2 / 2 + z3 / 3 – + (–1)n-1zn / n + (| z | < 1);
3.6 arctg z = z – z3 /3 + z5 /5 –+ (–1)nz2n+1 /(2n + 1) + (| z | < 1).
Даны: структура, описывающая вещественное число
struct numb
{
bool sign;
float mant;
int order;
};

и массив из таких структур.

Описать:
4.1 функцию MaxNeg(C) для нахождения максимального отрицательного числа из списка чисел С;
4.2 функцию MaxDi(C) для нахождения максимального порядка числа из списка вещественных чисел С;
Даны: структуры
struct decart
{
float x, y;
};

и
struct polar
{
float r, fi;
};
( r ( 0, -( < fi ( ( )
Описать процедуру ДП(d, p), преобразующую координаты точки на плоскости из декартовых d в полярные p, и ПД(p,d), выполняющую обратное преобразование.
Дана структура
struct Date
{ unsigned short day, month, year;}
и перечисление
enum DayOfWeek {mn, td, wd, thd, fd, std, sd};

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

Файлы
Текстовые файлы
Дан текстовый файл. Вывести количество содержащихся в нем символов и строк (маркеры концов строк eoln и конца файла eof при подсчете количества символов не учитывать).
Дана строка S и текстовый файл. Добавить строку S в начало1|конец2 файла.
Дан текстовый файл. Удалить из него первую1|последнюю2 строку.
Даны два текстовых файла с именами Name1 и Name2. Создать новый текстовый файл с именем Name3, являющийся объединением содержимого файлов Name1 и Name2 (в указанном порядке).
Даны два текстовых файла с именами Name1 и Name2. Добавить в конец файла Name1 содержимое файла Name2.
Дан текстовый файл, содержащий более трех строк. Удалить из него три последние строки.
Дано число k (< 10) и текстовый файл, содержащий более k строк. Удалить из файла первые1|последние2 k строк.
Дано число k (< 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного файла.
Дано число k и текстовый файл. Удалить из файла строку с номером k (строки нумеруются от 0). Если строки с таким номером нет, то оставить файл без изменений.
Дано число k и текстовый файл. Вставить пустую строку перед1|после2 строки с номером k (строки нумеруются от 0). Если строки с таким номером нет, то оставить файл без изменений.
Дан текстовый файл. Удалить из него пустые строки.
Дана строка S и текстовый файл. Заменить в файле все пустые строки на строку S.
Дан текстовый файл. Заменить в нем все подряд идущие пробелы на один пробел.
Дан текстовый файл, содержащий текст, выровненный по левому краю. Выровнять его по [правому краю]1|центру2, добавив в начало каждой непустой строки необходимое количество пробелов (ширину текста считать равной 50). Строки нечетной длины перед центрированием дополнять слева пробелом.
Дан текстовый файл, содержащий текст, выровненный по левому краю. Абзацы текста разделяются одной пустой строкой. Выровнять текст по ширине (то есть и по левому, и по правому краю), увеличив в каждой непустой строке (кроме последних строк абзацев) количество пробелов между словами, начиная с первого1|последнего2 пробела в строке (ширину текста считать равной 50).
Дан текстовый файл. Найти количество абзацев в тексте, если абзацы отделяются друг от друга одной или несколькими пустыми строками.
Дан текстовый файл. Найти количество абзацев в тексте, если каждый абзац начинается с красной строки (5 пробелов). Пустые строки между абзацами не учитывать.
Дан текстовый файл. Абзацы выделяются в нем с помощью красной строки (5 пробелов), а пустых строк нет. Вставить между соседними абзацами по пустой строке.
Дан текстовый файл. Создать новый файл, содержащий все знаки препинания, встретившиеся в текстовом файле (в том же порядке).
Дан текстовый файл. Вывести первое1|последнее2 слово текста наибольшей длины (с учетом знаков препинания, расположенных в начале и в конце слов).
Дано целое число N и текстовый файл. Создать новый файл, содержащий все слова длины N из исходного файла (знаки препинания, расположенные в начале и в конце слов, не учитывать). Если исходный файл не содержит слов длины N, оставить результирующий файл пустым.
Дан символ C (прописная русская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся1|оканчивающиеся2 этой буквой (как прописной, так и строчной). Знаки препинания, расположенные в начале и в конце слов, не учитывать. Если исходный файл не содержит подходящих слов, оставить результирующий файл пустым.
Дано число N и текстовый файл. Удалить из файла абзац с номером N (абзацы отделяются друг от друга одной или несколькими пустыми строками и нумеруются от 1). Пустые строки, предшествующие и следующие за удаляемым абзацем, не удалять. Если абзац с данным номером отсутствует, то оставить файл без изменений.
Дано число N и текстовый файл. Удалить из файла абзац с номером N (абзацы выделяются с помощью красной строки (5 пробелов) и нумеруются от 1). Пустые строки между абзацами не учитывать и не удалять. Если абзац с данным номером отсутствует, то оставить файл без изменений.
Дан текстовый файл, каждая строка которого изображает целое число, дополненное слева и справа несколькими пробелами. Вывести сумму этих чисел и их количество.
Дан текстовый файл, каждая строка которого изображает целое или вещественное число, дополненное слева и справа несколькими пробелами (вещественные числа имеют ненулевую дробную часть). Вывести сумму целых1|вещественных2 чисел и их количество.
Дан текстовый файл, каждая строка которого содержит изображения нескольких вещественных чисел, разделенных пробелами. Создать файл вещественных чисел, содержащий эти числа в том же порядке.
Даны два текстовых файла с именами Name1 и Name2. Добавить в начало1|конец2 каждой строки файла Name1 соответствующую строку файла Name2. Если файл Name2 короче файла Name1, то оставшиеся строки файла Name1 не изменять.
Дан текстовый файл NameT и файл целых чисел NameN. Добавить в начало1|конец2 каждой строки файла NameT изображение соответствующего числа из файла NameN. Если файл NameN короче файла NameT, то оставшиеся строки файла NameT не изменять.
Дан текстовый файл с именем NameT. В каждой его строке первые 60 позиций отводятся под текст, а оставшаяся часть под вещественное число. Создать два файла: строковый файл с именем NameS, содержащий текстовую часть исходного файла, и файл вещественных чисел с именем NameR, содержащий числа из исходного файла.
Даны два файла целых чисел одного размера с именами Name1 и Name2. Создать текстовый файл с именем NameT, содержащий изображения этих чисел, расположенные в два столбца шириной по 30 символов: первый содержит числа из файла Name1, второй из файла Name2. В начале и конце каждой строки текстового файла ввести разделитель " | " (код 124). Числа выравниваются по левому1|правому2 краю столбца.
Даны вещественные числа A, B и целое число N. Создать текстовый файл, содержащий таблицу значений функции f(x) = [sin(x)]1|[cos(x)]2|[exp(x)]3 на промежутке [A, B] с шагом (B–A)/N. Таблица состоит из двух столбцов: с аргументами x (10 позиций, из них 3 под дробную часть) и со значениями f(x) (15 позиций, из них 8 под дробную часть). Столбцы выравниваются по правому краю и разделяются 10 пробелами.
Дан текстовый файл с именем NameT, содержащий таблицу из трех столбцов вещественных чисел. Ширина столбцов таблицы и способ их выравнивания являются произвольными. Специальных символов-разделителей таблица не содержит. Создать файлы вещественных чисел с именами Name1, Name2 и Name3, каждый из которых содержит числа из соответствующего столбца таблицы.
Дан текстовый файл, представляющий собой таблицу, состоящую из трех столбцов с целыми числами. В начале и в конце каждой строки таблицы, а также между ее столбцами располагается символ-разделитель. Ширина столбцов таблицы и способ их выравнивания являются произвольными. Создать файл целых чисел, содержащий сумму чисел из каждой строки исходной таблицы.
Дан текстовый файл. Создать новый файл, содержащий все символы, встретившиеся в тексте, включая пробел и знаки препинания (без повторений). Символы располагать в порядке [возрастания их кодов]1|[убывания их кодов]2|[их первого появления в тексте]3.
Дан текстовый файл с именем NameT. Подсчитать число повторений в нем строчных русских букв ("а""я") и создать строковый файл с именем NameS, элементы которого имеют вид: «<буква><число повторений данной буквы>». Буквы, отсутствующие в тексте, в файл не включать. Строки упорядочить по [возрастанию кодов букв]1|[убыванию числа повторений букв, а при равном числе повторений по возрастанию кодов букв]2.
Дано целое число N и текстовый файл с именем Name1, содержащий один абзац текста, выровненный по левому краю. Отформатировать текст так, чтобы его ширина не превосходила N позиций, и выровнять текст по левому1|правому2 краю. Пробелы в конце строк удалить. Сохранить отформатированный текст в новом текстовом файле с именем Name2.
Дано целое число N и текстовый файл Name1, содержащий текст, выровненный по левому краю. Абзацы текста отделяются друг от друга одной пустой строкой. Отформатировать текст так, чтобы его ширина не превосходила N позиций, и выровнять текст по левому1|правому2 краю, сохранив деление на абзацы. Пробелы в конце строк удалить. Сохранить отформатированный текст в новом текстовом файле Name2.
Дана строка K, состоящая из 10 цифр, и файл с русским текстом. Зашифровать файл, выполнив циклическую замену каждой русской буквы, стоящей на i-й позиции строки, на букву того же регистра, расположенную в алфавите на K[i]-м месте после шифруемой буквы (символы строки K также перебираются циклически: для i = 11 снова используется смещение K[1] и т.д.). Букву ё’ в алфавите не учитывать, знаки препинания и пробелы не изменять.
Дана строка  S1 и файл с русским текстом, зашифрованным по правилу, описанному в задании 39. Строка S1 представляет собой первую расшифрованную строку текста. Расшифровать остальные строки и заменить в файле зашифрованный текст на расшифрованный. Если информации для расшифровки недостаточно, то исходный файл не изменять.
Прочитать текстовый файл. На отдельной форме вывести информацию о количестве слов, состоящих из одного символа, двух символов и т.д.
Прочитать текстовый файл. На отдельной форме вывести словарь, используемых слов с указанием частоты их использования.
Прочитать текстовый файл. На отдельной форме вывести текст, из которого удалены незначащие пробелы.
Прочитать текстовый файл. На отдельной форме вывести этот же текст, но в котором каждое новое предложение написано с новой строки (предложения заканчиваются точкой).
Прочитать текстовый файл. Реализовать функцию замены одного слова на другое.
Написать программу для кодирования и декодирования текстового файла с помощью слова-пароля.
Прочитать текстовый файл. На отдельной форме вывести текст, в котором все слова из латинских символов и цифр выделены другим цветом.
Прочитать текстовый файл. На отдельной форме вывести тот же текст, но в котором все числа записаны словами.
В текстовом файле записан английский /немецкий текст. Необходимо выделять сплошной фрагмент текста и определять, все ли буквы латинского алфавита в нём задействованы, отметить незадействованные.
Прочитать текстовый файл, в котором хранятся статьи уголовного кодекса. Разбить весь текст на отдельные статьи, если известно, что признаком начала статьи является предложение, состоящее из слова <Статья>, за которым следует номер статьи с точкой, написанное в начале строки.
Прочитать текстовый файл, в котором хранятся одна статья уголовного кодекса. Разбить эту статью на пункты, если известно, что признаком начала пункта является предложение, состоящее из номера пункта с точкой, написанное в начале строки.
Прочитать текстовый файл, в котором хранятся одна статья уголовного кодекса, состоящая из одного единственного пункта. Отделить от этой статьи санкцию, если известно, что она начинается со слов <наказывается> или <наказываются>.
Описать функцию getInt(Name, k) целого типа, возвращающую k-й элемент файла целых чисел с именем Name (элементы нумеруются от 0). Если файл не существует или не содержит k-го элемента, то функция возвращает 0. С помощью этой функции вывести пять элементов данного файла с указанными номерами.
Описать функцию getLine(Name, k) строкового типа, возвращающую k-ю строку текстового файла с именем Name (строки нумеруются от 0). Если файл не существует или не содержит k-й строки, то функция возвращает пустую строку. С помощью этой функции вывести пять строк данного файла с указанными номерами.
Описать функцию IntFileSize(Name) целого типа, возвращающую размер файла целых чисел с именем Name. Если файл не существует, то функция возвращает –1. С помощью этой функции определить размер трех файлов с данными именами.
Описать функцию TextSize(Name) целого типа, возвращающую число строк в текстовом файле с именем Name. Если файл не существует, то функция возвращает –1. С помощью этой функции определить размер трех файлов с данными именами.
Описать процедуру InvertIntFile(Name), меняющую порядок следования элементов файла целого типа с именем Name на противоположный. Если файл не существует или содержит менее двух элементов, то процедура не выполняет никаких действий. Обработать с помощью этой процедуры три файла с данными именами.
Описать процедуру SplitIntFile(Name0, k, Name1, Name2), копирующую первые k (>= 0) элементов существующего файла целых чисел с именем Name0 в файл Name1, а остальные элементы  в файл Name2 (прежнее содержимое результирующих файлов стирается). Один из результирующих файлов может оказаться пустым. Применить эту процедуру к файлу Name0, используя указанные значения Name1, Name2 и k.
Описать процедуру SplitText(Name0, k, Name1, Name2), копирующую первые k (>= 0) строк существующего текстового файла с именем Name0 в файл Name1, а остальные элементы в файл Name2 (прежнее содержимое результирующих файлов стирается). Один из результирующих файлов может оказаться пустым. Применить эту процедуру к файлу Name0, используя указанные значения Name1, Name2 и k.
Описать процедуру ConcatFile(NameA, NameB, NameAB), позволяющую объединить содержимое двух двоичных файлов NameA и NameB одного и того же типа в новом файле NameAB. Использовать процедуры BlockRead и BlockWrite. Применить эту процедуру к парам исходных файлов Name1Name2, Name1Name3 и Name2Name3, создав файлы с именами Name12, Name13, Name23.
Описать процедуру StringFileToText(Name)1 или TextToStringFile(Name)2, преобразующую  [двоичный строковый]1 или текстовый2 файл с именем Name в текстовый1 или [двоичный строковый]2 файл с тем же именем. Используя эту процедуру, преобразовать два данных строковых1|текстовых2 файла с именами Name1 и Name2 в текстовые1|строковые2.
Описать процедуру CodeText(Name, k), шифрующую текстовый файл с именем Name, выполняя циклическую замену каждой русской буквы на букву, расположенную в алфавите на k-й позиции после исходной (0 < k < 11). Например, при k = 3 "А" перейдет в "Г", "а" в "г", "Я" в "В". Букву "ё" в алфавите не учитывать, прочие символы файла не изменять. Используя эту процедуру и зная k, зашифровать1|расшифровать2 данный файл.
Дан  текстовый  файл,  содержащий  целые  числа.  Найти  максимальное  число  в  каждой  строке  файла.  Найденные  числа  записать  в  новый   текстовый   файл  по  одному  в  строке.
Дан  текстовый  файл,  содержащий  строки.   Создать  новый  текстовый  файл,  в  каждой  строке  которого  записать  два  числа:  количество  запятых  и  количество  точек  в  соответствующей  строке  исходного  файла.
Дан  текстовый  файл,  содержащий  целые  числа.  Найти  количество  отрицательных  чисел  в  каждой  строке  файла.  Найденные  числа  записать  в  новый   текстовый   файл  по  одному  в  строке. 
Дан  текстовый  файл, в первой строке которого записаны два числа n и m (m>n), а в следующих строках прямоугольная таблица целых чисел размером nЧm. Заполнить целочисленный массив размером nЧm числами из этой таблицы. В каждой строке массива удалить элемент, номер которого равен номеру соответствующей строки. Полученный массив записать в новый текстовый файл.
Дан текстовый файл, содержащий целые числа, количество которых кратно 3. Записать в новый текстовый файл все числа исходного файла по три числа в строке.
Типизированные и нетипизированные файлы
Дана строка S. Если S является допустимым именем файла, то вывести True и создать файл с этим именем. Если файл с именем S создать нельзя, то вывести False.
Даны имена четырех файлов. Вывести количество файлов с указанными именами, которые имеются в текущем каталоге.
Дано имя файла целых чисел. Вывести количество его элементов. Если файла с таким именем не существует, то вывести –1.
Дано число k и файл, содержащий ненулевые целые числа. Вывести элемент файла с номером k (элементы файла нумеруются от нуля). Если такой элемент отсутствует, то вывести 0.
Дан файл целых чисел, содержащий не менее четырех элементов. Вывести его нулевой, первый, предпоследний и последний элементы.
Даны имена двух файлов вещественных чисел. Известно, что один из них существует и содержит не менее двух элементов, а другой в текущем каталоге отсутствует. Создать отсутствующий файл и записать в него нулевой и последний элементы существующего файла.
Дан файл целых чисел. Вывести количество содержащихся в нем серий (то есть наборов последовательно расположенных одинаковых элементов).
Дан файл вещественных чисел. Найти количество его локальных минимумов1|максимумов2|экстремумов3.
Дан файл вещественных чисел. Найти количество его участков убывания1|возрастания2|монотонности3.
Даны два файла произвольного типа. С помощью процедуры Rename поменять местами их содержимое.
Дан файл произвольного типа. С помощью процедур BlockRead и BlockWrite создать его копию с новым именем.
Дано целое число N (< 5) и N файлов одного и того же типа с именами Name1, ..., Name5. С помощью процедур BlockRead и BlockWrite объединить содержимое этих файлов (в указанном порядке) в новом файле с именем Name0.
Даны два файла одного и того же типа. С помощью процедур BlockRead и BlockWrite добавить к первому файлу содержимое второго файла, а ко второму файлу содержимое первого.
Даны три файла одного и того же типа, но разного размера. С помощью процедур BlockRead и BlockWrite заменить содержимое самого длинного1|короткого2 файла на содержимое самого короткого1|длинного2.
Дан файл целых чисел. Создать новый файл, содержащий те же элементы, что и исходный файл, но в обратном порядке.
Даны три файла целых чисел одинакового размера с именами NameA, NameB и NameC. Создать новый файл с именем NameD, в котором чередовались бы элементы исходных файлов с одним и тем же номером: A0, B0, C0, A1, B1, C1, A2, B2, C2, ... .
Даны четыре файла целых чисел разного размера с именами NameA, NameB, NameC и NameD. Создать новый файл с именем NameE, в котором чередовались бы элементы исходных файлов с одним и тем же номером (как в задании 16). "Лишние" элементы более длинных файлов в результирующий файл не записывать.
Дан файл вещественных чисел с именем Name1. Создать два новых файла с именами Name2 и Name3, первый из которых содержит элементы исходного файла с четными номерами (0, 2, 4, ...), а второй с нечетными (1, 3, 5, ...).
Дан файл, содержащий ненулевые целые числа. Создать новый файл, содержащий только положительные1|отрицательные2|четные3|нечетные4 числа исходного файла (в том же порядке).
Дан файл целых чисел. Создать новый файл, содержащий длины всех серий исходного файла.
Дан файл вещественных чисел. Создать файл целых чисел, содержащий длины всех убывающих1|возрастающих2|монотонных3 последовательностей его элементов.
Дан файл вещественных чисел. Заменить в нем все элементы на их квадраты.
Дан файл вещественных чисел. Заменить в файле каждый элемент, кроме начального и последнего, на его среднее арифметическое с предыдущим и последующим элементом.
Дан файл целых чисел с элементами A(i), i = 0, ..., N–1 (N размер файла). Заменить исходное расположение его элементов на следующее: A(0), A(N–1), A(1), A(N–2), A(2), ... .
Дан файл целых чисел. Если его размер меньше 50, то дополнить его нулями до 50 элементов; если его размер больше 50, то урезать его до 50 элементов.
Дан файл целых чисел. Удалить в нем все положительные1|отрицательные2|четные3|нечетные4 числа.
Дан файл целых чисел. Продублировать в нем все числа, принадлежащие диапазону 5..10.
Дан файл, содержащий ненулевые целые числа. Заменить в нем все положительные1|отрицательные2|четные3|нечетные4 числа двумя нулями.
Дан файл вещественных чисел. Поменять в нем местами минимальный и максимальный элементы.
Даны два файла вещественных чисел с именами Name1 и Name2, элементы которых упорядочены по возрастанию1|убыванию2. Объединить эти файлы в новый файл с именем Name3, сохранив упорядоченность элементов.
Даны два целых числа i и j и файл вещественных чисел, содержащий элементы квадратной матрицы (по строкам). Вывести элемент матрицы, расположенный в i-й строке и j-м столбце (строки и столбцы нумеруются от 1). Если требуемый элемент отсутствует, то вывести 0.
Даны два целых числа i и j и файл вещественных чисел, содержащий элементы прямоугольной матрицы (по строкам), причем начальный элемент файла содержит количество столбцов матрицы. Вывести элемент матрицы, расположенный в i-й строке и j-м столбце (строки и столбцы нумеруются от 1). Если требуемый элемент отсутствует, то вывести 0.
Дан файл вещественных чисел, содержащий элементы квадратной матрицы (по строкам). Создать файл, содержащий элементы матрицы, транспонированной к исходной.
Дан файл вещественных чисел, содержащий элементы прямоугольной матрицы (по строкам), причем начальный элемент файла содержит количество столбцов матрицы. Создать новый файл той же структуры, содержащий матрицу, транспонированную к исходной.
Даны два файла вещественных чисел с именами NameA и NameB, содержащие элементы квадратных матриц A и B (по строкам). Создать новый файл с именем NameC, содержащий элементы произведения A·B. Если матрицы A и B нельзя перемножать, то оставить файл NameC пустым.
Даны два файла вещественных чисел с именами NameA и NameB, содержащие элементы прямоугольных матриц A и B (по строкам), причем начальный элемент каждого файла содержит количество столбцов соответствующей матрицы. Создать файл той же структуры с именем NameC, содержащий произведение A·B. Если матрицы A и B нельзя перемножать, то оставить файл NameC пустым.
Дан файл вещественных чисел, содержащий элементы [верхней треугольной]1|[нижней треугольной]2|трехдиагональной3 матрицы (по строкам). Создать новый файл, содержащий элементы ненулевой части данной матрицы (по строкам).
Даны два целых числа i и j и файл вещественных чисел, содержащий ненулевую часть [верхней треугольной]1|[нижней треугольной]2|трехдиагональной3 матрицы (по строкам). Вывести порядок матрицы и ее элемент, расположенный в i-й строке и j-м столбце (строки и столбцы нумеруются от 1). Если требуемый элемент находится в нулевой части матрицы, то вывести 0; если элемент отсутствует, то вывести –1.
Дан файл вещественных чисел, содержащий ненулевую часть [верхней треугольной]1|[нижней треугольной]2|трехдиагональной3 матрицы (по строкам). Создать новый файл, содержащий все элементы данной матрицы (по строкам).
Даны два файла вещественных чисел с именами NameA и NameB, содержащие ненулевые части [верхних треугольных]1|[нижних треугольных]2 матриц A и B (по строкам). Создать новый файл с именем NameC, содержащий ненулевую часть произведения A·B исходных матриц (по строкам). Если матрицы A и B нельзя перемножать, то оставить файл NameC пустым.
Дано целое число N (< 5) и N файлов целых чисел разного размера с именами Name1,..., Name. Объединить их содержимое в новом файле целых чисел с именем Name0, используя следующий формат: в начальном элементе файла Name0 хранится число N, в следующих N элементах хранятся размеры исходных файлов, а затем последовательно размещаются данные из каждого исходного файла.
Дан файл целых чисел, содержащий данные из нескольких (не более четырех) файлов в формате, описанном в задании 41. Восстановить файлы, использованные при создании исходного файла, присвоив им имена вида «.tst», где   порядковый номер файла (n = 1, 2, ...).
Дан символьный файл, содержащий по крайней мере один символ пробела. Удалить все его элементы, расположенные после первого1|последнего2 символа пробела, включая и сам этот пробел.
Дан символьный файл, содержащий по крайней мере один символ пробела. Удалить все его элементы, расположенные перед первым1|последним2 символом пробела, включая и сам этот пробел.
Дан символьный файл. Упорядочить его элементы по возрастанию1|убыванию2 их кодов.
Дано число k и строковый файл с именем Name1, содержащий непустые строки. Создать два новых файла: строковый с именем Name2, содержащий первые1|последние2 k символов каждой строки исходного файла (если строка короче k символов, то она сохраняется целиком), и символьный с именем Name3, содержащий k-й символ каждой строки (если строка короче k, то в файл Name3 записывается пробел).
Дан строковый файл, содержащий непустые строки. Создать новый файл, содержащий все строки исходного файла наименьшей1|наибольшей2 длины (в том же порядке).
Дан строковый файл с именем NameS, содержащий даты в формате "день/месяц/год", причем под день и месяц отводится по две позиции, а под год четыре. Создать файлы целых чисел с именами Name1 и Name2, содержащие соответственно значения [дней и месяцев]1|[дней и лет]2|[месяцев и лет]3 для дат из исходного строкового файла (в том же порядке).
Дан строковый файл, содержащий даты в формате "день/месяц/год", причем под день и месяц отводится по две позиции, а под год четыре. Вывести строку, содержащую самую раннюю1|позднюю2 весеннюю3|летнюю4|осеннюю5|зимнюю6 дату. Если даты с требуемым временем года в файле отсутствуют, то вывести дату "01/01/1900".
Дан строковый файл, содержащий даты в формате "день/месяц/год", причем под день и месяц отводится по две позиции, а под год четыре. Создать новый строковый файл, в котором даты из исходного файла располагались бы в порядке возрастания1|убывания2.

В задачах 1..15 использовать типизированный файл 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;

Убедиться в отсутствии задолженностей для выбранного студента-выпускника (наличие положительных оценок за все десять семестров).
Вывести список студентов, для которых дни рождения попадают на дни текущей недели.
Вывести список студентов, у которых средний балл постоянно увеличивается от семестра к семестру.
Вывести список студентов, у которых средний балл постоянно уменьшается за всё время обучения.
Вывести информацию о самых молодых студентах с указанием возраста N человек, начиная с самого молодого, N определяется вводом.
Вывести информацию о средних баллах по курсам.
Вывести информацию об однофамильцах.
Организовать поиск студентов по ФИО, курсу, группе, году рождения.
Определить группы студентов, у которых средний балл ниже факультетского среднего.
Вывести информацию о студентах, которые стали учиться хуже, чем на 1-ом курсе.
Упорядочить список студентов заданной группы по среднему баллу, вывести его.
Вывести список студентов, у которых средний балл больше 40.
Вывести студента с наибольшим средним баллом на каждом курсе.
Вывести студента с наименьшим средним баллом на каждом курсе.
Составить список 5 студентов с максимальным средним баллом.

Рекурсия
Описать рекурсивную функцию для подсчёта количества запятых в данном тексте.
Описать рекурсивную функцию
function step(z : real; m:byte):real;
для вычисления zm (z вещественное, m натуральное) и с её помощью подсчитать значение выражения a7 + b8 .
Описать рекурсивную функцию
function fib(n : integer) : integer;
для вычисления n-ого (n ( 40) числа Фибоначчи.
Указание.
Последовательность чисел Фибоначчи fk образуется так:
f0=1, f1=1, fk = fk-2 + fk-1.
Описать рекурсивную функцию
function arifm(a, d, k : integer) : integer;
для вычисления k-ого элемента арифметической прогрессии (a первый элемент прогрессии, d разность прогрессии).
Создать очередь из чисел, записанных в текстовом файле, с помощью рекурсивной процедуры procedure add(var r : link).
Описать рекурсивную функцию
function memb(r:link; b:integer): boolean;
проверяющую, входит ли элемент с информационным полем b в список r.
Описать рекурсивную процедуру
procedure dele(var r:link; w:integer);
удаляющую из списка r первое вхождение элемента с информационным полем w.
Используя функцию memb, проверить, входит ли число, введённое в поле Edit1, в созданный список. Если да, то удалить из списка первое вхождение этого числа с помощью процедуры dele и вывести преобразованный список в текстовый файл с помощью процедуры out. В противном случае вывести сообщение: «Такого элемента нет».
Создать очередь с помощью рекурсивной процедуры
procedure add(var r: link).
Описать рекурсивную функцию
function neg(r: link): boolean;
проверяющую, имеется ли в списке элемент с отрицательным информационным полем.
Описать рекурсивную функцию
function nmemb(r: link; b:integer):integer;
подсчитывающую количество вхождений элемента с информационным полем b в список r.
Описать рекурсивную функцию
function max(r: link): integer;
для нахождения максимума в списке r.

Списки, стеки, очереди

Реализовать функцию поиска элемента Е в односвязном списке L.
Подсчитать число максимальных элементов списка.
В списке A хранится информация о людях (фамилия, имя, отчество, профессия). Имеется список В, содержащий перечень профессий. Удалить из списка А тех людей, чья профессия не указана в списке В.
Дан текстовый файл. Распечатать слова, имеющие максимальную длину.
Дан список слов. Из каждой группы подряд идущих одинаковых слов оставить только одно.
Дан список вещественных чисел. Проверить, упорядочены ли числа по возрастанию или по убыванию.
Дан список вещественных чисел. Для каждого элемента списка напечатать число отрицательных элементов, следующих за ним.
Реализовать проект "Частотный словарь". В качестве обрабатываемого текста можно использовать, например, модули этого проекта. Результатом должно явиться перечисление всех "слов" в алфавитном порядке с частотой их появления. Отметить, что частота появления таких слов, как begin и end, всегда одинакова.
Создать приложение, проверяющее правильность расстановки скобок в арифметическом выражении.
Даны два стека. Используя процедуры ИзСтека, ВСтек и функцию СтекПуст подсчитать общее число элементов в стеках. В качестве вспомогательных структур разрешается использование переменных целых типов. Алгоритм должен предусматривать восстановление исходного расположения элементов в стеках.
Дан текстовый файл А. Переписать его содержимое в файл В, перенося при этом в конец каждой строки все входящие в нее знаки препинания.
Даны две очереди X и Y, содержащие вещественные числа. Из каждой очереди одновременно извлекается по одному числу, х и у соответственно. Если х < у, то число (х + у) помещается в конец очереди X, иначе число (х–у) помещается в конец очереди Y. Необходимо определить число шагов, через которое одна из очередей станет пустой.
Создать очередь, информационные поля которой содержат целые числа из текстового файла. Вставить в список новый элемент с информационным полем d после каждого элемента с четным числом в информационном поле.
Создать очередь из 20 элементов, информационные поля которой содержат случайные числа из интервала [–30, 30]. Вставить в список новый элемент с информационным полем 100 за каждым отрицательным числом.
Создать очередь, информационные поля которой содержат строки из файла. Удалить из списка элементы, информационные поля которых равны строке S.
Создать очередь из 20 элементов, информационные поля которой содержат случайные числа из интервала [–40, 40]. Удалить из списка все отрицательные числа.
Создать очередь, информационные поля которой содержат числа из текстового файла. Вставить в конец списка (после последнего элемента) новый элемент с информационным полем d.
Создать очередь, информационные поля которой содержат числа из текстового файла. Вставить в начало списка (перед первым элементом) новый элемент с информационным полем d.
Создать список, информационные поля которого содержат числа из текстового файла. Вставить новый элемент с информационным полем d после i-ого элемента списка.
Создать список из 20 элементов, информационные поля которой содержат случайные числа из интервала [–50, 50]. Удалить из списка последний отрицательный элемент.
Создать очередь, информационные поля которой содержат числа из текстового файла. Удалить из списка за каждым вхождением элемента с информационным полем, равным d, один элемент, если он отличен от d.
Создать очередь, информационные поля которой содержат строки из файла (список фамилий учащихся). Удалить из списка фамилии, начинающиеся с буквы С .
Создать очередь, информационные поля которой содержат строки из файла (список фамилий учащихся). Удалить из списка первую фамилию, начинающуюся с буквы К . (Учесть, что такая фамилия может оказаться первой в списке.)
Создать очередь, информационные поля которой содержат строки из файла (список фамилий учащихся, упорядоченный по алфавиту). Вставить в этот список новую фамилию с сохранением порядка.
Считалочка. N ребят расположены по кругу. (Каждому присвоен номер по порядку). Начав отсчёт от первого, удаляют каждого k-ого, смыкая при этом круг. Определить номер последнего, оставшегося в круге. (k(N)
Указание:
для решения задачи использовать очередь, в которой ссылочное поле последнего элемента содержит адрес первого элемента..
Написать программу, проверяющую правильность расстановки скобок в арифметическом выражении. Скобки могут быть круглыми, квадратными и фигурными.
Преобразовать последовательность действительных чисел, записанных в файле, расположив сначала отрицательные числа последовательности, а затем неотрицательные. При этом порядок как отрицательных, так и неотрицательных чисел изменяется на обратный
Указание.
для решения задачи создать два стека: с отрицательными и с неотрицательными числами последовательности.
Даны целые числа a1, a2, an, содержащиеся в текстовом файле. Вычислить значение выражения p1 (+ 10 + p2 ( 100 + p3 ( 1000 + , где p1, p2 , p3 , встречающиеся в последовательности положительные числа, взятые в обратном порядке (начиная с последнего встретившегося положительного числа).
Указание
для решения задачи сформировать стек из положительных чисел последовательности.
Написать программу для вычисления значения выражения, представленного в обратной польской записи.

Обычная запись
Обратная польская запись

(b + c) ( d
b c + d (

a + (b + c) ( d
a b c + d ( +

(6 + 8)/2 + 11
6 8 + 2 / 11 +

Указание
просматривая строку, в которой записано выражение, анализируем очередной символ. Если это число, то записываем его в стек. Если это знак операции, то достаём два элемента из стека, выполняем арифметическую операцию, определяемую этим знаком, и заносим результат в стек.
Создать очередь, информационные поля которой содержат числа из текстового файла. Вставить в список за каждым отрицательным числом новый элемент с информационным полем, равным модулю данного отрицательного числа.
Создать очередь, информационные поля которой содержат числа из текстового файла. Из каждой группы подряд идущих одинаковых чисел оставить только одно.
Создать очередь из 20 элементов, информационные поля которой содержат случайные числа из интервала [–50,50]. Удалить из списка все числа, по модулю большие числа 20. Использовать метод фиктивного элемента.
Дана последовательность символов, состоящая из английских букв и цифр, записанных в текстовом файле. Используя запись в стек, получить число, составленное из цифр последовательности, записанных в обратном порядке. Полученное число записать в текстовый файл.
Дана последовательность символов, состоящая из английских букв и цифр, записанных в текстовом файле. Используя запись в стек, получить текст, составленный из английских букв последовательности, записанных в обратном порядке. Полученный текст записать в текстовый файл.
Создать очередь, информационные поля которой содержат числа из текстового файла. Подсчитать число максимальных элементов списка.
Создать очередь, информационные поля которой содержат числа из текстового файла. Из каждой группы подряд идущих одинаковых чисел оставить только одно.
Создать очередь, информационные поля которой содержат вещественные числа из текстового файла. Проверить, упорядочены ли числа по возрастанию или по убыванию.
Создать очередь, информационные поля которой содержат вещественные числа из текстового файла. Для каждого элемента списка определить число отрицательных элементов, следующих за ним. Результаты записать в текстовый файл в виде:
элемент списка число последующих отрицательных элементов.
Создать очередь, информационные поля которой содержат вещественные числа из текстового файла. Проверить, образуют ли числа, хранящиеся в списке, арифметическую или геометрическую прогрессию.
Дана последовательность x1, x2,, xn вещественных чисел, записанных в текстовом файле. Вычислить произведение сумм: 13 EMBED Equation.3 1415.
Дана последовательность x1, x2,, xn вещественных чисел, записанных в текстовом файле. Вычислить произведение сумм:
13 EMBED Equation.3 1415.
Дан список слов. Из каждой группы подряд идущих одинаковых слов оставить только одно.
Дан текстовый файл. Распечатать слова, имеющие максимальную длину.

Сортировки
Написать программу, которая наглядно иллюстрирует работу следующих методов сортировки:
пузырьковая;
шейкерная.
Провести сравнение этих сортировок по количеству сравнений, по количеству обменов. Для этого построить графики зависимостей данных величин от количества элементов массива.
Написать программу, которая наглядно иллюстрирует работу следующих методов сортировки:
простыми вставками;
бинарными вставками.
Провести сравнение этих сортировок по количеству сравнений, по количеству обменов. Для этого построить графики зависимостей данных величин от количества элементов массива.
Примером сортировки по двум ключам может служить список файлов, имеющих одинаковые имена и разные расширения. Список упорядочен по именам, а для каждого имени – по расширениям.
Написать программу, которая сортирует элементы массива по двум ключам. Элементом массива является запись, два поля которой – два ключа
В магазине строительных материалов в продаже имеются стеновые панели, которые характеризуются следующими величинами:
ширина,
длина,
количество штук,
цена за 1 м2.
Вывести в порядке возрастания цены сведения о тех стеновых панелях, общая площадь которых не менее заданной.
Есть некий измерительный прибор, работа которого зависит от входных параметров a и x, а результат определяется следующей формулой у = a sin(ax) cos2 (x/a). Проводится серия опытов для значений xt ,х2,... xn, a = const. Вывести результат в виде таблицы, упорядоченной по убыванию значений показаний прибора, полученных в ходе опытов.
чемпионате России по футболу принимают участие 16 команд. Для каждой команды известен список игроков, каждый игрок из команды имеет свой рейтинг. Вывести список команд в порядке убывания вероятности победы в чемпионате. Рейтинг команды равен сумме рейтингов игроков. Вероятность победы равна рейтингу команды минус сумма рейтингов 11 лучших игроков.
Элемент хэш-таблицы содержит информацию о номере телефона и фамилию человека, который доступен по этому телефону. То есть у одного человека может быть несколько телефонов: домашний, рабочий, мобильный и т.п. Напишите программу, которая по заданной фамилии выводит все номера телефонов, по которым доступен этот человек.
Упорядочить массив размера N по возрастанию1|убыванию2.
Дано множество A из N точек с целочисленными координатами. Порядок на координатной плоскости определим следующим образом: (x1, y1) < (x2, y2), если либо x1 < x2, либо x1 = x2 и y1 < y2. Расположить точки данного множества по возрастанию1|убыванию2 в соответствии с указанным порядком.
Из двух упорядоченных по невозрастанию массивов A(M) и B(N) получить путем слияния упорядоченный по убыванию массив C; удаляемые элементы собрать в массиве D. Подсчитать количество элементов в массивах C и D.
Заданы два упорядоченных по возрастанию одномерных массива А(N) и В(N). Сформировать массив С(2*N), содержащий элементы обоих массивов, расположенные в порядке возрастания.
Путем слияния из возрастающего A(M) и невозрастающего B(N) массивов получить возрастающий массив C (с удалением совпадающих элементов). Подсчитать количество элементов в массиве С.
Задан массив записей, поле key которого – целые числа. Написать программу, которая наглядно демонстрирует сортировку массива по ключу key:
методом простого слияния;
методом естественного слияния.
Количество элементов массива таково, что все элементы отображаются на экране. В данных сортировках используется дополнительный массив
Задан массив записей, поле key которого – целые числа. Написать программу, которая наглядно демонстрирует пирамидальную сортировку по ключу key. Массив изображен в виде последовательности элементов. При построении пирамиды на экране массив отображается не только в виде последовательности, но и в виде построенной пирамиды.
Написать программу, иллюстрирующую работу сортировки Хоара:
реализовать рекурсивным методом;
реализовать нерекурсивным методом;
реализовать любым из методов, но учитывать, что для сортировки массива маленького размера лучше применять какой-нибудь другой метод сортировки (например, простыми вставками, пузырьком ...).
Написать программу, которая наглядно иллюстрирует работу следующих методов сортировки:
пузырьковая
шейкерная
Провести сравнение сортировок методом пузырька и шейкерной по количеству сравнений, по количеству обменов. Для этого построить графики зависимостей данных величин от количества элементов массива.
Написать программу, которая иллюстрирует работу метода Шелла с одной из формул вычисления шага сортировки:
h[k–1] = 3h[k] + 1, h[t]=1, t = [log3n]–l;
h[k–1] = 2h[k] + 1, h[t]=1, t = [log2n]–l;
2k–l;
2k +1;
(2k–(–l)k)/3;
(3k–l)/2;
числа Фибоначчи.
Реализовать сортировку массива целых чисел методом двухпутевых вставок при использовании следующих дополнительных структур данных:
массива;
двунаправленного списка.
Программа должна наглядно иллюстрировать работу данного алгоритма.
Исследовать зависимость количества сравнений в сортировках простыми и бинарными вставками от количества элементов в этих массивах. При этом отобразить необходимое количество перестановок.
Написать программу, которая иллюстрирует сортировку массива распределяющим подсчетом. Элементом массива является запись следующего типа:
record ch : char;
key : integer
end;
Указание.
Ключом сортировки является поле целого типа.
В магазине строительных материалов в продаже имеются стеновые панели, которые характеризуются следующими величинами:
ширина,
длина,
количество штук,
цена за 1 м2.
Вывести в порядке возрастания цены сведения о тех стеновых панелях, общая площадь которых не менее заданной.
Есть некий измерительный прибор, работа которого зависит от входных параметров a и x, а результат определяется следующей формулой у = a sin(ax) cos2 (x/a). Проводится серия опытов для значений xt ,х2,... xn, a = const. Вывести результат в виде таблицы, упорядоченной по убыванию значений показаний прибора, полученных в ходе опытов.
Информация агентства по продаже недвижимости содержит следующие сведения о квартирах:
район, в котором находится квартира,
этаж,
количество комнат,
общая площадь,
цена за 1 м2.
Клиент, обращаясь в агентство, имеет возможность указать вес для каждого из критериев (важный критерий имеет большой вес, незначительный – маленький), а агентство, в свою очередь, предлагает ему список квартир, упорядоченный по невозрастанию суммы весов.
В чемпионате России по футболу принимают участие 16 команд. Для каждой команды известен список игроков, каждый из команды имеет рейтинг. Вывести список команд в порядке убывания вероятности победы в чемпионате. Вероятность победы равна рейтингу команды – сумме рейтингов 11 лучших игроков.

Разбор выражений

Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом:
<выражение>  ::= <цифра> | <выражение> + <цифра>  |
<выражение> – <цифра>
Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом:
<выражение>  ::= <терм> | <выражение> + <терм>  |
<выражение> – <терм>
<терм>  ::= <цифра> | <терм> * <цифра>
Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом:
<выражение>  ::= <терм> | <выражение>+<терм>  |
<выражение>–<терм>
<терм>  ::= <элемент> | <терм> * <элемент>
<элемент>  ::= <цифра> | (<выражение>)
Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом:
<выражение>  ::= <цифра> | (<выражение><знак><выражение>) <знак>  ::= + | – | *
Проверить правильность выражения, заданного в виде строки S (выражение определяется по тем же правилам, что и в задании 1). Если выражение составлено правильно, то вывести 0, в противном случае вывести номер первого ошибочного (или лишнего) символа в строке S.
Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим образом ("T" True, "F" False):
<выражение>  ::= T | F | And (<операнды>) | Or (<операнды>) <операнды>  ::= <выражение>,<выражение>
Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим образом ("T" True, "F" False):
<выражение>  ::= T | F | And (<операнды>) | Or (<операнды>) |
Not (<выражение>)
<операнды>  ::= <выражение>  | <выражение>,<операнды>
Проверить правильность расстановки скобок в строке S. Текст в строке S определяется следующим образом:
<текст>  ::= <элемент>  | <элемент><текст>
<элемент>  ::= a | b | c | (<текст>) | [<текст>] | {<текст>}
Если текст составлен правильно, то вывести True, иначе вывести False.
Проверить правильность расстановки скобок в строке S (текст в строке S определяется по тем же правилам, что и в задании 8). Если текст составлен правильно, то вывести 0; в противном случае вывести номер первой ошибочной скобки или –1, если в строке недостаточно закрывающих скобок.
Деревья
Дано упорядоченное дерево глубины N (> 0), каждая внутренняя вершина которого имеет K (< 9) непосредственных потомков, которые нумеруются от 1 до K. Корень дерева имеет номер 0. Записать в текстовый файл все возможные пути, ведущие от корня к листьям (каждый путь записывается в отдельной строке файла). Перебирать пути, начиная с "самого левого" и заканчивая "самым правым", при этом первыми заменять конечные элементы пути.
Дано упорядоченное дерево глубины N (> 0), каждая внутренняя вершина которого имеет K (< 9) непосредственных потомков, которые нумеруются от 1 до K. Корень дерева имеет номер 0. Записать в текстовый файл все пути, ведущие от корня к листьям и удовлетворяющие следующему условию: никакие соседние элементы пути не нумеруются одной и той же цифрой. Каждый путь записывается в отдельной строке файла. Порядок перебора путей тот же, что в задании 1.
Дано упорядоченное дерево глубины N (N > 0 четное), каждая внутренняя вершина которого имеет два непосредственных потомка: A с весом 1 и B с весом –1. Корень дерева C имеет вес 0. Записать в текстовый файл все пути от корня к листьям, удовлетворяющие следующему условию: суммарный вес элементов пути равен 0. Каждый путь записывается в отдельной строке файла. Порядок перебора путей тот же, что в задании 1.
Дано упорядоченное дерево глубины N (N > 0) того же типа, что и в задании 3. Записать в текстовый файл все пути от корня к листьям, удовлетворяющие следующему условию: суммарный вес элементов для любого начального отрезка пути неотрицателен1|неположителен2. Каждый путь записывается в отдельной строке файла. Порядок перебора путей тот же, что в задании 1.
Дано упорядоченное дерево глубины N (N > 0 четное) того же типа, что и в задании 3. Записать в текстовый файл все пути от корня к листьям, удовлетворяющие следующим условиям: суммарный вес элементов для любого начального отрезка пути неотрицателен1|неположителен2, а суммарный вес всех элементов пути равен 0. Каждый путь записывается в отдельной строке файла. Порядок перебора путей тот же, что в задании 1.
Подсчитать сумму элементов на k-ом уровне заданного двоичного дерева (корень считать узлом 1-го уровня).
Подсчитать число узлов на k-ом уровне заданного двоичного дерева (корень считать узлом 1-го уровня).
Подсчитать минимум из чисел, содержащихся в листьях заданного двоичного дерева.
Подсчитать максимум элементов на k-ом уровне заданного двоичного дерева (корень считать узлом 1-го уровня).
Дано вещественное x, целое k. Подсчитать количество чисел, меньших x, в узлах ниже k-ого уровня заданного двоичного дерева.
Упорядочить строки данного текстового файла в порядке возрастания их длин.
Отсортировать в алфавитном порядке слова в заданном текстовом файле, основываясь на k-ой литере каждого слова. Например, если k=3, то слова должны быть отсортированы по возрастанию значения в третьей литере. Если длина слова меньше k, то будем предполагать, что его k-ой литерой, реально не существующей, служит пробел.
Проверить, является ли данное двоичное дерево деревом поиска.
В заданном дереве найти поддерево двоичного поиска с максимальным количеством элементов.
Реализовать нерекурсивную процедуру печати всех элементов заданного двоичного дерева.
Реализовать рекурсивную процедуру печати всех элементов заданного двоичного дерева.
Описать логическую функцию, проверяющую на равенство два заданных двоичных дерева.
Описать логическую функцию, определяющую, есть ли в заданном двоичном дереве хотя бы два одинаковых элемента.
Описать процедуру, которая для заданного N строит двоичное дерево, в котором N полных уровней и на каждом уровне i располагаются узлы, информационные части которых равны i.
Дан текстовый файл. Слова содержат не более 20 символов. Определить частоту использования каждого слова в тексте. Результат оформить в виде таблицы, содержащей слова в лексикографическом порядке.
Даны два текстовых файла A и В. Максимальная длина слова 20 символов. Занести в файл С те слова из файла A, которых нет в файле В. Для хранения слов файла В и ускорения поиска среди них воспользуйтесь деревом двоичного поиска.

Графы

Найти все вершины графа, недостижимые из заданной.
Указание:
использовать рекурсивную процедуру проверки доступности одной вершины из другой.
Раскрасить граф минимальным количеством цветов. Каждая вершина должна быть «окрашена» в цвет, отличный от цвета смежных вершин.
Определить, является ли связанным заданный граф.
Указание:
использовать рекурсивную процедуру проверки доступности одной вершины из другой.
Найти длину кратчайшего цикла в графе.
Определить вершину, удалением которой можно свести граф к дереву.
Найти вершину заданного графа, которая принадлежит каждому пути между двумя заданными вершинами.
Задана система односторонних дорог. Найти путь, соединяющий города А и Б, не проходящий через заданное множество вершин.
Задана система двусторонних дорог. Найти замкнутый путь, проходящий через каждую вершину и длиной не более 100 км.
Найти город в системе двусторонних дорог, у которого сумма расстояний до любого города минимальна.
По системе двусторонних дорог определить, есть ли в ней город, из которого можно добраться в любой другой менее чем за 100 км. Разрешается построить дополнительно 3 дороги.
По системе двусторонних дорог определить, можно ли, закрыв какие-либо 3 из них, добиться того, чтобы из города А нельзя было попасть в город Б.
Задана система двусторонних дорог. N-периферией называется множество городов, расстояние от которых до выделенного города больше N. Определить N-периферию для заданного N.
Определить, изоморфны ли 2 графа.
Построить такой многоугольник (не обязательно выпуклый) с вершинами в заданном множестве, периметр которого максимален.
Найти минимальное множество прямых, на которых можно разместить все точки заданного множества.
В 3-мерном пространстве задано множество точек. Найти разбиение этого множества на 2 непустых и непересекающихся множества, чтобы их центры тяжести находились наиболее близко друг к другу.
Неориентированный граф называется двудольным, если его можно раскрасить в два цвета так, что концы любого ребра будут разного цвета. Составить алгоритм проверки, является ли заданный граф двудольным (число действий не превосходит N + M).
Указание:
каждую связную компоненту можно раскрашивать отдельно; выбрав цвет одной вершины и обходя ее связную компоненту, определяется единственно возможный цвет остальных.
Замечание
В этой задаче безразлично, производить поиск в ширину или в глубину.
Решить задачу 17 для ориентированного графа (вывести все вершины, доступные из данной по дугам; граф может содержать циклы).
Доказать, что алгоритм Дейкстры можно модифицировать так, чтобы для N городов и N маршрутов он требовал не более O(N +K ln N) операций.
Указание:
на каждом шаге выбрать невыделенный город с минимальной стоимостью и скорректировать цены для всех городов, в которые из него есть маршруты. Если известен города, стоимость до которого минимальна, то хватило бы O(n + k) действий. Вычисление минимального элемента в массиве обходится в множитель log n.
С эйлеровыми циклами связана задача китайского почтальона, условие которой звучит так: ребрам неориентированного графа приписаны положительные веса. Необходимо найти цикл, проходящий через каждое ребро графа не менее одного раза и такой, чтобы сумма весов с учетом кратности прохождения ребер была бы минимальна.
Замечание
Эта задача часто встречается на практике. Например, при решении задач планирования проверки электрических, телефонных или железнодорожных линий, при решении задач доставки почты или продуктов питания и т. п.




13 TOC \o "1-3" \h \z \u 1413 LINK \l "_Toc254674196" 14Линейные алгоритмы 13 PAGEREF _Toc254674196 \h 1431515
13 LINK \l "_Toc254674197" 14Логическое выражение 13 PAGEREF _Toc254674197 \h 1461515
13 LINK \l "_Toc254674198" 14Условный оператор 13 PAGEREF _Toc254674198 \h 1471515
13 LINK \l "_Toc254674199" 14Циклы 13 PAGEREF _Toc254674199 \h 14111515
13 LINK \l "_Toc254674200" 14Последовательности чисел 13 PAGEREF _Toc254674200 \h 14151515
13 LINK \l "_Toc254674201" 14Строки 13 PAGEREF _Toc254674201 \h 14171515
13 LINK \l "_Toc254674202" 14Одномерные массивы 13 PAGEREF _Toc254674202 \h 14261515
13 LINK \l "_Toc254674203" 14Процедуры и функции 13 PAGEREF _Toc254674203 \h 14321515
13 LINK \l "_Toc254674204" 14Задания 13 PAGEREF _Toc254674204 \h 14321515
13 LINK \l "_Toc254674205" 14Матрицы 13 PAGEREF _Toc254674205 \h 14361515
13 LINK \l "_Toc254674206" 14Множества 13 PAGEREF _Toc254674206 \h 14411515
13 LINK \l "_Toc254674207" 14Перечислимый тип 13 PAGEREF _Toc254674207 \h 14431515
13 LINK \l "_Toc254674208" 14Файлы 13 PAGEREF _Toc254674208 \h 14451515
13 LINK \l "_Toc254674209" 14Текстовые файлы 13 PAGEREF _Toc254674209 \h 14451515
13 LINK \l "_Toc254674210" 14Типизированные и нетипизированные файлы 13 PAGEREF _Toc254674210 \h 14531515
13 LINK \l "_Toc254674211" 14Рекурсия 13 PAGEREF _Toc254674211 \h 14591515
13 LINK \l "_Toc254674212" 14Списки, стеки, очереди 13 PAGEREF _Toc254674212 \h 14611515
13 LINK \l "_Toc254674213" 14Сортировки 13 PAGEREF _Toc254674213 \h 14651515
13 LINK \l "_Toc254674214" 14Разбор выражений 13 PAGEREF _Toc254674214 \h 14701515
13 LINK \l "_Toc254674215" 14Деревья 13 PAGEREF _Toc254674215 \h 14711515
13 LINK \l "_Toc254674216" 14Графы 13 PAGEREF _Toc254674216 \h 14731515
15











Сборник задач
по программированию
для студентов специальности 230201
«Информационные системы и технологии»


Составители: Тюкачев Николай Аркадьевич
Михайлова Елена Евгеньевна
Вощинская Гильда Эдгаровна
Михайлов Евгений Михайлович


Заказ № 384 от 11.02.2010 г. Тираж 100 экз. Лаборатория оперативной полиграфии ВГУ

















13PAGE 15





13 EMBED Word.Picture.8 1415

13 EMBED Word.Picture.8 1415

13 EMBED Word.Picture.8 1415



13EMBED PBrush1415



Root EntryEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation Native

Приложенные файлы

  • doc 53951
    Размер файла: 655 kB Загрузок: 0

Добавить комментарий