Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Многомерные массивы






Многомерные массивы задаются указанием каждого измерения в квадратных скобках. В памяти многомерные массивы располагаются в последовательных ячейках построчно. Многомерные массивы размещаются так, что при переходе к следующему элементу быстрее всего изменяется последний индекс.

Для доступа к элементу многомерного массива указываются все его индексы.

При инициализации многомерного массива он представляется либо как массив из массивов, при этом каждый массив заключается в свои фигурные скобки (в этом случае крайнюю левую размерность при описании можно не указывать), либо задается общий список элементов в том порядке, в котором элементы располагаются в памяти.

Например:

 

//одномерный массив (вектор) размерностью 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. Как определить размер одномерного массива, зная его имя?






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.