Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_ekzamen_CPP.doc
Скачиваний:
3
Добавлен:
21.09.2019
Размер:
311.81 Кб
Скачать
  1. Одномерные и многомерные массивы.

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

Единица данных массива называется элементом массива.

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

Одномерный массив объявляется следующим образом:

спецификатор типа идентификатор [диапазон];

Спецификатор типа определяет тип элементов массива. Идентификатор определяет имя массива. Диапазон определяет количество элементов массива.

При этом имя массива является константным указателем на его 1-й элемент. Диапазон должен быть задан положительным целочисленным литералом или именованной константой.

Пример:

int a [10]; //целочисленный литерал

const int n = 10;

int a [n]; //именованная константа

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

char a [3] = {‘a’, ‘b’, ‘c’};

int a [3] = {0, 7, 5};

При инициализации массива возможны 3 ситуации:

  1. диапазон массива = количеству значений в списке. В этом случае операция инициализации завершается успешно;

  2. количество значений в списке меньше, чем диапазон массива. В этом случае 1-е элементы инициализируются указанными элементами, а оставшиеся заполняются нулями;

  3. количество значений в списке инициализации больше, чем диапазон массива. В этом случае выдаётся сообщение об ошибке.

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

int [] = {0, 7, 5};

Доступ к элементам массива выполняется при помощи оператора индексирования, который обозначается квадратными скобками и имеет вид:

идентификатор массива [индекс];

Возвращает оператор индексирования L-value. Это означает, что значение можно читать и менять значение элементов массива.

int a [3] = {0, 7, 5};

int k = a [1];

a [2] = 10; // {0, 7, 10};

Замечание: 1) нумерация элементов массива всегда начинается с 0ж

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

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

Массив, элементы которого нумеруются несколькими индексами, называется многомерным. Допускается наличие 12-ти индексов.

Тип многомерного массива определяется следующим образом:

спецификатор_типа [диапазон_1]…[диапазон_n];

При объявлении многомерного массива память резервируется под все элементы сразу, а элементы располагаются построчно.

Двумерный массив:

int arr [2][2] – матрица 2*2;

Проинициализировать можно так:

int a [2][2] = {1, 1, 2, 2};

int a [2][2] = {{1, 1}, {2, 2}};

Для доступа к элементам многомерного массива используют оператор индексирования [ ]. Нумерация элементов начинается с 0.

int n = a [1][1]; //n = 2;

a00 a01

a10 a11

Для ввода-вывода этих элементов необходимо использовать операторы цикла:

int a [5][5];

int i,s;

printf (“input elements: ”);

for (i = 0; i<5; i++)

for (s = 0; s<5; s++)

scanf (“%d”, a [i][s]);

Обычные задачи на матрицы. И специфические задачи на поиск выхода из лабиринта, поиск пути к кладу, магические квадраты.

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

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