Одномерные массивы
Одномерный массив — это список связанных переменных. Для объявления одномерного массива используется следующая форма записи.
тип имя_массива [размер];
Здесь с помощью элемента записи тип объявляется базовый тип массива. Базовый типопределяет тип данных каждого элемента, составляющего массив. Количество элементов,которые будут храниться в массиве, определяется элементом размер. Например, при выполнении приведенной ниже инструкции объявляется int-массив (состоящий из 10 элементов) с именем sample.
int sample[10];
Индекс идентифицирует конкретный элемент массива. Доступ к отдельному элементу массива осуществляется с помощью индекса. Индекс описывает позицию элемента внутри массива. В C++ первый элемент массива имеет нулевой индекс. Поскольку массив sample содержит 10 элементов, его индексы изменяются от 0 до 9. Чтобы получить доступ к элементу массива по индексу, достаточно указать нужный номер элемента в квадратных скобках. Так, первым элементом массива sample является sample[0], а последним — sample[9]. Например, следующая программа помещает в массив sample числа от 0 до 9.
#include <iostream>
using namespace std;
int main()
{
int sample[10]; // Эта инструкция резервирует область памяти
для 10 элементов типа int.
int t;
// Помещаем в массив значения.
for(t = 0; t < 10; ++t) sample[t]=t;
// Отображаем массив.
for(t=0; t < 10; ++t)
cout << sample[t] << ' ';
return 0;
}
В C++ все массивы занимают смежные ячейки памяти. (Другими словами, элементы массива в памяти расположены последовательно друг за другом.) Ячейка с наименьшим адресом относится к первому элементу массива, а с наибольшим — к последнему
Еще раз повторим то, как объявляются и инициализируются массивы, в нашем случае одномерные массивы.
Допустим, что нам нужно объявить одномерный массив, состоящий из 8-ми элементов и присвоить его элементам значения, вычисленные по формуле: номер элемента массива, умноженный на 2 и минус 1. Т.е. для 3-го элемента будет 3 * 2 - 1 = 5. Смотрим
//Одномерный массив
#include
#include
using namespace std;
int main()
{
//объявляем массив из 8-ми элементов
int array[8];
//инициализируем массив данными по формуле
for(int i = 0; i < 8; i++)
array[i] = i * 2 - 1;
//выводим массив на экран
for(int i = 0; i < 8; i++)
cout << setw(3) << array[i];
return 0;
}
Как видите, ничего сложного в работе с одномерными массивами нет.
//объявляем массив из 8-ми элементов
int array[8];
Объявляется массив путем указания типа его элементов, в нашем случае это целые (int), затем указывается его имя, в нашем случае это array, а затем в квадратных скобках указывается количество элементов, в нашем случае их восемь. Итак, память для массива мы зарезервировали и на этапе компиляции программы она будет выделена (8 * 4 байта = 32 байта, т.к один элемент типа int занимает в памяти 4 байта). Но в массиве на данный момент содержится различный "мусор", т.е. различные значения, которые возможно применялись в других программах и так далее. Нужно изменить (задать) эти значения, т.е. выполнить инициализацию массива. Проще всего ее выполнять с помощью цикла, в котором мы последовательно проходим по всем элементам массива. Инициализируем, применяя формулу i * 2 - 1, где i - значение индекса массива.
//инициализируем массив данными по формуле
//инициализируем массив данными по формуле
for(int i = 0; i < 8; i++)
array[i] = i * 2 - 1;
Теперь каждый элемент нашего одномерного массива содержит свое заданное значение. Хотелось бы их просмотреть, а для этого нам нужно подумать, как вывести их на экран. Для этого опять же проще всего использовать цикл, в котором мы будет последовательно проходить по всем элементам массива, выводя их на экран в одну строку. Для каждого значения мы выделим на экране место в 3 ячейки, для этого будем использовать манипулятор вывода потока setw с параметром 3
//выводим массив на экран
for(int i = 0; i < 8; i++)
cout << setw(3) << array[i];
Двумерные массивы
В C++ можно использовать многомерные массивы. Простейший многомерный массив — двумерный. Двумерный массив, по сути, представляет собой список одномерных массивов. Чтобы объявить двумерный массив целочисленных значений размером 10x20 с именем twod, достаточно записать следующее:
int twod[10][20];
Обратите особое внимание на это объявление. В отличие от многих других языков программирования, в которых при объявлении массива значения размерностей отделяются запятыми, в C++ каждая размерность заключается в собственную пару квадратных скобок. Чтобы получить доступ к элементу массива twod с координатами 3,5 , необходимо использовать запись twod[3][5]. В следующем примере в двумерный массив помещаются последовательные числа от 1 до 12.
#include <iostream>
using namespace std;
int main()
{
int t,i, num[3][4];
for(t = 0; t < 3; ++t) {
for(i=0; i < 4; ++i) {
num[t][i] = (t * 4) +i +t;
cout << num[t][i] << ' ';
}
cout << '\n';
}
return 0;
}
В этом примере элемент num[0][0] получит значение 1, элемент num[0][1] — значение 2, элемент num[0][2] — значение 3 и т.д. Значение элемента num[2][3] будет равно числу
Многомерные массивы
В C++, помимо двумерных, можно определять массивы трех и более измерений. Вот как объявляется многомерный массив.
тип имя[размер1] [размер2]... [размерN];
Например:
double x[150][1000][2780];
#include <iostream>
#include <iomanip>
using namespace std;
const unsigned int DIM1 = 15;
const unsigned int DIM2 = 25;
const unsigned int DIM3 = 50;
int ary[DIM1][DIM2][DIM3];
int main() {
for (int i = 0; i < DIM1; i++) {
for (int j = 0; j < DIM2; j++) {
for (int k = 0; k < DIM3; k++) {
ary[i][j][k] = (i + 1) * 100 + (j + 1) * 25 + (k + 1);
cout << setw(4) << ary[i][j][k];
}
cout << endl;
}
cout << endl;
}
return 0;
}
Домашнее задание:
1. Объявите массив типа float с числом элементов arraySize = 10 и присвойте ему нулевые начальные значения.
2. Выведите на печать четвертый элемент массива.
3. Присвойте девятому элементу массива значение 1.345.
4. Увеличьте значение последнего элемента массива на 1.
5. Присвойте тем элементам массива, значения которых нулевые, значение их индекса.
6.Напишите программу в двухмерном массиве которая на экран выводит квадрат из звездочек! ("*")
7.Напишите программу которая взламует сейф из 3 комбинаций от 000 до 999
Попросите пользователя ввести комбинацию!
После открытия нарисуйте сейф в двумерном массиве с найденой комбинацией!
8. Создайте 3 трехмерных массива разных типов! Количество элементов в каждом не меньше arr[15][10][25]
Создать вывод на экран!