Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2205 Прог на ЯВУ Павлов.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
2.91 Mб
Скачать

Выполнение лабораторной работы

Для выполнения работы необходимо:

  • формализовать задачу;

  • разработать алгоритм решения задачи;

  • составить блок-схему алгоритма;

  • выбрать и обосновать представление входных, промежуточных и выходных данных;

  • произвести кодирование;

  • разработать набор тестов, на которых будет проверяться программа;

  • продемонстрировать работу программы на наборе тестов;

  • оформить работу и отчитаться по ней.

Методические указания к выполнению лабораторной работы

Задание

Дана квадратная матрица A порядка M. Повернуть ее на угол 90° в отрицательном направлении, то есть по часовой стрелке (при этом элемент A1,1 перейдет в А1,M, элемент А1,Mв AM,M и т. д.). Вспомогательную матрицу не использовать.

Выполнение

Работа с матрицей аналогична работе с массивом, перебор её элементов производится в цикле. Перебор элементов матрицы осуществляется в двух массивах, в одном перебираются строки, в другом столбцы.

Этап 1. Формализация. При повороте матрицы на 90° строки становятся столбцами. Т.е. элемент A1,1 становится A1,M, A1,2 – A2,M, A1,3 – A3,M , и т.д., элемент A2,1 становится A1,M-1, A2,2 – A2,M-1, A2,3 – A3,M-1 , и т.д., элемент A3,1 становится A1,M-2, A3,2A2,M-2, A3,3 – A3,M-2 , и т.д., …, элемент AM-1,1 становится A1,2, AM-1,2 – A2,2, AM-1,3 – A3,2 , и т.д., элемент AM,1 становится A1,1, AM,2 – A2,1, AM,3 – A3,1 , и т.д.

Элемент Ai,j становится Aj,M-(i-1).

Таким образом, перемещая элементы согласно выведенной зависимости, можно повернуть матрицу на 90°. Однако заметим, что если просто перемещать элементы, получим неправильное решение, поскольку перемещаемые элементы замещают ещё неперемещённые элементы.

Решить эту проблему можно, выполняя перемещения так, как показано на рисунках:

Рис. 1. Первое перемещение

Рис. 2. Второе перемещение

Рис. 3. Третье перемещение

Рис. 4. Четвёртое перемещение

Рис. 5. Пятое перемещение

Рис. 6. Шестое перемещение

Выполнив перемещения внешних строк и столбцов, переходим к внутренним.

Рис. 7. Первое перемещение внутренней матрицы

Делаем перемещения до тех пор, пока не переместим элементы самой внутренней матрицы или пока не дойдём до матрицы, состоящей из одного элемента. В этом случае значение i будет меняться от M до (M div 2)+(M div 2)+1 (рис. 8).

Рис. 8. Изменение i

j будет зависеть от i и меняться от M-(i-1) до i-1 (рис. 9).

Рис. 9. Изменение j

Во всех перемещениях изменения индексов производится по одной и той же зависимости: jследующее=i, iследующее=M-(i-1). Всего перемещений будет три. Следовательно, можно задать ещё один цикл, в котором выполнять перемещения согласно зависимости. После последнего перемещения этого цикла заносим в вычисленную ячейку значение из промежуточной переменной.

Этап 2. Декомпозиция. Производим декомпозицию задачи — выделяем действия. Определяем, что для решения задачи необходимо выполнить следующие действия:

1. Вводим размер матрицы M.

2. Выполняем ввод. В циклах от 1 до M и от 1 до M вводим значения и присваиваем их элементам матрицы.

3. Выполняем вывод исходной матрицы. В циклах от 1 до M и от 1 до M выводим значения элементов матрицы на экран.

4. Выполняем преобразование. В циклах по i и по j перемещаем элементы матрицы.

5. Выполняем вывод преобразованной матрицы. В циклах от 1 до M и от 1 до M выводим значения элементов матрицы на экран.

Этап 3. Алгоритмизация. Составляем алгоритм решения задачи. Используем для записи алгоритма форму блок-схемы.

Блок-схема алгоритма выглядит следующим образом:

Этап 4. Кодирование. Переводим разработанный алгоритм на язык программирования — составляем программу. Новым в задании является описание и использование матрицы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]