![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Многомерные массивы
Многомерные массивы задаются указанием каждого измерения в квадратных скобках. В памяти многомерные массивы располагаются в последовательных ячейках построчно. Многомерные массивы размещаются так, что при переходе к следующему элементу быстрее всего изменяется последний индекс. Для доступа к элементу многомерного массива указываются все его индексы. При инициализации многомерного массива он представляется либо как массив из массивов, при этом каждый массив заключается в свои фигурные скобки (в этом случае крайнюю левую размерность при описании можно не указывать), либо задается общий список элементов в том порядке, в котором элементы располагаются в памяти. Например:
//одномерный массив (вектор) размерностью 10 int vector [ 10 ];
//двумерный массив (матрица) размерностью 3x3 int matrix [ 3 ][ 3 ];
//двумерный массив размерностью 6 строк на 8 столбцов int x [ 6 ][ 8 ];
//трехмерный массив размерностью 6x3x2 int y [ 6 ][ 3 ][ 2 ];
//шестимерный массив размерностью 6x3x2x5x8x4 int z [ 6 ][ 3 ][ 2 ][ 5 ][ 8 ][ 4 ];
//объявление массива с инициализацией //крайняя левая размерность отсутствует int mass0 [][ 2 ] = { { 1, 1 }, { 0, 2 }, { 3, 0 } };
//объявление массива с инициализацией int mass1 [ 3 ][ 2 ] = { { 1, 1 }, { 0, 2 }, { 3, 0 } };
//объявление массива с инициализацией //для удобства чтения каждая строка массива находится в отдельной строчке int mass2 [ 3 ][ 2 ] = { { 1, 1 }, { 0, 2 }, { 3, 0 } };
//объявление массива с инициализацией //внутренние фигурные скобки могут отсутствовать int mass3 [ 3 ][ 2 ] = ( 1, 1, 0, 2, 3, 0 ):
//объявление массива с инициализацией //для удобства чтения каждая строка массива находится на отдельной строчке int mass4 [ 3 ][ 2 ] = ( 1, 1, 0, 2, 3, 0 ):
Пример: в целочисленной матрице 3x4 определить номера строки и столбца элемента, который равен нулю. Массив задать случайными числами.
#include " stdafx.h" #include < iostream>
using namespace std;
void main () { setlocale ( LC_ALL, " Russian" );
const int N = 3, M = 4; int r [ N ][ M ];
//заполним массив случайными числами от 0 до 9 //внешний цикл для перемещения по строкам for (int i = 0; i < N; i ++) //внутренний цикл для перемещения по столбцам for (int j = 0; j < M; j ++) //остаток от деления на 10 позволяет //получить требуемый диапазон значений r [ i ][ j ] = rand () % 10;
//выведем массив на экран for (int i = 0; i < N; i ++) { for (int j = 0; j < M; j ++) { cout < < r [ i ][ j ] < < " "; } //перейдем на новую строчку cout < < endl; }
cout < < " Нулевые элементы: " < < endl; //найдем элементы равные 0 и выведем их индексы на экран for (int i = 0; i < N; i ++) for (int j = 0; j < M; j ++) if ( r [ i ][ j ] == 0 ) { cout < < " a[" < < i < < " ][" < < j < < " ] == 0" < < endl; } }
Контрольные вопросы 1. Как определить массив? 2. Как проинициализировать массив? 3. Какие варианты объявления с инициализацией вы знаете? 4. Как обратиться к элементу массива? 5. Как объявить многомерный массив? 6. Как проинициализировать многомерный массив? 7. Как определить размер одномерного массива, зная его имя?
|