Файл: Лабораторная работа. Массивы.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.11.2023

Просмотров: 64

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Лабораторная работа. Массивы

Массив — это структура однотипных элементов, занимающих непрерывную область памяти. С массивом связаны следующие его свойства: имя, тип, размерность, размер.

Формат описания массива следующий:

тип элементов имя [константное_выражение]

Константное выражение определяет размер массива, т. е. число элементов этого массива. Например, согласно описанию

int A[10];

объявлен массив с именем А, содержащий 10 элементов целого типа. Элементы массива обозначаются индексированными именами. Нижнее значение индекса равно 0:

А[0], А[1], А[2], А[3], А[4], А[5], А[6], А[7], А[8], А[9]

Размер массива, указанный в описании, всегда на единицу больше максимального значения индекса.

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

int р[]={2, 4, 6, 10, 1};

В этом случае создается массив из пяти элементов со следующими значениями:

р[0]=2, р[1]=4, р[2]=6, р[3]=10, р[4]=1

В результате следующего объявления массива

int М[6]={5, 3, 2};

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

Рассмотрим несколько примеров программ обработки одномерных массивов.

Пример 1. Ввод с клавиатуры и вывод на экран одномерного массива.



Пример 2. Ввод вещественного массива и вычисление среднего значения.



В этой программе обратите внимание на определение размера массива через константу.

Пример 3. Сортировка массива «методом пузырька».



Алгоритм сортировки массива «методом пузырька» описан в разд. 3.17. В данной программе массив инициализирован. Его размер равен числу заданных значений. Чтобы сделать программу универсальной по отношению к размеру массива, значение размера вычисляется автоматически и заносится в переменную n. Для этого используется операция sizeof() — определение размера в байтах. Результат sizeof (X) равен размеру в памяти всего массива Х — 20 байтам. Результат sizeof(X[0]) равен размеру одного элемента массива — 2 байтам. Отношение этих величин равно 10 — числу элементов массива. Внимательно проанализируйте организацию перебора значений параметров вложенных циклов — i, j .


В результате выполнения этой программы на экран выведется упорядоченная числовая последовательность

1 2 3 4 5 6 7 8 9 10

Многомерные массивы. Двумерный массив трактуется как одномерный массив, элементами которого является массив с указанным в описании типом элементов. Например, оператор

float R[5][10];

объявляет массив из пяти элементов, каждый из которых есть массив из десяти вещественных чисел. Отдельные величины этого массива обозначаются именами с двумя индексами: R[0] [0], R[0][l], ..., R[4][9]. Объединять индексы в одну пару скобок нельзя, т. е. запись R[2,3] ошибочна. Пример описания трехмерного массива:

double X[3] [7] [20];

Как и в Паскале, порядок расположения элементов многомерного массива в памяти такой, что прежде всего меняется последний индекс, затем предпоследний и т.д., и лишь один раз пробегает свои значения первый индекс.

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

int M[3][3]={11,12,13,

21,22,23,

31,32,33};

Рассмотрим примеры программ обработки матриц — числовых двумерных массивов.

Пример 4. Вычисление и вывод на экран таблицы умножения в форме матрицы Пифагора.



По данной программе в двумерном массиве а не будут заполнены нулевая строка и нулевой столбец. По-прежнему интерпретируем первый индекс двумерного массива как номер строки матрицы, а второй индекс — как номер столбца.

Пример 5. Заполнение матрицы случайными числами в диапазоне от 0 до 99 и поиск в ней максимального значения.



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



В данной программе имеются новые элементы, использование которых требует пояснения. В стандартной библиотеке с заголовочным файлом stdlib.h содержится функция, прототип которой имеет вид: int rand(void).

Результатом этой функции является целое случайное число из диапазона от 0 до RAND_MAX. Значение константы RAND_MAX определено в заголовочном файле stdlib.h и обычно равно 32767 — максимально допустимому целому числу. Для получения случайных чисел в диапазоне от 0 до N — 1 достаточно вычислить остаток от целого деления rand() на N. Функция с прототипом void randomize (void) выполняет первоначальную настройку датчика случайных чисел так, чтобы последовательность чисел не повторялась при повторном выполнении программы.



Другим новым элементом в данной программе является использование манипуляторов для управления потоковым выводом с помощью стандартного объекта cout. Манипуляторы объявляются в заголовочном файле iomanip.h. Манипулятор setw(n) влияет на формат следующего элемента выходного потока. Он указывает на то, что значение будет выводиться в n позиций на экране (в программе n = 6). Другой использованный манипулятор — endl — обозначает конец строки и переводит экранный курсор на начало новой строки. Его действие аналогично действию управляющего символа \n.

Упражнения

Написать программу на языке С++

1.

2.Написать программу на языке С++



3.Написать программу на языке С++



4.Написать программу на языке С++



5.Написать программу на языке С++



6.Написать программу на языке С++



7.Написать программу на языке С++