Лекция - C++ Массивы.pptx
- Количество слайдов: 28
1 Основы программирования: язык C++ Структурные типы данных Массивы
2 Основы программирования/C++ Структурные типы данных
3 Основы программирования/C++/Структурные типы данных • Структурные типы данных – это типы, значение которых состоит из совокупности составных частей • Скалярный Структурный
4 Основы программирования/C++/Структурные типы данных • Структурные типы данных C++: 1. Массивы – int a[n] 2. Структуры (записи) – struct 3. Объединения – union -----------Определяемые типы 1. Перечисления – enum 2. Определение типа – typedef
5 Основы программирования/C++ Массивы
6 Основы программирования/C++/Массивы • Массив – структурный тип данных, состоящий из фиксированного числа однотипных элементов, доступ которых осуществляется по индексу. a Значения
7 Основы программирования/C++/Массивы • Описание массива тип_элементов имя_массива[размер] • размер – количество элементов • индексы элементов всегда начинаются с нуля! Пример. void main() { int a[10]; float b[100]; }
8 Основы программирования/C++/Массивы • Размер массива – это количество его элементов • Размерность массива – это количество его индексов индекс одномерный (линейный) – 1 двухмерный (матрица) – 2 индекса трехмерный – 3 индекса и т. д.
9 Основы программирования/C++/Массивы • Доступ к элементу массива – через его индекс в квадратных скобках например, a[5] –элемент массива а с индексом 5 b[12] –элемент массива b с индексом 12 a[i] –элемент массива a с индексом равным i
1 0 Основы программирования/C++/Массивы a 10 25 a[0] = 10; a[1] = a[0] + 15;
1 1 Основы программирования/C++/Массивы a Внимание! Нельзя обращаться к несуществующему элементу массива! Например, здесь ошибка: i = 9; a[i+1] = 100; Это обязанность программиста обеспечить невыход индекса за границу допустимого диапазона.
1 2 Основы программирования/C++/Массивы a Обычно, для последовательного перебора элементов массива используют цикл for, в котором перебирают значения индекса от первого до последнего элемента: for(int i = 0; i < n; i++). . . //какая-то работа с a[i] Например: for (int i = 0; i < 10; i++) { a[i] = i; }
1 3 Основы программирования/C++/Массивы Рассмотрим пример решения задачи: Задача 1. Дан линейный целочисленный массив из N элементов (N=10). Найти среднее арифметическое четных элементов. Пример входа и выхода: Исходный массив: 15 8 11 0 7 12 8 19 13 Среднее арифметическое четных = 7. 60
1 4 Основы программирования/C++/Массивы #include
1 5 Основы программирования/C++/Массивы // Среднее арифметическое четных int sum = 0; int count = 0; for (int i=0; i
1 6 Основы программирования/C++/Массивы Рассмотрим еще пример: Задача 2. Дан линейный целочисленный массив из N элементов (N=10). Найти и обменять местами максимальный и минимальный элементы. Пример входа и выхода: Исходный массив: 1 5 8 11 0 7 12 Измененный массив: 1 5 8 11 19 7 12 8 19 13 8 0 13
1 7 Основы программирования/C++/Массивы // Нахождение индексов imax и imin элементов int imin = 0; // Индекс минимального элемента int imax = 0; // Индекс максимального элемента for (int i=1; i
1 8 Основы программирования/C++/Массивы Рассмотрим еще пример: Задача 3. Даны два линейных целочисленных массива X и Y по N элементов в каждом (N=10), упорядоченных по не убыванию. Разместить эти элементы в массиве Z вдвое большего размера, чтобы они также были расположены по неубыванию. Пример входа и выхода: Исходный массив X: 3 5 8 8 10 15 16 20 25 28 Исходный массив Y: 2 3 3 6 10 12 14 20 21 24 Полученный массив Z: 2 3 3 3 5 6 8 8 10 10 12 14 15 16 20 20 21 24 25 28
1 9 Основы программирования/C++/Массивы • Алгоритм задачи 3: • Проходим массивы X и Y слева направо, сравнивая один элемент из X с одним элементов из Y. Выбираем из них меньший и переносим его в Z. Затем переходим к следующему элементу после перенесенного. • После этого один из массивов закончится. Тогда остаток другого массива нужно перенести в Z. X: 3 Y: 2 5 3 8 6 10 15 16 20 25 28 10 12 14 20 21 24 Z: 2 3 3 3 5 6 8 8 10 10…
2 0 Основы программирования/C++/Массивы int x[n], y[n], z[2*n]; //Заполнение массивов x и y случайными неубывающими числами x[0] = rand() % n; y[0] = rand() % n; for (int i=1; i
2 1 Основы программирования/C++/Массивы int ix = 0; // индекс элемента массива X int iy = 0; // индекс элемента массива Y int iz = -1; //индекс элемента массива Z //Слияние массивов x и y в массив z while ((ix < n) && (iy < n)) // пока есть элементы в массивах if (x[ix] <= y[iy]) {// перенос элемента x в массив z iz++; z[iz] = x[ix]; ix++; } else {//перенос элемента y в массив z iz++; z[iz] = y[iy]; iy++; }
2 2 Основы программирования/C++/Массивы while (ix < n) // пока есть элементы в массиве х {// перенос элемента X в массив Z iz++; z[iz] = x[ix]; ix++; } while (iy < n) // пока есть элементы в массиве y {//перенос элемента y в массив z iz++; z[iz] = y[iy]; iy++; } cout<< "Array z: " << endl; for (int i=0; i<2*n; i++) cout<< setw(4)<< z[i]; cout << endl; return;
2 3 Основы программирования/C++/Массивы Кстати! фрагмент программы while (ix < n) { iz++; z[iz] = x[ix]; ix++; } Можно написать иначе: while (ix < n) z[++iz] = x[ix++];
2 4 Основы программирования/C++ Матрицы
2 5 Основы программирования/C++/Матрицы • Матрица – это двухмерный массив • У элемента матрицы два индекса – номер строки и номер столбца Пример матрицы 4 х5:
2 6 Основы программирования/C++/Матрицы Определение матрицы в программе: тип имя [размер1][размер2]; Пример: const int m = 4; const int n = 5; int a [m][n]; // Матрица
2 7 Основы программирования/C++/Массивы Обычно, для последовательного перебора элементов матрицы используют два цикла for, первый (внешний) перебирает строки, второй (вложенный) - столбцы: for(int i=0; i
2 8 Основы программирования/C++/Матрицы • ---


