Массивы. Начальные сведения. С / С++. Тема 05

Содержание

Слайд 2

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А. Массив и его

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А.

Массив и его объявление

Массив

— набор пронумерованных однотипных элементов
Объявление массива:
<тип> <идентификатор>[<константа>]
где: <константа> — количество элементов массива
Примеры:
int array[20];
double delta, beta[30], alpha;
В этом примере delta, alpha — простые переменные, beta[30] – массив из 30 double
Слайд 3

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А. Использование массивов Обращение

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А.

Использование массивов

Обращение к элементу

массива:
<идентификатор>[<индекс элемента>];
где: <индекс элемента> — порядковый номер элемента массива – выражение типа «целое»
Примеры:
array[3] = 8;
a = array[i] * array[j];
d = beta[i + j];
Элементы массива нумеруются с 0:
beta[0], beta[1], beta[2],... , beta[m - 1]
Слайд 4

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А. Пример: ввод элементов

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А.

Пример: ввод элементов массива

const

int max_size = 100;
int array[max_size];
int sum, n, i;
do
{
cout << "Введите количество элементов массива:";
cin >> n;
} while ( n <= 0 || n > max_size );
for ( i = 0; i < n; i++ )
{
cout << "[" << i << "] = ";
cin >> array[i];
}
Слайд 5

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А. Пример: вычисление суммы

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А.

Пример: вычисление суммы и

вывод

sum = 0; // Обнуляем сумму
for ( int i = 0; i < n; i++ )
sum = sum + ms[i];
for ( i = 0; i < n; i++ )
{
cout << "[" << i << "] = ";
cin >> array[i];
}
cout << "Sum = " << sum << endl;

Слайд 6

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А. Пример: копирование массива

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А.

Пример: копирование массива

j =

0;
while ( b[j] != barrier )
{
a[j] = b[j];
j++;
}

j = 0;
while ( b[j] != barrier )
a[j++] = b[j];

j = 0;
while ( ( a[j++] = b[j] ) != barrier )

Есть ли различия:
между случаем 1 и случаем 2
между случаем 2 и случаем 3

Слайд 7

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А. Пример: поиск максимума

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А.

Пример: поиск максимума (версия

1)

const int array_size = 100;
int array[array_size];
int max, nmax;
int i;
max = array[0];
nmax = 0;
for ( i = 1; i < array_size; i++ )
if ( array[i] > max )
{
max = array[i];
nmax = i;
}

Слайд 8

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А. Пример: поиск максимума

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А.

Пример: поиск максимума (версия

2)

const int array_size = 100;
int array[array_size];
int nmax;
int i;
nmax = 0;
for ( i = 1; i < array_size; i++ )
if ( array[i] > array[nmax] )
nmax = i;

Слайд 9

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А. Пример: поиск максимума

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А.

Пример: поиск максимума среди

положительных

const int array_size = 100;
int array[array_size];
int max, nmax;
int i;
max = array[0];
nmax = 0;
for ( i = 1; i < array_size; i++ )
if ( array[i] > 0 && array[i] > max )
{
max = array[i];
nmax = i;
}

А если нулевой элемент был отрицательным?

Слайд 10

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А. const int array_size

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А.

const int array_size =

100;
int array[array_size];
int max, nmax;
int i;
max = -INT_MAX; // -numeric_limits::max();
nmax = -1;
for ( i = 0; i < array_size; i++ )
if ( array[i] > 0 && array[i] > max )
{
max = array[i];
nmax = i;
}

Пример: поиск максимума среди положительных

Слайд 11

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А. Инициализация Пример int

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А.

Инициализация

Пример
int days[] = {

31, 28, 31, 30, 31, 30,
31, 31, 30, 31, 30, 31 };
Значения элементов
int y[6] = { 1, 2, 3 }; // Инициализаторов
меньше, чем размер массива
// y[0] = 1, y[1] = 2, y[2] = 3,
// y[3] = 0, y[4] = 0, y[5] = 0
int z[3] = { 1, 2, 3, 4, 5 }; // Ошибка,
слишком много инициализаторов
Число элементов в массиве
sizeof(days) / sizeof(int)
Слайд 12

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А. Пример: проверка упорядоченности

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А.

Пример: проверка упорядоченности

int x[]

= { 77, 1, 3, 4, 7, 13, 17, 19, 23 };
int n = sizeof(x) / sizeof(int); // Размер массива
int i, flag = 1; // Пусть массив упорядочен
...
for(i = 0; i < n - 1; i++)
if(x[i] > x[i + 1])
{
flag = 0; // Массив не упорядочен
break; // Выход из цикла
}
if(flag) cout << "The array is ordered" << endl;
else cout << "The array is not ordered" << endl;
...

Демонстрация

Слайд 13

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А. Массив как параметр

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А.

Массив как параметр функции

int

SumArray( int[], int ); // Прототип функции
int main()
{
int a[20], b[10], na, nb;
... // Ввод a, b
int sa = SumArray(a, na);
int sb = SumArray(b, nb);
return 0;
}
int SumArray(int ms[], int n)
{
int sum = 0, i;
for ( i = 0; i < n; i++ ) sum += ms[i];
return sum;
}
Слайд 14

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А. Задачи Для данного

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А.

Задачи

Для данного массива вывести

вначале его элементы с четными индексами, а затем — с нечетными
Вычисление количества локальных максимумов в данном массиве
Циклический сдвиг элементов массива на данное число позиций
Задачи для самостоятельной работы по одномерным массивам
Слайд 15

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А. Двумерные массивы

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А.

Двумерные массивы

Слайд 16

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А. Двумерные массивы Пример:

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А.

Двумерные массивы

Пример:
double r[3][4];
Расположение в

памяти — по строкам

Инициализация
double r[3][4] = {{500, 700, 450, 1000},
{600, 710, 480, 1100},
{800, 750, 550, 1200}
};

Слайд 17

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А. Задачи Подсчет выручки

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А.

Задачи

Подсчет выручки
Задачи для самостоятельной

работы по двумерным массивам
Слайд 18

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А. Алгоритмы сортировки и поиска

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А.

Алгоритмы сортировки и поиска

Слайд 19

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А. Алгоритмы сортировки и поиска Сортировка методом «пузырька» Демонстрация

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А.

Алгоритмы сортировки и поиска

Сортировка

методом «пузырька»

Демонстрация

Слайд 20

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А. Алгоритмы сортировки и поиска Сортировка алгоритмом выбора Демонстрация

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А.

Алгоритмы сортировки и поиска

Сортировка

алгоритмом выбора

Демонстрация

Слайд 21

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А. Пример: поиск элемента

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А.

Пример: поиск элемента в

массиве

int Find(int array[], int n, int key)
{
int nom = -1;
int i = 0;
while ( i < n && nom == -1 )
if ( array[i++] == key ) nom = i;
return nom;
}

Здесь есть ошибка. Где?

Слайд 22

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А. Пример: поиск элемента

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А.

Пример: поиск элемента в

массиве

int Find(int array[], int n, int key)
{
int nom = -1;
int i = 0;
while ( i < n && nom == -1 )
if ( array[i++] == key ) nom = i - 1;
return nom;
}

Демонстрация

Слайд 23

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А. Задачи Определение того,

НРТК, 2022 г. Массивы. Начальные сведения Созонов А.А.

Задачи

Определение того, совпадают ли

два данных массива
Задачи для самостоятельной работы
Сайт алгоритмов: http://algolist.manual.ru/