Массивы
Основные концепции Массив представляет собой структуру данных, которая позволяет одной переменной хранить несколько значений. При объявлении массива вы должны указать тип значений, хранящихся в массиве, а также количество значений (называемых элементами массива). Все элементы внутри массива должны быть одного и того же типа, например, int, float или char. Для сохранения значения внутри массива вам следует указать номер элемента массива, в котором вы хотите сохранить свое значение. Чтобы обратиться к значению, хранящемуся внутри массива, ваши программы указывают имя массива и номер элемента. При объявлении массива программы могут использовать оператор присваивания для инициализации элементов массива. Программы могут передавать переменные-массивы в функции точно так же, как они передают любой другой параметр.
Массивы Одномерные массивы Многомерные массивы Двумерные массивы Трехмерные массивы …
ОБЪЯВЛЕНИЕ ПЕРЕМЕННОЙ МАССИВА Массив представляет собой переменную, способную хранить одно или несколько значений. Подобно переменным, используемым вашими программами до сих пор, массив должен иметь тип (например, inl, char или float) и уникальное имя. Тип_массива имя_массива [размерность] [размерность] [размерность]… Первый элемент массива всегда имеет индекс 0, а значение индекса последнего элемента на единицу меньше размера массива.
Одномерные массивы Тип_массива имя_массива [размерность] C++ позволяет программам инициализировать переменные при объявлении. То же верно и для массивов. При объявлении массива можно указать первоначальные значения, поместив их между левой и правой фигурными скобками, следующими за знаком равенства. Например, следующий оператор инициализирует массив values: int values[5] = { 100, 200, 300, 400, 500 }; Если вы не указываете первоначальное значение для какого-либо элемента массива, большинство компиляторов C++ будут инициализировать такой элемент нулем. Например, следующее объявление инициализирует первые три из пяти элементов массива: int values[5] = { 100, 200, 300 };
ПЕРЕДАЧА МАССИВОВ В ФУНКЦИИ Ващи программы будут передавать массивы в функции точно так же, как и любые другие переменные. Функция может инициализировать массив, прибавить к массиву значения или вывести элементы массива на экран. Когда вы передаете массив в функцию, вы должны указать тип массива. Нет необходимости указывать размер массива. Вместо этого вы передаете параметр например number_of_elements, который содержит количество элементов в массиве: void some_function(int array[], int number_of_elements);
Ввод/Вывод одномерных массивов Ввод/вывод массивов осуществляется в циклах. Напишем функции для: Ввода одномерного массива с клавиатуры Ввода генерации одномерного массива, при помощи случайных чисел. Генератор случайных чисел это объект, формирующий последовательность из псевдослучайных чисел. Генератор, который получает значения с равномерным распределением в указанном диапазоне, называют равномерным генератором случайных чисел (РГСЧ). Вывода одномерного массива
ВхідДіїВихід n - цілеi=1..n Введення a[i] а – массив цілих ВхідДіїВихід n - ціле а – массив цілих i=1..n Виведення a[i] а – массив цілих ВхідДіїВихід xn,xk,n – цілі Ініціалізація генератора Завдання інтервалу генерації i=1..n Генерація a[i] а – массив цілих
Пример 1. Найти сумму всех элементов массива целых чисел, больших заданного числа. Размерность массива – 20. Заполнение массива осуществить случайными числами от 50 до 100. Решение примера 1 Генерация массива Вывод массива Поиск суммы Ввод числа Расчет суммы Вывод суммы
ВхідДіїВихід n - ціле а – массив цілих k - ціле S=0 i=1..n Якщо a[i]>k тоді S=S+a[i] S - ціле
Пример 2. Найти произведение всех элементов массива целых чисел, удовлетворяющих условию: остаток от деления на 2 равен 3. Размерность массива – 20. Заполнение массива осуществить случайными числами от 200 до 300. Решение примера 2 Генерация массива Вывод массива Поиск произведения Расчет произведения Вывод произведения
ВхідДіїВихід n - ціле а – массив цілих P=0 i=1..n Якщо a[i]%2==3 тоді P=P*a[i] P - ціле
ДЗ В цілочисельному массиві В(100) визначити кількість элементів, що дорівнюють максимальному. Найти произведение всех элементов массива вещественных чисел, меньших заданного числа. Размерность массива –10. Заполнение массива осуществить случайными числами от 50 до 100. В массив Х записать цифры цілого податного числа К (longint)
Двумерные массивы
Объявление двумерного массива Тип_массива имя [размерность 1] [размерность 2]
Ввод/Вывод двумерных массивов Ввод/вывод двумерных массивов осуществляется в двух циклах. Напишем функции для: Ввода двумерного массива с клавиатуры Ввода генерации двумерного массива, при помощи случайных чисел. Вывода двумерного массива в виде матрицы
ВхідДіїВихід n – ціле m- ціле i=1..n j=1..m Введення a[i][j] а – массив цілих ВхідДіїВихід n,m – цілі а – массив цілих i=1..n j=1..m Виведення a[i][j] а – массив цілих ВхідДіїВихід xn,xk,n – цілі m- ціле Ініціалізація генератора Завдання інтервалу генерації i=1..n j=1..m Генерація a[i][j] а – массив цілих
Расположение в памяти Для многомерного C-массива выделяется единый блок памяти необходимого размера: размер_массива 1 * размер_массива 2 *... * размер_массиваN * sizeof(тип_элемента_массива). Значения располагаются последовательно. Самый левый индекс изменяется медленнее всего. Т.е. для трёхмерного массива сначала располагаются значения для первой (индекс 0) матрицы, затем для второй и т.д. Значения для матриц располагаются построчно (ср. со статической инициализацией массива выше). Имя (идентификатор) многомерного C-массива является указателем на первый элемент массива (так же как и для одномерных массивов)
Приклад 1. Заповнити матрицу М таким чином: Решение примера 2 Генерация массива Вывод массива
ВхідДіїВихід k=1 i=1..n j=1..m Якщо i<=j a[i][j]=k k++ інакше a[i][j]=0 а – массив цілих
Приклад 2. Обчислити суму элементів матриці А(nxn),, яка заповнена випадковими числама від 1 до 20 що розташовані в заштрихованій частині Домой
Решение примера 2 Генерация массива Вывод массива Поиск суммы Расчет суммы 1 Расчет суммы 2
a 00 a 01 a 02 a 03 a 04 a 10 a 11 a 12 a 13 a 14 a 20 a 21 a 22 a 23 a 24 a 30 a 31 a 32 a 33 a 34 a 40 a 41 a 42 a 43 a 44 ij a 00 a 01 a 02 a 03 a 04 a 10 a 11 a 12 a 13 a 14 a 20 a 21 a 22 a 23 a 24 a 30 a 31 a 32 a 33 a 34 a 40 a 41 a 42 a 43 a 44 ВхідДіїВихід а – массив цілихS1=0 S2=0 i=0..n j=0..n Якщо i<=j S1=S1+a[i][j] Якщо i =j та i+j>=n-1 S2=S2+a[i][j] S1,S2 – цілі
Приклад 3. Для матриці А(mxn), яка заповнена випадковими числама від -10 до 10 : 1) парні рядки матриці збільшити вдвічі; 2) непарні стовпці матриці замінити на Х; 3) значення элементів рядка, що містить максимальный элемент, замінити на 0. Решение примера 3 Генерация матрицы Вывод матрицы Увеличение четных строк Вывод матрицы замена непарных столбцов на Х ввод Х замена Вывод матрицы замена на 0 элементов строки с максимальным поиск строки с максимумом замена Вывод матрицы
ВхідДіїВихід а – массив цілих i=0..n,i=i+2 j=0..m a[i][j]=a[i][j]*2; а – массив цілих ВхідДіїВихід X – цілі а[n][m] – массив цілих i=0..n j=1..m,j=j+2 a[i][j]=X; а – массив цілих ВхідДіїВихід rmax – цілі а[n][m] – массив цілих i=rmax j=1..m a[i][j]=0; а – массив цілих ВхідДіїВихід а[n][m] – массив цілих m=-25; rmax=0; i=0..n j=0..m Якщо a[i][j]>max max=a[i][j] rmax=i а – массив цілих
ДЗ В квадратній матриці знайти максимальный элемент головної діагоналі. Заповнити матрицу М таким чином: