Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




Лабораторная работа 6

Цель работы – познакомиться с многомерными массивами, приобрести навыки написания программ на языке C++ с использованием двумерных массивов.

Теория

 

Многомерные массивы – массивы, элементами которых являются массивы. Двумерные массивы можно представлять в виде квадратной таблицы, в которой первый индекс элемента означает номер строки, а второй индекс – номер столбца. Например, массив A[3][4] будет состоять из 12 элементов и его можно записать в виде:

 

A[0][0] A[0][1] A[0][2] A[0][3]

A[1][0] A[1][1] A[1][2] A[1][3]

A[2][0] A[2][1] A[2][2] A[2][3]

 

Определение многомерного массива:

 

type имя_массива [К1] [К2] … [КN];

 

Здесь N – размерность массива, К1 - количество в массиве элементов размерности N-1 каждый и т.д.

 

Пример

int ARRAY [4] [3] [6];

Трехмерный массив ARRAY состоит из четырех элементов, каждый из которых – двухмерный массив с размерами 3 на 6. В памяти массив ARRAY размещается в порядке возрастания самого правого индекса, т.е. самый младший адрес имеет элемент ARRAY [0] [0] [0], затем идет ARRAY [0] [0] [1] и т.д.

 

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

 

Пример

int MyArray[3][3][3] = {0,1,2,3,4,5,6,7,8,9,10,11};

Начальные значения получают следующие элементы трёхмерного массива:

MyArray[0][0][0] == 0

MyArray[0][0][1] == 1

MyArray[0][0][2] == 2

MyArray[0][1][0] == 3

MyArray[0][1][1] == 4

MyArray[0][1][2] == 5

MyArray[0][2][0] == 6

MyArray[0][2][1] == 7

MyArray[0][2][2] == 8

MyArray[1][0][0] == 9

MyArray[1][0][1] == 10

MyArray[1][0][2] == 11

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

 

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

 

Пример

int MyArray[3][3][3] = {{{0,1}}, {{100},{200,210},{300}},

{{1000},{2000,2100},{3000,3100,3200}}};

В результате выполнения этого оператора определения будут означены следующие элементы массива MyArray:

MyArray[0][0][0] == 0

MyArray[0][0][1] == 1

MyArray[1][0][0] == 100

MyArray[1][1][0] == 200

MyArray[1][1][1] == 210

MyArray[1][2][0] == 300

MyArray[2][0][0] == 1000

MyArray[2][1][0] == 2000

MyArray[2][1][1] == 2100

MyArray[2][2][0] == 3000

MyArray[2][2][1] == 3100

MyArray[2][2][2] == 3200

 

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

 

Пример

int MyArray[ ][3][3] = {{{0,1}}, {{100},{200,210},{300}},

{{1000},{2000,2100}}};

Транслятор понимает, что речь идёт об определении массива размерности 3*3*3.

 

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

 

Пример

const int n=10, m=5;

int A[n][m];

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

{

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

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

cout<<endl;

}

 

Задание

1. Запустите C++Builder.

2. Составьте программу в соответствии с вашим вариантом задания (таблица), используя двумерный массив. Размеры массива задайте сами. Сделайте три варианта программы. В первом элементы массива определяются в программе, во втором задаются пользователем, а в третьем заполняются с помощью генератора случайных чисел. Исходный и конечный массивы выведите на экран.

3. Выполните компиляцию программы. При наличии ошибок внести исправления.

4. Сдайте отчет преподавателю.

 

Варианты

 

Задача
  Поменять содержимое строк и столбцов в массиве
  Поставить строки в обратном порядке
  Вычислить сумму значений элементов массива
  Заменить недиагональные элементы матрицы нулями
  Заполнить массив по следующему правилу. Числа на диагонали, идущей из правого верхнего в левый нижний угол равны 1; числа, стоящие выше этой диагонали, равны 0; числа, стоящие ниже этой диагонали, равны 2
  Проверить, является ли массив симметричным относительно главной диагонали
  Найти максимальный элемент в массиве
  Вычислить квадрат каждого элемента массива
  Определить количество строк в массиве, которые содержат элемент с заданным значением
  Заменить недиагональные элементы массива элементами с заданным значением
  Поменять местами первый и последний столбцы
  К диагональным элементам массива прибавить заданное число
  Вычислить разность значений элементов массива
  Поменять местами главную и побочную диагонали в матрице
  Найти количество элементов в массиве, имеющих значение выше заданного
  Поменять местами соседние строки
  Элементы матрицы, расположенные ниже побочной диагонали, умножить на заданное число
  Поставить столбцы в обратном порядке

Продолжение табл.

Задача
  Найти минимальный элемент в массиве
  Заменить диагональные элементы матрицы нулями
  Определить количество столбцов в массиве, которые содержат элемент с заданным значением
  Заменить диагональные элементы массива числами от 0 до 4
  Элементы матрицы, расположенные выше главной диагонали, сложить с заданным числом
  Определить количество столбцов в массиве, которые содержат элемент с заданным значением
  Вычислить произведение значений элементов массива




Поделиться с друзьями:


Дата добавления: 2015-08-31; Просмотров: 579; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.