Лекции по проге / 5_Одномерные массивы (1)
.pdf
Инициализация одномерного массива
Инициализация первых элементов массива различными значениями (остальные элементы обнуляются):
<тип> <имя массива>[<кол-во элементов>] =
{<константа 1>, <константа 2>,
...
<константа M> };
где <кол-во элементов> больше M
11
Задание
Инициализировать массив rating, если считать, что изначально рейтинг студента составляет 0 баллов
Применить различные варианты инициализации
12
Пример инициализации одномерного массива
//Рейтинг одного студента по 10 предметам,
//массив изначально нулевой
char rating[10] = {};
//Рейтинг одного студента по 10 предметам,
//массив изначально нулевой
char rating[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
//Рейтинг одного студента по 10 предметам,
//массив изначально нулевой
char rating[10] = {0};
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
|
rating |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
|
0 |
|
0 |
|
0 |
|
0 |
|
0 |
|
0 |
|
0 |
|
0 |
|
0 |
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Обращение к элементам одномерного массива
Для обращения к элементу массива используется специальная операция []:
<имя массива>[<индекс элемента>]
Как результат операция [] возвращает элемент массива — l-value выражение
Элементы массива рассматриваются как переменные базового типа и все операции, допустимые для переменных данного типа, применимы и для элементов массива
14 В языке Си нет контроля выхода за пределы массива
Задание
Задайте рейтинг студента по 2-му предмету равным 9 баллов
Увеличите на 7 баллов текущий рейтинг студента по последнему предмету
Распечатайте рейтинг студента по 1-му предмету
15
Обращение к элементам одномерного массива
//Модификация рейтинга студента по различным предметам rating[1] = 9;
rating[9] += 7; printf("%d", rating[0]);
//ВНИМАНИЕ!!! Выход за пределы массива -
//логическая, но не синтаксическая ошибка
//(ошибка исполнения программы)
rating[10] = 12;
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
|
|||||||||||
16 |
rating |
|
0 |
|
9 |
|
0 |
|
0 |
|
0 |
|
0 |
|
0 |
|
0 |
|
0 |
|
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Поиск в массиве минимального элемента (его индекса)
Необходимо использовать понятие «временно минимальный» элемент — наименьший из уже просмотренных — элемент с индексом i_min
Изначально считаем, что первый элемент массива
самый маленький, т. е. i_min = 0
Проходя массив слева направо сравниваем «временно минимальный» элемент с очередным (i- ым): если очередной элемент меньше, то заменяем «временно минимальный» на очередной (i_min = i)
17
Поиск в массиве минимального элемента (его индекса)
|
|
|
0 |
|
1 |
2 |
3 |
|
|||
|
Исходный массив vector |
|
3 |
|
2 |
5 |
|
3 |
N = 4 |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Шаг 1. i_min = 0 |
|
|
|
|
|
|
|
|
|
|
|
|
i_min |
|
|
|
1 |
2 |
3 |
|
||
|
|
0 |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vector |
|
3 |
|
|
2 |
5 |
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Шаг 2. |
Так как vector[1] < vector[i_min], то i_min = 1 |
|||||||||
|
|
i_min |
|
|
|
|
|
2 |
3 |
|
|
|
|
0 |
|
1 |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vector |
|
3 |
|
|
2 |
5 |
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Шаг 3. |
Так как vector[2] > vector[i_min], то ---------- |
|||||||||
|
|
i_min |
0 |
|
|
|
|
3 |
|
||
|
|
|
1 |
2 |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vector |
|
3 |
|
2 |
5 |
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Шаг 4. |
Так как vector[3] > vector[i_min], то ---------- |
|||||||||
|
|
i_min |
0 |
|
|
|
2 |
|
|
|
|
|
|
|
1 |
3 |
|
||||||
18 |
|
vector |
|
3 |
|
2 |
5 |
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Задание
Запишите алгоритм для поиска минимального элемента в одномерном массиве vector[] длиной N
19
Поиск в массиве vector[] минимального
элемента (его индекса)
20
