- •Введение
- •1. Этапы и проблемы решения задач с использованием компьютера
- •Алфавит языка
- •Ключевые слова
- •Идентификаторы
- •Знаки операций
- •Константы
- •Комментарии
- •2.3. Структура и основные элементы программы
- •2.4. Трансляция программ и их выполнение
- •3. Стандартные (базовые) типы данных, операции и выражения
- •3.1. Типы данных, переменные и константы Понятие типов данных
- •Классификация простых предопределенных типов данных
- •Переменные, константы
- •3.2. Целочисленные типы данных
- •3.3. Вещественные типы данных
- •3.4. Логический тип данных
- •3.5. Символьный тип данных
- •3.6. Операции и выражения
- •Преобразования типов данных
- •Операция присваивания
- •Арифметические операции
- •Операции отношения
- •Логические операции
- •Поразрядные (битовые) операции
- •Операции составного присваивания
- •Условная операция
- •Операция sizeof
- •Приоритеты рассмотренных операций
- •3.7. Ввод и вывод простых типов данных
- •Вывод текстовых строк
- •Ввод/вывод арифметических типов данных
- •Форматирование ввода / вывода
- •4.1. Идеи структурного программирования
- •Условная инструкция (if)
- •Инструкция множественного выбора (switch)
- •Цикл с предусловием (while)
- •Цикл с постусловием (do while)
- •Итерационный цикл (for)
- •Инструкции перехода
- •5. Приемы программирования циклов
- •5.1. Рекуррентные вычисления
- •5.2. Инвариант цикла
- •6. Массивы
- •6.1. Понятие массива
- •6.2. Объявление массивов Объявление одномерных массивов
- •Объявление многомерных массивов
- •6.3. Ввод-вывод массивов
- •Вывод массивов
- •Ввод массивов
- •6.4. Текстовые строки как массивы символов
- •Определение текстовой строки
- •Ввод текстовых строк с клавиатуры
- •Обработка текстовых строк
- •Массивы текстовых строк
- •7. Разработка программ при работе с массивами
Объявление многомерных массивов
Многомерные массивы определяются аналогично одномерным массивам. Количество элементов по каждому измерению указывается отдельно в квадратных скобках:
int A1 [5] [3]; // Двумерный массив, элементами которого являются
// значения типа int
double D [10] [15] [3]; // Трехмерный массив, элементами которого являются
// значения типа double
Здесь массив A1 представляет собой обычную двумерную матрицу из 5-ти строк и 3–х столбцов.
Массив D– трехмерный массив, который можно представить как трехмерный параллелограмм, навранный из 3-х двумерных матриц.
Общее число элементов в многомерном массиве определяется как произведение количества элементов по каждому измерению. Так, например, массив Dсодержит10 * 15 * 3 = 450элементов типаdouble, а объем памяти, требующийся для этого массива, будет равен450 * 4 = 1800байтам.
Массивы с большим, чем 3, количеством измерений используются достаточно редко. Одной из причин этого является быстрый рост объема памяти, необходимой для размещения таких массивов.
В следующей таблице показана схема размещения элементов массива A1в памяти:
i |
0 |
1 |
2 |
3 |
4 | ||||||||||
j |
0 |
1 |
2 |
0 |
1 |
2 |
0 |
1 |
2 |
0 |
1 |
2 |
0 |
1 |
2 |
A1[i][j] |
1 |
1 |
1 |
2 |
4 |
8 |
3 |
9 |
27 |
4 |
16 |
64 |
5 |
25 |
125 |
Так же как и в одномерном массиве, элементы многомерных массивов располагаются друг за другом в непрерывном участке памяти.
При определении многомерные массивы могут инициализироваться определенными значениями. Для получения массива A1 с теми значениями элементов, которые приведены в таблице, можно инициализировать массив следующим образом:
int A1 [5] [3] =
{
1, 1, 1,
2, 4, 8,
3, 9, 27,
4, 16, 64,
5, 25, 125
};
или так:
int A1 [ ] [3] =
{
1, 1, 1,
2, 4, 8,
3, 9, 27,
4, 16, 64,
5, 25, 125
};
Во втором определении опущен размер массива по первому индексу, при этом автоматически ему назначается значение 5 в соответствии с инициализирующими значениями. Размеры массивов по второму и по следующим индексам опускать нельзя.
Для доступа к определенному элементу многомерного массива необходимо указать в квадратных скобках конкретные значения всех индексов этого элемента. Например:
cout << A1 [1] [2]; // На экран выведено значение 8
6.3. Ввод-вывод массивов
Ранее были рассмотрены приемы ввода-вывода простых предопределенных типов данных (int, double, char иbool) с помощью потоков ввода и вывода. Стандартные потоки ввода и вывода не “умеют” работать с массивами, поэтому ввод и вывод массивов необходимо реализовывать самостоятельно, обрабатывая массивы поэлементно.
Большинство алгоритмов по обработке массивов реализуются с помощью циклов. Ввод и вывод массивов не являются исключением.
Начнем с рассмотрения операций вывода значений элементов массивов на экран.