- •Массив как структура данных.
- •Дан массив целых чисел. Найти:
- •Дан массив чисел A. Для него нужно:
- •Дан массив вещественных чисел. Найти:
- •Преобразовать массив вещественных чисел по правилу:
- •Дан массив вещественных чисел. Определить:
- •Дан массив целых чисел.
- •Поменять местами:
- •Из массива удалить:
- •Вычислить скалярное произведение двух векторов.
- •Дан текст. Заменить каждое вхождение одной точки троеточием.
- •Двумерные массивы (Матрицы)
- •Для квадратной матрицы определить:
- •Для прямоугольной матрицы найти:
- •Прямоугольную матрицу преобразовать по правилу:
- •Определить, является ли заданная целая квадратная матрица:
- •Найти сумму двух прямоугольных матриц.
- •Найти произведение двух прямоугольных матриц.
- •Дан текст. Напишите:
- •Сортировка массивов. Поиск элементов.
- •Реализовать алгоритм линейного поиска с барьером.
- •Строки
- •В заданном тексте
- •Получите текст наоборот (т.е. разверните его).
- •Дан текст. Удалите из текста:
- •Замените в тексте каждую точку троеточием.
- •Для данного текста найдите:
- •Для данного текста:
- •Зашифруйте текст, циклически сдвигая его вправо или влево.
- •Дан текст. Напечатать:
- •Дан текст. Преобразовать все его слова по правилу:
- •Дано слово, содержащее запись вещественного числа в формате
- •Множества
12
1.2.17Найти произведение вектора на матрицу и произведение матрицы на вектор.
1.2.18Найти произведение двух прямоугольных матриц.
1.2.19Вычислить n-ю степень квадратной матрицы.
1.2.20Дана таблица результатов некоторого спортивного турнира, в котором участвовало K спортсменов. Элементы таблицы записаны по следующему правилу: если i-й спортсмен выиграл у j-го, то в i-й строке и j-м столбце ставится 'V', в случае проигрыша -'P' в соответствующей клетке таблицы, при ничьей - 'N', а на главной диагонали записываются 'X'. За выигрыш даётся одно очко, за ничью - пол-очка, за поражение - ноль. Выдать список участников в порядке убывания набранных ими очков.
1.2.21Напишите программу кодирования текстов кодом Виженера. В нем несколько раз k-я буква сообщения зашифровывается (k MOD n)-м алфавитом, причём n - это общее число применяемых алфавитов.
1.2.22Дан текст. Напишите:
а) программу кодирования текстов методом Цезаря, в котором каждую букву алфавита заменяет другая определенная буква (например "а" вместо "б", "б" вместо "ж" и т.д).
б) программу, подбирающую ключ к коду Цезаря (смотрите предыдущую задачу). И подсчитайте частоты встречаемости букв в закодированном тексте и частоты встречаемости букв в русском языке.
1.3 Сортировка массивов. Поиск элементов.
Методы сортировки можно разбить на три основные группы: сортировка выбором, сортировка обменом, сортировка вставками.
Для сортировки n-элементного массива методом прямого выбора отыскивается максимальный (минимальный) элемент и меняется местами с последним (первым) элементом. Затем этот процесс повторяется с оставшимися n-1 элементами, n-2 элементами и т.д.
Простейший алгоритм прямого обмена - "метод пузырька" основан на сравнении пары соседних элементов и их обмене, если они расположены не по порядку, и продолжении этого процесса до тех пор, пока не будут упорядочены все элементы.
При сортировке вставками элементы просматриваются по одному, начиная со второго, каждый очередной i-й элемент вставляется в подходящее место среди (i-1)-го ранее упорядоченного элемента.
13
Процесс нахождения элемента массива, значение которого равно заданному ключевому значению, называется поиском.
Если для проведения процедуры поиска не предлагается дополнительной информации, то используется простейший метод линейного поиска, при котором последовательно перебираются все элементы массива до тех пор, пока не будет обнаружен первый ключевой элемент, или пока весь массив не будет просмотрен, а совпадений найти не удастся.
Для упрощения процедуры поиска используется метод линейного поиска с барьером. В конец массива помещается дополнительный (n+1) элемент, значение которого задается равным ключевому. Далее действия производятся в соответствии с алгоритмом линейного поиска. Данный метод гарантирует, что ключевой элемент будет найден.
Поиск можно сделать более эффективным, если элементы массива будут упорядочены. В этом случае применяется алгоритм двоичного поиска. Алгоритм определяет местоположение среднего элемента массива и сравнивает его с ключевым. Если они равны, то ключевой элемент найден и выдаётся его индекс. В противном случае задача сокращается на половину элементов массива. Если ключ меньше, чем средний элемент массива, то дальнейший поиск осуществляется в первой половине массива, а если больше, то во второй половине. Поиск продолжается до тех пор, пока ключевой элемент не станет равным среднему элементу или пока оставшийся подмассив содержит хотя бы один элемент, не равный ключевому.
Отметим, что если для определения места включения очередного элемента в упорядоченную часть массива для метода сортировки вставками использовать двоичный поиск, то удастся увеличить скорость сортировки.
Программа, реализующая поиск заданного элемента в упорядоченном массиве методом бинарного поиска.
program BINPOISK; const nmax = 9;
type IArray = array [1..nmax] of integer; var n, l, r, k: byte;
x: integer; A: IArray;
begin
writeln (‘Введите число элементов массива’); readln (n);
writeln('Введите элементы массива'); for k:= 1 to n do readln(A[k]); writeln('Введите искомый элемент:');
14
readln(x);
l:= 1; r:= n+1; while l < r do
begin
k:= (l+r) div 2;
if A[k] < x then l := k+1 else r := k
end;
if A[r] = x then writeln ('Это ', r:1,'-й элемент массива.') else writeln('Ключевой элемент не найден.')
end.
1.3.1Реализовать алгоритм линейного поиска с барьером.
1.3.2Вставить в упорядоченный массив элемент, имеющий заданное значение, если он отсутствует в массиве.
1.3.3Удалить из упорядоченного массива элементы, равные заданному значению.
1.3.4Упорядочить массив по неубыванию (невозрастанию), используя метод прямого выбора.
1.3.5Упорядочить массив по невозрастанию (неубыванию) методом пузырька.
1.3.6Даны два упорядоченных по возрастанию массива. Получить путём слияния исходных массивов новый упорядоченный
массив:
а) по неубыванию; б) по возрастанию.
1.3.7Упорядочить массив по неубыванию методом двоичных вставок, получая упорядоченный массив
а) на месте старого массива; б) в другом массиве.
1.3.8 Дана прямоугольная матрица. Упорядочить строки матрицы: а) по неубыванию (невозрастанию) сумм элементов строк;
б) по неубыванию (невозрастанию) наименьших элементов строк; в) по невозрастанию (неубыванию) наибольших элементов строк.