Скачать презентацию 1 Основы программирования язык C Структурные типы данных Скачать презентацию 1 Основы программирования язык C Структурные типы данных

Лекция - C++ Массивы.pptx

  • Количество слайдов: 28

1 Основы программирования: язык C++ Структурные типы данных Массивы 1 Основы программирования: язык C++ Структурные типы данных Массивы

2 Основы программирования/C++ Структурные типы данных 2 Основы программирования/C++ Структурные типы данных

3 Основы программирования/C++/Структурные типы данных • Структурные типы данных – это типы, значение которых 3 Основы программирования/C++/Структурные типы данных • Структурные типы данных – это типы, значение которых состоит из совокупности составных частей • Скалярный Структурный

4 Основы программирования/C++/Структурные типы данных • Структурные типы данных C++: 1. Массивы – int 4 Основы программирования/C++/Структурные типы данных • Структурные типы данных C++: 1. Массивы – int a[n] 2. Структуры (записи) – struct 3. Объединения – union -----------Определяемые типы 1. Перечисления – enum 2. Определение типа – typedef

5 Основы программирования/C++ Массивы 5 Основы программирования/C++ Массивы

6 Основы программирования/C++/Массивы • Массив – структурный тип данных, состоящий из фиксированного числа однотипных 6 Основы программирования/C++/Массивы • Массив – структурный тип данных, состоящий из фиксированного числа однотипных элементов, доступ которых осуществляется по индексу. a Значения

7 Основы программирования/C++/Массивы • Описание массива тип_элементов имя_массива[размер] • размер – количество элементов • 7 Основы программирования/C++/Массивы • Описание массива тип_элементов имя_массива[размер] • размер – количество элементов • индексы элементов всегда начинаются с нуля! Пример. void main() { int a[10]; float b[100]; }

8 Основы программирования/C++/Массивы • Размер массива – это количество его элементов • Размерность массива 8 Основы программирования/C++/Массивы • Размер массива – это количество его элементов • Размерность массива – это количество его индексов индекс одномерный (линейный) – 1 двухмерный (матрица) – 2 индекса трехмерный – 3 индекса и т. д.

9 Основы программирования/C++/Массивы • Доступ к элементу массива – через его индекс в квадратных 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] + 1 0 Основы программирования/C++/Массивы a 10 25 a[0] = 10; a[1] = a[0] + 15;

1 1 Основы программирования/C++/Массивы a Внимание! Нельзя обращаться к несуществующему элементу массива! Например, здесь 1 1 Основы программирования/C++/Массивы a Внимание! Нельзя обращаться к несуществующему элементу массива! Например, здесь ошибка: i = 9; a[i+1] = 100; Это обязанность программиста обеспечить невыход индекса за границу допустимого диапазона.

1 2 Основы программирования/C++/Массивы a Обычно, для последовательного перебора элементов массива используют цикл for, 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. Дан линейный целочисленный массив 1 3 Основы программирования/C++/Массивы Рассмотрим пример решения задачи: Задача 1. Дан линейный целочисленный массив из N элементов (N=10). Найти среднее арифметическое четных элементов. Пример входа и выхода: Исходный массив: 15 8 11 0 7 12 8 19 13 Среднее арифметическое четных = 7. 60

1 4 Основы программирования/C++/Массивы #include <iostream> <iomanip> <cstdlib> <ctime> using namespace std; void main() 1 4 Основы программирования/C++/Массивы #include using namespace std; void main() { const int n = 10; int a[n]; srand(time(NULL)); for (int i=0; i

1 5 Основы программирования/C++/Массивы // Среднее арифметическое четных int sum = 0; int count 1 5 Основы программирования/C++/Массивы // Среднее арифметическое четных int sum = 0; int count = 0; for (int i=0; i

1 6 Основы программирования/C++/Массивы Рассмотрим еще пример: Задача 2. Дан линейный целочисленный массив из 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 = 1 7 Основы программирования/C++/Массивы // Нахождение индексов imax и imin элементов int imin = 0; // Индекс минимального элемента int imax = 0; // Индекс максимального элемента for (int i=1; i a[imax]) imax = i; } // Обмен максимального и минимального int tmp = a[imin]; a[imin] = a[imax]; a[imax] = tmp;

1 8 Основы программирования/C++/Массивы Рассмотрим еще пример: Задача 3. Даны два линейных целочисленных массива 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 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 случайными 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 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) // пока есть элементы в массиве 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] 2 3 Основы программирования/C++/Массивы Кстати! фрагмент программы while (ix < n) { iz++; z[iz] = x[ix]; ix++; } Можно написать иначе: while (ix < n) z[++iz] = x[ix++];

2 4 Основы программирования/C++ Матрицы 2 4 Основы программирования/C++ Матрицы

2 5 Основы программирования/C++/Матрицы • Матрица – это двухмерный массив • У элемента матрицы 2 5 Основы программирования/C++/Матрицы • Матрица – это двухмерный массив • У элемента матрицы два индекса – номер строки и номер столбца Пример матрицы 4 х5:

2 6 Основы программирования/C++/Матрицы Определение матрицы в программе: тип имя [размер1][размер2]; Пример: const int 2 6 Основы программирования/C++/Матрицы Определение матрицы в программе: тип имя [размер1][размер2]; Пример: const int m = 4; const int n = 5; int a [m][n]; // Матрица

2 7 Основы программирования/C++/Массивы Обычно, для последовательного перебора элементов матрицы используют два цикла for, 2 7 Основы программирования/C++/Массивы Обычно, для последовательного перебора элементов матрицы используют два цикла for, первый (внешний) перебирает строки, второй (вложенный) - столбцы: for(int i=0; i

2 8 Основы программирования/C++/Матрицы • --- 2 8 Основы программирования/C++/Матрицы • ---