Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции по проге / 5_Одномерные массивы (1)

.pdf
Скачиваний:
30
Добавлен:
14.03.2016
Размер:
177.29 Кб
Скачать

Инициализация одномерного массива

Инициализация первых элементов массива различными значениями (остальные элементы обнуляются):

<тип> <имя массива>[<кол-во элементов>] =

{<константа 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