Массивы в C++: учимся использовать в своих программах

обложка статьи

Всем привет! В данном уроке мы рассмотрим чрезвычайно популярную структуру хранения данных - массивы. Массивы вы можете встретить в любом языке программирования, поскольку без них хранение данных было бы очень тяжелой задачей. Давай начнем!

Что такое массив?

Массив - это набор однотипных данных. Например, вы можете хранить все носки в одном месте. Для этого вы используете полку. В C++ множество элементов хранятся в массивах.

Для лучшего понимания давайте рассмотрим следующею картинку:

Массив целых чисел

По ней мы можем понять следующее:

  • Каждый массив должен иметь свое название.
  • Он может в себе содержать от одного элемента до бесконечности (это в теории, на практике размер массива ограничивается памятью компьютера).
  • Все элементы должны быть одного типа. Так, например, вы не можете в одном массиве хранить переменные типа int и типа double.

Теперь, когда вы понимаете концепцию массива, мы можем перейти к его реализацией на C++.

Используем массивы в C++

В C++ с массивами довольно легко работать (поскольку массивы содержат много однотипных значений, для их обработки удобно использовать цикл for). Давайте научимся это делать с объявления массива.

Инициализация массива

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

<тип> <имя массива> [ <кол-во элементов > ];

Например:

int arr[50];

Этим кодом мы создали массив типа int с именем arr в котором может храниться до 50-ти элементов.

Также можно использовать и другие типы:

float myTestArrayForLesson[10 * 1000 + 1];

Данный код также абсолютно корректен. Давайте также рассмотрим способ указания значения элементам массива при его инициализации:

int arr[] = {0, 1, 2, 3, 4, 5}; // массив будет иметь 6 элементов (от 0 до 5)

int mas[100] = {0}; // все 100 элементов будут иметь значение 0

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

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

Обращение к элементам массива

Очень важный момент! В C++ нумерация элементов массива идет с нуля. Таким образом второй элемент будет иметь индекс 1, а десятый - 9. к сожалению, многие новички забывают про это.

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

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

arr[6] = 7 * 4; // arr[6] равен 28

Для обращения к элементу массива в C++ мы должны использовать следующею конструкцию:

<любой код> <имя массива> [ <№ элемента> ] <любой код>

Это может выглядеть следующим образом:

cout << arr[10] << ", " << arr[11] << endl;

Таким образом мы выводим на экран значения одиннадцатого и двенадцатого элементов.

Двухмерные массивы

Очень часто при решении практических задач возникает потребность в использовании таблиц, матриц и т. д. В таком случае нам может пригодится отличная модификации массива - двухмерные (и более) массивы. Для этого нам просто нужно объявить массив массивов. Делается это следующим образом:

int arr[100][50] = {0}; // двухмерный массив

Этим кодом мы создали матрицу размером 100x50, которая изначально заполнена нулями. Ее использование ничуть не отличается от выше рассмотренных обычных массивов:

int matrix[100][100] = {0};

matrix[5][10] = 11;

matrix[10][5] = 1;

cout << "Interesting values:\n";

cout << matrix[0][0] << ", " << matrix[5][10] << ", " << matrix[10][5] << endl;

Если мы выполним такой код (предварительно обернув его в функцию main), то увидим следующее:

Interesting values:
0, 11, 1

Process returned 0 (0x0) execution time : 0.020 s
Press any key to continue.

Как видите работать с двухмерными массивами также просто как и с их одномерными аналогами. Теперь давайте напишем простенькую программу, которая будет использовать массивы.

Пример

А реализовывать мы будем хранилище данных. Изначально оно будет пустое (содержать нули). Пользователь сможет записывать в нее значения и извлекать при необходимости (пользователь будет указывать номер дома и квартиры человека, а хранить мы будем его возраст).

Вот код данной программы:

#include <iostream>
#include <stdlib.h>

using namespace std;

int main() {
    int data[500][500] = {0}; // массив

    string type; // тип запроса
    int x, y, val;
    while (true) { // бесконечный цикл
        cin >> type; // узнаем тип запроса

        if (type == "End") { // если End, то завершаем работу
            break;
        } else if (type == "Insert") { // вставка
            cin >> x >> y >> val;

            data[x][y] = val;
        } else if (type == "Delete") { // удаление
            cin >> x >> y;

            data[x][y] = 0;
        } else if (type == "Get") { // получение значения
            cin >> x >> y;

            cout << data[x][y] << endl;
        } else { // что-то пошло не так
            cout << "Error! Let's try again." << endl;
        }
    }

    cout << "\nOk. Good work." << endl;

    return 0;
}

Вот пример работы данной программы:

Insert 1 1 4
Insert 5 4 2
Inser
Error! Let's try again.
Get 1 2
0
Get 5 4
2
Get 1 1
4
Delete 1 1
Get 1 1
0
End

Ok. Good work.

Process returned 0 (0x0) execution time : 0.020 s
Press any key to continue.

Здесь были использованы двухмерные массивы в C++ для хранения данных. Если вы что-то не поняли, то можете оставить свой вопрос в комментариях (мы оперативно отвечаем:-) ).

Чтобы вы лучше усвоили урок, расширьте функционал данной программы следующим образом:

  1. Добавьте возможность узнать, живет ли в данной квартире кто-нибудь или нет (подсказка: заведите массив типа bool).
  2. Установите ограничения на x и y. Сейчас программа не будет работать при x >= 500. Для решения этой проблемы выводите пользователю сообщение при попытке добавить элемент с некорректными значениями x или y.

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

Спасибо за внимание!

« Линейный поиск в C++

Цикл while в C++ »

Обсуждение