Cout << "static_array";

Cout << "static_array";

staziss

Привет! Сегодня мы рассмотрим самую распространённую и лёгкую в использовании структуру данных, а именно массив.

Представление о массиве.

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

Графическое представление массива можно представить в виде непрерывной ленты.

массив типа int содержащий 8 элементов

Адрес массива представляет собой адрес начального (нулевого) элемента массива. Для обращения к элементам массива используется порядковый номер (индекс) элемента, начальное значение которого равно 0. Так, если массив содержит 8 элементов, то индексы элементов массива меняются в пределах от 0 до 8 - 1 = 7.


Зачем мне нужен массив?

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

Сохранили рост восьми человек (без массива)

На примере мы видим, что данная реализация очень громоздка, занимает 21 строчку кода. Ещё нам будет неудобно обращаться к каждому элементу, так как названия постоянно изменяются.

Сохранили рост восьми человек (с использованием массива)

С использованием массива сразу видно сокращение размера кода.


Как реализовать массив?

Статический массив - это массив с заранее определённым размером, т.е нам необходимо изначально объявить размер массива.

const int size = 8; // вместо 8 можно записать любой размер

После объявления размера массива необходимо создать сам массив. Изначально нам надо определиться какого типа элементы будут в нашем массиве(int, double, char, string, и т.д). Потом нам необходима задать название нашему массиву(нужно научиться давать осмысленные названия для своих переменных, обычно массивы именуются arr - от английского array - массив).

int arr[size];

Так же если нам не нужно заполнять массив в ручную, а необходимо записать какую-нибудь маску или карту элементов, то для этого не нужно обязательно задавать размер массива.

int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};

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

int arr[size]{}; //заполнить массив нулями


Как работать с массивом?

Для работы с массивами нам необходимы циклы(обычно использую цикл for, так как он рассчитан на использование счётчика, но можно использовать while, но счётчик нужно инициализировать снаружи цикла). Начнём с самого необходимого, заполнение массива.

Заполнение массива

Мы создаём цикл for и задаём переменную i = 0 (счётчик), который при каждой итерации цикла будет увеличиваться на один, условием выхода из цикла является значение size - 1, т.е счётчик изменятся в отрезке [0; size - 1] после этого цикл завершается.

С выводом дела обстоят аналогично.

Вывод массива

Для наглядности можете изменять этот код и смотреть на вывод.

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

обмен первого элемента на последний

Переменная temp необходима для буферизации элемента(подумайте почему используем буфер, ведь мы могли просто написать arr[0]=arr[size-1]; arr[size-1]=arr[0]). Но это простой алгоритм, а вдруг нам понадобиться отзеркалить всю последовательность, разве мы будем прописывать всё в ручную? Конечно нет! Для этого нам опять понадобятся циклы.

Переворот массива

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

наглядный алгоритм

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

Поздравляю, вы научились объявлять массив и обращаться к его элементам! :)

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

С ув. TechMentor.

Упражнения для закрепления материала.

1.Вывести цифры, которые входят в число

Условие:

Дано целое положительное число N.

Необходимо вывести в порядке возрастания все цифры, встречающиеся в десятичной записи данного числа N.

Входные данные:

Входной файл содержит единственное число N (1 ≤ N ≤ 10**9).

Выходные данные:

В выходной файл необходимо вывести через пробел в порядке возрастания цифры, встречающиеся в числе N.

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

Тест 1.

Входные данные:

365

Выходные данные:

3 6 5

Тест 2.

Входные данные:

1106

Выходные данные:

0 1 6



Report Page