Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lesson_7 генератор_ инициализация массива.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
133 Кб
Скачать
☆

Инициализация двумерного массива

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

// Инициализация одномерного массива

int btus[5] = {23, 26, 24, 31, 28};

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

int maxtemps[4][5] = // двумерный массив

{

{96, 100, 87, 101, 105}, // значения для maxtemps[0]

(96, 98, 91, 107, 104}, // значения для maxtemps[1]

{97, 101, 93, 108, 107}, // значения для maxtemps[2]

{98, 103, 95, 109, 108} // значения для maxtemps [3]

Массив maxtemps содержит четыре строки по пять чисел в каждой.

Выражение {9 6, 10 0, 87, 101, 105} инициализирует первую строку, представляемую как maxtemps [0]. Стиль размещения каждой строки данных в отдельной строке кода улучшает читабельность.

Объявление и расположение в памяти.

Двумерный массив представляет собой совокупность строк и столбцов, на пересечении которых находится конкретное значение. Объявить двумерный массив несложно, необходимо указать количество строк и столбцов. При этом, здесь действуют все теже правила, что и при объявлении одномерного массива. Т. е. нельзя в качестве количества строк и столбцов указывать неконстантные и нецелочисленные значения.

Общий синтаксис:

тип_данных имя_массива [число_строк][число_столбцов];

Пример:

const int row=3; // строки

const int col=4; // столбцы

int array[row][col]; // массив размером row на col(3х4)

Инициализация.

Инициализация двумерного массива также аналогична инициализации одномерного:

1. Инициализация при создании.

Каждая строка заключается в отдельные фигурные скобки:

int array[2][2]={{1,2},{7,8}};

Значения указываются подряд и построчно вписываются в массив:

int array[2][2]={7,8,10,3};

Если значение пропущенно, оно будет инициализированно нулем:

int array[3][3]={{7,8},{10,3,5}};

2. Инициализация c помощью цикла.

Откроем один секрет - двумерный массив можно рассматривать как совокупность, не просто строк, а одномерных массивов. То есть, один одномерный массив, мы заполняем простым циклом, перебирая конкретные элементы, а при совокупности, нам необходимо перебирать еще и отдельные массивы.

#include<iostream>

#include<stdlib.h> // в этом файле содержатся функции rand и srand

#include<time.h> // в этом файле содержится функция time

using namespace std;

void main()

{

const int row=3; // строки

const int col=3; // столбцы

int mr[row][col]; // массив размером row на col

// перебираем отдельные строки (одномерные массивы в совокупности)

for(int i=0; i<row; i++)

{

// перебираем отдельные элементы каждой строки

for(int j=0; j<col;j++)

{

// инициализация элементов значениями в диапазоне от 0 до 100

mr[i][j]=rand()%100;

// показ значений на экран

cout<<mr[i][j]<<" ";

}

// переход на другую строку матрицы

cout<<"\n\n";

}

}

Примечание: Обращение к конкретному элементу массива производится по номеру строки и номеру столбца, например - mr[2][1] - значение, лежащее на пересечении второй строки и первого столбца.

Работа с двумерным массивом не намного сложнее, чем с одномерным - докажем это на практике

Во многих распространенных операциях с массивами применяются операторы повторения for. Например, следующий оператор for устанавливает в нуль все элементы строки 2 массива:

for ( column = 0; column < 4; column++ )

а[ 2 ][ column ] = 0;

Оператор варьирует только второй индекс (т. е. индекс столбца). Этот оператор for эквивалентен следующим операторам присваивания:

а[ 2 ][ 0 ] = 0;

а[ 2 ][ 1 ] = 0; .

а[ 2 ] [ 2 ] = 0;

а[ 2 ][ 3 ] = 0;

Следующий вложенный оператор for определяет сумму всех элементов массива а:

total = 0;

for ( row = 0; row < 3; row++ )

for ( column = 0; column < 4; column++ )

total += a[ row ][ column ];

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]