
- •Создание программ с использованием циклов. Работа с массивами
- •Введение
- •Лабораторная работа №6. Оператор цикла с параметрами
- •Выполнение лабораторной работы
- •Методические указания к выполнению лабораторной работы
- •Язык программирования Pascal
- •Var // объявление переменных
- •Лабораторная работа №7. Оператор цикла с предусловием
- •Выполнение лабораторной работы
- •Методические указания к выполнению лабораторной работы
- •Язык программирования Pascal
- •Var // объявление переменных
- •Лабораторная работа №8. Одномерный массив
- •Выполнение лабораторной работы
- •Методические указания к выполнению лабораторной работы
- •Язык программирования Pascal
- •Var // объявление переменных
- •Лабораторная работа №9. Двухмерный массив. Матрица.
- •Выполнение лабораторной работы
- •Методические указания к выполнению лабораторной работы
- •Язык программирования Pascal
- •Int a[2][3]; /* представлено в виде матрицы
- •Int a[100][100]; // матрица
- •Библиографический список
Выполнение лабораторной работы
Для выполнения работы необходимо:
формализовать задачу;
разработать алгоритм решения задачи;
составить блок-схему алгоритма;
выбрать и обосновать представление входных, промежуточных и выходных данных;
произвести кодирование;
разработать набор тестов, на которых будет проверяться программа;
продемонстрировать работу программы на наборе тестов;
оформить работу и отчитаться по ней.
Методические указания к выполнению лабораторной работы
Задание
Дана квадратная матрица 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,2 – A2,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. Кодирование. Переводим разработанный алгоритм на язык программирования — составляем программу. Новым в задании является описание и использование матрицы.