Лабораторная работа № 4
Составление программ с использованием массивов
Цель работы: 1) изучить описание, ввод и вывод статических массивов на языке С++;
2) освоить обработку массивов с использованием вложенных циклов.
Теоретические сведения
Массив - это множество однотипных переменных, занимающих смежные ячейки памяти и обозначенных одним именем.
1. С++ позволяет изменять размер массива. Т.е добавлять элемент.
2. В памяти элементы многомерных массивов расположены последовательно в ячейках в следующем порядке: сначала располагается первая строка, за ней - вторая, третья и т.д.
3. Необходимо использовать для массивов только предопределенные типы.
4. Одномерные массивы
Одномерный массив или вектор - это множество переменных, совместно использующих одно и то же имя (имя массива). В одномерном массиве доступ к отдельной переменной осуществляется по индексу (порядковому номеру).
Синтаксис для объявления одномерного массива:
тип_элемента_массива имя_массива [число_элементов];
Пример 1. Объявление одномерных массивов
int MyArr [10];
char Literal [31];
double x_arr [100];
При объявлении одномерных массивов в языке С++ необходимо соблюдение правил:
1) в объявлении массива указывается количество элементов;
2) индекс первого элемента массива равен 0. Это значение нельзя изменить или переопределить;
3) индекс последнего элемента определяется как количество элементов минус 1.
Доступ к элементам массива осуществляется через имя массива и индекс элемента, указываемый в квадратных скобках: a[1], b[25].
При работе с массивами рекомендуется проверять допустимость значения индекса массива. Допустимыми являются значения индексов в диапазоне от 0 до число_элементов – 1.
Ввод массива осуществляется с использованием цикла:
Если начальных значений задано меньше, чем элементов в массиве, компилятор присвоит оставшимся элементам массива значение 0. Если количество начальных значений больше, чем число в квадратных скобках, компилятор выдаст сообщение об ошибке.
Точное число начальных значений можно не указывать, так как язык С++ позволяет задавать размер массива автоматически, используя количество элементов в соответствующем списке начальных значений. Следовательно, число в квадратных скобках при описании массива может отсутствовать. В этом случае размер массива определит компилятор, например, double x[ ]= {1,2,3};
Многомерные массивы
В многомерном массиве каждый дополнительный индекс обеспечивает дополнительное средство доступа к конкретному элементу, или дополнительное измерение. Наиболее распространенным видом многомерного массива являются двумерные массивы или матрицы.
Общий синтаксис для объявления двумерных и трехмерных массивов:
тип_элемента имя_массива [размер_1] [размер_2];
тип_элемента имя_массива [размер_1 ] [размер_2] [размер_3];
Как и в одномерных массивах, каждый индекс имеет нижнюю границу, равную 0, а число элементов для каждого уровня индекса определяется при объявлении многомерного массива.
Пример 5. Объявление многомерных массивов
double matrix A [100][10];
char table [41][22][3];
int index [7][12];
Большинство компиляторов хранит элементы многомерного массива друг за другом, т.е. как длинный одномерный массив. Исполняемый модуль вычисляет, где расположен искомый элемент в этом массиве.
Однако заполнение и обработку многомерных массивов чаще всего производят пользуясь вложенными циклами.
С++ дает возможность инициализировать многомерный массив способом, аналогичным инициализации одномерных массивов. Для этого нужно использовать список значений, расположенных в той же последовательности, в которой элементы многомерного массива хранятся в памяти ЭВМ.
При обработке матриц чаще всего встречаются следующие типы задач:
работа с матрицей в целом;
работа со строкой (столбцом) матрицы;
работа с диагональными элементами.
При работе с матрицей в целом, в качестве объекта для сравнения выбирают элемент с индексами (0,0), затем, последовательно перебирая все элементы матрицы, выполняют необходимые действия. Перебор элементов происходит с использованием вложенных циклов.
5. допустимы объявления:
int hats [3]= {10,20,30};
int caps [ ] = {5,7,9},компилятор автоматически вычислит размер массива и создаст массив из 10 элементов.