элементами массива).

advertisement
Массивы
Основные концепции
• Массив представляет собой структуру данных, которая позволяет
одной переменной хранить несколько значений.
• При объявлении массива вы должны указать тип значений,
хранящихся в массиве, а также количество значений (называемых
элементами массива).
• Все элементы внутри массива должны быть одного и того же типа,
например, 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
Вихід
а – масив цілих
ДЗ
• В квадратній матриці знайти максимальний
елемент головної діагоналі.
• Заповнити матрицю М таким чином:
Download