Лекции по проге / 7_Многомерные массивы
.pdf
Пример объявления и инициализации двумерного массива
//Поле игры ”крестики-нолики”
//0 – нолик
//1 – крестик
//-1 – пусто
char battlefield[3][3]=
{ |
|
|
|
{ 0, 1, 1}, |
// первая строка |
||
{ 1, 0, -1}, |
// |
вторая |
строка |
{-1, 1, -1} |
// |
третья |
строка |
}; |
|
|
|
|
0 |
1 |
2 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
-1 |
2 |
-1 |
1 |
-1 |
11
Задание
Объявите массив для хранения вершин шестиугольника ABCDEF в двумерной системе координат
Заполните массив координатами шестиугольника:
A(0,1), B(2,5), C(3,8), D(9,10), E(12,6),
F(11,4)
12
Пример объявления и инициализации двумерного массива
// Вершины шестиугольника int vertex[6][2]=
{
{ 0, |
1}, |
// вершина A |
{ 2, |
5}, |
// вершина B |
{ 3, |
8}, |
// вершина С |
{ 9, 10}, |
// вершина D |
|
{12, |
6}, |
// вершина E |
{11, |
4} |
// вершина F |
};
|
0 |
1 |
0 |
0 |
1 |
1 |
2 |
5 |
2 |
3 |
8 |
3 |
9 |
10 |
4 |
12 |
6 |
5 |
11 |
4 |
|
x |
y |
Кол-во памяти, занимаемой массивом =
13 |
6 x 2 x 4 = 48 байт |
|
Представление двумерного массива в памяти
Логическое представление
vertex |
0 |
1 |
0 |
0 |
1 |
1 |
2 |
5 |
2 |
3 |
8 |
3 |
9 |
10 |
4 |
12 |
6 |
5 |
11 |
4 |
Физическое представление
vertex |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
|
0 |
1 |
2 |
5 |
3 |
8 |
9 |
10 |
12 |
6 |
11 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
14
Пример трехмерного массива
//Массив символов книги - в книге не более
//700 страниц по 41 строке,
//в каждой строке до 72 символов
char book[700][41][73];
|
|
|
Алгоритм — это |
|
|
|
||
|
|
|
|
|
|
|||
|
|
|
|
|
предписание в |
|
|
|
|
|
виде |
конечной по- |
- |
|
|
||
|
|
|
|
следовательности |
|
- |
|
|
|
|
дискретных шагов, |
|
|
|
|||
|
|
которое задает |
|
|
|
|||
|
|
процесс преоб- |
|
|
|
|||
|
|
разования исход- |
- |
|
|
|||
|
|
ной информации в |
в |
- |
|
|||
|
|
|
|
результат. |
|
в |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Кол-во памяти, занимаемой массивом = |
|||||||
15 |
700 x 41 x 73 = 2095100 байт |
|||||||
Обращение к элементам многомерного массива
Обращение к элементу массива:
<имя массива>[<индекс 1>][<индекс 2>]...[<индекс N>]
Обращение к подмассиву:
<имя массива>[<индекс 1>][<индекс 2>]...[<индекс K>]
где K < N
16
Операция обращения к элементу массива
Операция обращения к элементу массива (квадратные скобки) является бинарной операцией с левой ассоциативностью
При обращении к элементу многомерного массива происходит последовательное применение операции слева направо:
<имя массива>[<индекс 1>][<индекс 2>]
<подмассив> |
[<индекс 2>] |
17 |
<значение элемента> |
Обращение к элементу массива как результат вычисления выражения
|
|
0 |
|
|
1 |
|
|
2 |
|
0 |
1 |
|
0 |
1 |
|
0 |
1 |
0 |
0 |
1 |
0 |
7 |
3 |
0 |
9 |
4 |
1 |
2 |
5 |
1 |
9 |
5 |
1 |
6 |
8 |
2 |
3 |
8 |
2 |
0 |
2 |
2 |
9 |
9 |
int arr[3][3][2]
arr[1] [2] [0]
1
|
0 |
1 |
0 |
7 |
3 |
1 |
9 |
5 |
2 |
0 |
2 |
int [3][2]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
0 |
|
2 |
|
|
|
|
1 |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
||||||
|
|
int [2] |
|
|
2 |
0 |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int
Обращение к элементу массива как результат вычисления выражения
Алгоритм — это
char [3][12][15] предписание в
виде конечной по- -
следовательности - дискретных шагов, которое задает
процесс преобразования исход- - ной информации в в -
результат. в
char [12][15]
book [0] [7] [12]
Алгоритм — это предписание в виде конечной последовательности дискретных шагов, которое задает
процесс преобразования исходной информации в
результат.
char [15]
процесс преоб-
19 |
char |
б |
|
|
Задание
Какое значение будет возвращено в результате следующего выражения
battlefield[2]
Какое значение будет возвращено в результате следующего выражения
battlefield[1][2]
20
