Массивы Основные концепции • Массив представляет собой структуру данных, которая позволяет одной переменной хранить несколько значений. • При объявлении массива вы должны указать тип значений, хранящихся в массиве, а также количество значений (называемых элементами массива). • Все элементы внутри массива должны быть одного и того же типа, например, 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] Вхід xn,xk,n – цілі Дії Ініціалізація генератора Завдання інтервалу генерації i=1..n Генерація a[i] Вхід Дії 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 a00 a01 a02 a03 a04 a00 a01 a02 a03 a04 a10 a11 a12 a13 a14 a10 a11 a12 a13 a14 a20 a21 a22 a23 a24 a20 a21 a22 a23 a24 a30 a31 a32 a33 a34 a30 a31 a32 a33 a34 a40 a41 a42 a43 a44 a40 a41 a42 a43 a44 i≤j Вхід а – масив цілих Дії S1=0 S2=0 i=0..n j=0..n Якщо i<=j S1=S1+a[i][j] Якщо i<=j та i+j<=n-1 або i>=j та i+j>=n-1 S2=S2+a[i][j] Вихід S1,S2 – цілі void sum(int a[n][m]) Приклад№ 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] – масив цілих Вхід а[n][m] – масив цілих Дії i=rmax j=1..m a[i][j]=0; Вихід а – масив цілих Дії m=-25; rmax=0; i=0..n j=0..m Якщо a[i][j]>max max=a[i][j] rmax=i Вихід а – масив цілих ДЗ • В квадратній матриці знайти максимальний елемент головної діагоналі. • Заповнити матрицю М таким чином: