|
матрицы. Лаб_#5 Матрицы. Системы информационной безопасности
Тема: Многомерные массивы (матрицы) Дисциплина: Основы алгоритмизации и программирования
Для студентов специальности:
«Системы информационной безопасности»
Автор: стар. преп. Бартосик Ф.М. Карагандинский технический университет
Кафедра информационных технологий и безопасности
Лабораторная работа
Цель работы Получение практических навыков в работе с многомерными массивами в языке C/C++. Задачи работы Освоить следующие темы: - операторы цикла языка C/C++;
- вложенные циклы;
- матрицы.
Содержание работы: - Создать квадратную матрицу целых чисел размером 9х9;
- Если по условию задания матрицу следует заполнить случайными числами, рекомендуется выбирать эти числа из диапазона 0 - 99. Если по условию задания в матрицу следует записать линейную последовательность чисел, имеется в виду последовательность: 1, 2, 3, 4, 5, ... ;
- Согласно варианта задания указано, какую обработку матрицы требуется выполнить;
- Вывести на печать исходные данные и результат.
Порядок выполнения работы: - Ознакомление с теоретической частью;
- Изучение типового примера;
- Выполнение индивидуального задания;
- Ответы на контрольные вопросы;
- Оформление отчета.
Многомерные массивы В C и C++ поддерживаются многомерные массивы. При объявлении многомерных массивов задается тип элементов массива, имя массива и затем, в отдельных квадратных скобках – количество элементов по каждой размерности: Тип Имя_массива [Размер1][Размер2]...[РазмерN]; Пример. const int K=4; const int N=3; const int M=5; int one[N]; // одномерный массив int two[N][M]; // двумерный массив int three[K][N][M]; // трехмерный массив for (int i=0;i for (int p=0;p for (int q=0;q for (int i=0;i for (int p=0;p for (int q=0;q three[i][p][q]=one[i]+ two[p][q]; Разбор типового варианта (алгоритм) Выполним следующее задание. Заполнить матрицу случайными числами. Отобразить главную и побочную диагонали симметрично относительно вертикальной оси. Вначале (первый блок программы) необходимо заполнить матрицу случайными числами и вывести ее на экран. Это можно сделать с помощью двух вложенных циклов. Затем (второй блок) – отобразить главную и побочную диагональ симметрично вертикальной оси. Обозначим размерность матрицы как s, номер строки как i, а номер столбца как j, и заметим, что нумерация строк и столбцов будет начинаться с 0, отсюда можно определить, что если элементы главной диагонали имеют индексы [i][i], то соответствующие элементы побочной диагонали имеют индексы [i][s-1-i]. Следовательно, алгоритм может состоять из перебора матрицы строка за строкой и сменой соответствующих элементов главной и побочной диагоналей местами (с помощью вспомогательной переменной x). Затем (третий блок) необходимо вывести на экран элементы новой матрицы. Разбор типового варианта (листинг) #include #include #include #include int main() { const int s = 9; int A[s][s]; short i,j,x; srand(time(NULL)); printf("\nOriginal matrix:\n\n"); //заполняем и выводим матрицу for(i=0;i for(j=0;j A[i][j]=rand()%100; printf("%3d",A[i][j]); } putchar('\n'); } Разбор типового варианта (листинг, продолжение) //меняем диагонали for(i=0;i x=A[i][i]; A[i][i]=A[i][s-1-i]; A[i][s-1-i]=x; } printf("\nNew matrix:\n\n"); //выводим результирующую матрицу for(i=0;i for(j=0;j printf("%3d",A[i][j]); putchar('\n'); } getch(); return 0; } Правила отчетности студента Отчет должен содержать: - Титульный лист;
- Цель работы;
- Постановка задачи;
- Текст программы (с комментариями);
- Результат выполнения программы;
- Ответы на контрольные вопросы.
Контрольные вопросы: - Как происходит объявление статических многомерных массивов, и обращение к элементам таких массивов?
- Представление статических массивов в памяти;
- Генерация случайных чисел;
- Вложенные циклы.
Задания (варианты 1-4): № вар-та
| Задание
| Изображение
| 1
| Заполнить матрицу случайными числами. Развернуть матрицу на 90° по часовой стрелке.
| | 2
| Заполнить матрицу случайными числами. Отобразить матрицу симметрично относительно главной диагонали
| | 3
| Заполнить матрицу линейной последовательностью чисел, от левого верхнего угла по спирали: вправо - вниз - влево - вверх.
| | 4
| Заполнить матрицу линейной последовательностью чисел, от центра по спирали: влево - вниз - вправо - вверх.
| | Задания (варианты 5-8): № вар-та
| Задание
| Изображение
| 5
| Заполнить матрицу случайными числами. На главной диагонали разместить суммы элементов, которые лежат на той же строке и том же столбце.
| | 6
| Заполнить матрицу линейной последовательностью чисел, от левого верхнего угла по диагонали: вправо – вверх
| | 7
| Заполнить матрицу линейной последовательностью чисел, от левого нижнего угла по диагонали: влево - вверх.
| | 8
| Заполнить матрицу случайными числами. Отобразить симметрично относительно вертикальной оси секторы матрицы, которые лежат влево и вправо от главной и побочной диагоналей.
| | Задания (варианты 9-12): № вар-та
| Задание
| Изображение
| 9
| Заполнить секторы матрицы, которые лежат влево и вправо от главной и побочной диагоналей, линейной последовательностью чисел, от левого верхнего угла вниз - вправо. Остаток матрицы заполнить нулями.
| | 10
| Заполнить матрицу случайными числами. Разместить на побочной диагонали суммы элементов, которые лежат на диагоналях, перпендикулярных к побочной.
| | 11
| Заполнить матрицу случайными числами. Разместить на главной диагонали суммы элементов, которые лежат на диагоналях, перпендикулярных к главной.
| | 12
| Заполнить матрицу случайными числами. Отобразить верхнюю половину матрицы на нижнюю зеркально симметрично относительно горизонтальной оси.
| | Задания (варианты 13-16): № вар-та
| Задание
| Изображение
| 13
| Заполнить матрицу случайными числами. Розбить матрицу на квадраты размером 3х3. В центре каждого квадрата поместить сумму остальных элементов квадрата.
| | 14
| Заполнить матрицу случайными числами. Отобразить правую половину матрицы на левую зеркально симметрично относительно вертикальной оси.
| | 15
| Заполнить секторы матрицы, которые лежат влево и вправо от главной и побочной диагоналей линейной последовательностью чисел, от левого верхнего угла вправо - вниз. Остаток матрицы заполнить нулями.
| | 16
| Заполнить матрицу случайными числами. Развернуть матрицу на 90o против часовой стрелки.
| | Задания (варианты 17-20): № вар-та
| Задание
| Изображение
| 17
| Заполнить матрицу случайными числами. Отобразить матрицу симметрично относительно побочной диагонали
| | 18
| Заполнить матрицу линейной последовательностью чисел, от левого верхнего угла по спирали: вниз - вправо - вверх - влево.
| | 19
| Заполнить матрицу линейной последовательностью чисел, от центра по спирали: вниз - влево - вверх - вправо.
| | 20
| Заполнить матрицу случайными числами. На побочной диагонали разместить суммы элементов, которые лежат на той же строке и столбце.
| | Список литературы: - Липачёв Е.К. Технология программирования. Базовые конструкции C/C++: учебно–справочное пособие / Е.К. Липачёв. – Казань: Казан. ун-т, 2012. - 142 с.
- Сидорина, Татьяна Самоучитель Microsoft Visual Studio C++ и MFC / Татьяна Сидорина. - М.: "БХВ-Петербург", 2014. - 848 c.
- Довбуш, Галина Visual C++ на примерах / Галина Довбуш, Анатолий Хомоненко. - М.: БХВ-Петербург, 2012. - 528 c.
- Панюкова, Т. А. Языки и методы программирования. Создание простых GUI-приложений с помощью Visual С++. Учебное пособие / Т.А. Панюкова, А.В. Панюков. - Москва: Мир, 2015. - 144 c.
|
|
|