Практическая работа 8. Обработка двухмерных массивов среде Visual C. Цель работы Изучение двумерных массивов в языке С
Скачать 16.88 Kb.
|
Практическая работа №8. Обработка двухмерных массивов среде Visual C++. Цель работы : Изучение двумерных массивов в языке С++ . Массивы в С++ могут иметь много индексов. Обычным представлением многомерных массивов являются таблицы значений, содержащие информацию в строках и столбцах. Чтобы определить отдельный табличный элемент, нужно указать два индекса: первый (по соглашению) указывает номер строки, а второй (по соглашению) указывает номер столбца. Таблицы или массивы, которые требуют двух индексов для указания отдельного элемента, называются двумерными. Каждый элемент в двумерном массиве а определяется именем элемента в форме a[i][j]; а – это имя массива, а i и j – индексы, которые однозначно определяют каждый элемент в a. Имена элементов первой строки имеют первый индекс 0, имена элементов четвертого столбца имеют второй индекс 3. Многомерные массивы могут получать начальные значения в своих объявления точно так же, как массивы с единственным индексом. Значения группируются в строки, заключенные в фигурные скобки: intb [2][3] = {{1,2,3,}, {4,5,6}}; Если начальных значений в данной строке не хватает для их присвоения всем элементам строки, то остающимся элементам строки присваиваются нулевые значения intb [2][3] = {{1,}, {4,5,6}}; intc [2][3] = {{1,2,3,4,5}; Объявление, ввод и вывод двумерного массива Объявление int A[n] создает в памяти одномерный массив: набор пронумерованных элементов, идущих в памяти последовательно. К каждому элементу массива можно обратиться, указав один индекс - номер этого элемента. Но можно создать и двумерный массив следующим образом: int A[n][m]. Данное объявление создает массив из n объектов, каждый из которых в свою очередь является массивом типа int [m]. Тогда A[i], где i принимает значения от 0 до n-1 будет в свою очередь одним из n созданных обычных массивов, и обратиться к элементу с номером j в этом массиве можно через A[i][j]. Подобные объекты (массивы массивов) также называют двумерными массивами. Двумерные массивы можно представлять в виде квадратной таблицы, в которой первый индекс элемента означает номер строки, а второй индекс – номер столбца. Например, массив A[3][4] будет состоять из 12 элементов и его можно записать в виде A[0][0] A[0][1] A[0][2] A[0][3] A[1][0] A[1][1] A[1][2] A[1][3] A[2][0] A[2][1] A[2][2] A[2][3] Для считывания, вывода на экран и обработки двумерных массивов необходимо использовать вложенные циклы. Первый цикл – по первому индексу (то есть по всем строкам), второй цикл – по второму индексу, то есть по всем элементам в строках (столбцам). Например, вывести на экран двумерный массив в виде таблицы, разделяя элементы в строке одним пробелом можно следующим образом: int A[n][m]; for (int i = 0; i < n; ++i) { // Выводим на экран строку i for (int j = 0; j < m; ++j) { cout << A[i][j] << " "; } cout << endl; // Строка завершается символом перехода на новую строку } А считать двумерный массив с клавиатуры можно при помощи еще более простого алгоритма (массив вводится по строкам, то есть в порядке, соответствующему первому примеру): for (i = 0; i < n; ++i) { for (j = 0; j < m; ++j) { cin >> A[i][j]; } } Обработка двумерного массива Обработка двумерных массивов производится аналогичным образом. Например, если мы хотим записать в массив таблицу умножения, то есть присвоить элементу A[i][j] значение i * j, это можно сделать следующим образом при помощи вложенных циклов: for (i = 0; i < n; ++i) { for (j = 0; j < m; ++j) { A[i][j] = i * j; } } Рассмотрим более сложную задачу и несколько способов ее решения. Пусть дан квадратный двумерный массив int A[n][n]. Необходимо элементам, находящимся на главной диагонали проходящей из левого верхнего угла в правый нижний (то есть тем элементам A[i][j], для которых i==j) присвоить значение 1, элементам, находящимся выше главной диагонали – значение 0, элементам, нахощящимся ниже главной диагонали – значение 2. То есть получить такой массив (пример для n==4): 1 0 0 0 2 1 0 0 2 2 1 0 2 2 2 1 Рассмотрим несколько способов решения этой задачи. Элементы, которые лежат выше главной диагонали – это элементы A[i][j], для которых i Ход работы Составить программу для заполнения элементов массива 4х4 следующим образом: 1 2 2 2 0 1 2 2 0 0 1 2 0 0 0 1 Составить программу для поиска позиций искомого элемента в двумерном массиве 4х6, и вывода на экран всех его позиций. Т.е. пользователь вводит с клавиатуры значение элемента, а программа выводит на экран все его позиции при поиске или сообщение что таких элементов нет. |