Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[Amelina_N.I.,_Rusanova_YA.M.,_CHekulaeva_A.A.]_In(BookFi.org).pdf
Скачиваний:
6
Добавлен:
25.03.2016
Размер:
400.05 Кб
Скачать

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 Дана прямоугольная матрица. Упорядочить строки матрицы: а) по неубыванию (невозрастанию) сумм элементов строк;

б) по неубыванию (невозрастанию) наименьших элементов строк; в) по невозрастанию (неубыванию) наибольших элементов строк.