Массивы в C++.




Массив это структура данных, представленная в виде группы ячеек одного типа, объединенных под одним единым именем. Массивы используются для обработки большого количества однотипных данных. Имя массива является указателем. Отдельная ячейка данных массива называется элементом массива. Элементами массива могут быть данные любого типа. Массивы могут иметь как одно, так и более одного измерений. В зависимости от количества измерений массивы делятся на одномерные массивы, двумерные массивы, трёхмерные массивы и так далее до n-мерного массива. Чаще всего в программировании используются одномерные и двумерные массивы.

Пример инициализации массива:

string students[10] = {
    "Исаев", "Нефедов", "Люблин",
    "Ахмедова", "Подвысоцкий", "Порохин",
    "Андреев", "Хан", "Путин", "Лазьков"
};

Одномерные массивы

Одномерный массив — это массив, у которого может быть только одна строка, и n-е количество столбцов. Столбцы в одномерном массиве — это элементы массива.

Вот стандартный вид объявления одномерного массива:

тип имя_переменной [размер];

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

общее число байт = sizeof (базовый тип) *число элементов

Пример простой программы на обработку одномерного массива:

#include "stdafx.h"
#include <iostream>
using namespace std;
 
int main(int argc, char* argv[])
{
    cout << "obrabotka massiva" << endl;
    int array1[16] = { 5, -12, -12, 9, 10, 0, -9,
                    -12, -1, 23, 65, 64, 11, 43, 39, -15 }; // объявление и инициализация одномерного массива
    cout << "indeks" << "\t\t" << "element massiva" << endl; // печать заголовков
    for (int counter = 0; counter < 16; counter++)  //начало цикла
    {
    //вывод на экран индекса ячейки массива, а затем содержимого этой ячейки, в нашем случае - это целое число
     cout << "array1[" << counter << "]" << "\t\t" << array1[counter] << endl;
    }
    system("pause");
    return 0;
}

В строках 10 — 11 объявлен и проинициализирован целочисленный одномерный массив с именем array1, размер которого равен 16 ячейкам, то есть такой массив может хранить 16 чисел. Любая обработка массива осуществима только совместно с циклами. Переменную-счётчик counter будем использовать для обращения к элементам одномерного массива array1. В условии продолжения цикла for стоит строгий знак неравенства, так как шестнадцатого индекса в одномерном массиве array1 нет. А так как нумерация ячеек начинается с нуля, то элементов в массиве 16. В теле цикла for оператор cout печатает элементы одномерного массива. Напишите код в ваш компилятор и вы увидите результат данной программы.

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

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




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

int arr [2][4] = {{1,2,4,29},{3,4,6,1}};

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

Пример несложной программы, на обработку двумерного массива, которая называется «Лабиринт». Лабиринт должен быть построен на основе двумерного массива:

#include "stdafx.h"
#include <iostream>
using namespace std;
 
int main(int argc, char* argv[])
{
// 1-условно "стенки лабиринта"
// 2-"правильный путь, выход из лабиринта"
// 0-"ложный путь"
    int mas[33][20] = { {1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,}, // инициализация двумерного массива
                        {1,2,1,0,0,1,0,1,2,2,2,1,1,1,1,0,0,0,0,1,},
                        {1,2,1,1,0,1,0,1,2,1,2,2,2,2,1,0,1,1,0,1,},
                        {1,2,2,2,2,2,2,1,2,1,1,1,1,2,1,0,0,1,0,1,},
                        {1,1,1,1,1,1,2,1,2,1,0,0,1,2,1,1,0,1,0,1,},
                        {1,0,0,1,0,0,2,2,2,1,1,0,0,2,0,0,0,1,0,1,},
                        {1,0,1,1,0,1,1,1,1,1,0,0,1,2,1,1,1,1,0,1,},
                        {1,0,0,0,0,0,0,0,0,1,1,1,1,2,1,0,0,0,0,1,},
                        {1,1,1,1,1,1,0,1,1,1,2,2,2,2,1,0,1,1,1,1,},
                        {1,1,0,0,0,1,0,0,1,1,2,1,1,1,1,0,0,0,0,1,},
                        {1,0,0,1,0,0,0,0,0,1,2,2,2,2,1,1,1,1,0,1,},
                        {1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,0,0,0,0,1,},
                        {1,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,1,1,1,1,},
                        {1,2,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,},
                        {1,2,1,0,0,0,1,2,2,2,1,0,0,0,0,0,1,1,0,1,},
                        {1,2,1,1,1,1,1,2,1,2,1,1,1,0,1,0,0,0,0,1,},
                        {1,2,1,2,2,2,1,2,1,2,2,2,1,1,1,1,1,1,1,1,},
                        {1,2,1,2,1,2,1,2,1,0,1,2,2,2,2,2,2,2,2,1,},
                        {1,2,1,2,1,2,1,2,1,0,1,1,1,1,1,1,1,1,2,1,},
                        {1,2,1,2,1,2,1,2,1,0,0,0,0,0,0,0,0,0,2,1,},
                        {1,2,1,2,1,2,2,2,1,0,1,1,1,1,1,1,0,1,2,1,},
                        {1,2,1,2,1,1,1,1,1,0,0,0,1,0,1,0,0,1,2,1,},
                        {1,2,1,2,2,1,0,0,1,1,1,0,0,0,1,0,1,1,2,1,},
                        {1,2,1,1,2,1,1,0,0,0,0,0,1,0,1,0,0,1,2,1,},
                        {1,2,1,1,2,1,0,0,1,1,1,1,1,1,1,1,1,1,2,1,},
                        {1,2,1,1,2,1,1,0,1,2,2,2,2,2,2,2,2,2,2,1,},
                        {1,2,1,1,2,1,0,0,1,2,1,1,1,1,1,1,1,1,1,1,},
                        {1,2,1,1,2,1,0,1,1,2,1,1,1,1,1,1,1,1,2,2,},
                        {1,2,1,1,2,1,0,0,1,2,1,1,2,2,2,2,2,2,2,1,},
                        {1,2,1,1,2,1,0,1,1,2,1,1,2,1,1,1,1,1,1,1,},
                        {1,2,1,1,2,1,0,0,1,2,1,1,2,1,0,0,0,1,0,1,},
                        {1,2,2,2,2,1,0,1,1,2,2,2,2,0,0,1,0,0,0,1,},
                        {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,} };
// два цикла - внутренний и внешний, осуществляющие обращение к каждому элементу массива
    for (int i = 0; i < 33; i++) //переключение по строкам
    {
        for (int j = 0; j < 20; j++)// переключение по столбцам
            if (mas[i][j] == 1)
            {
                // выводим два раза символ (номер которого 176 в таблице аски) в консоль
                cout << static_cast<char>(176);
                cout << static_cast<char>(176);
            } else
                 cout << "  ";  // выводим два пробела
        cout << endl;
    }
    system("pause");
    return 0;
}

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

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *