
- •Общие сведения о массивах
- •Алгоритмы инициализации значений элементов массива
- •Инициализации значений элементов массива постоянными значениями
- •Ввод и вывод значений элементов массивов
- •Ввод значений элементов одномерного массива
- •Вывод значений элементов одномерного массива
- •Тестовая программа ввода и вывода одномерного массива
- •Int k; // Текущий предельный размер массива
- •Ввод значений элементов двухмерного массива
- •Вывод значений элементов двухмерного массива
- •Алгоритмы пересылки массивов
- •Пересылка двухмерного массива в одномерный массив
- •Пересылка одномерного массива в двухмерный массив
- •Простые алгоритмы работы с массивами
- •Алгоритм нахождения суммы и среднего арифметического значений элементов одномерного массива
- •Алгоритм нахождения суммы и среднего арифметического значений элементов двухмерного массива
- •Поиск элемента с максимальным и минимальным значениями
- •Поиск в массиве элемента с заданным значением
- •Алгоритм инициализации элементов одномерного массива значениями ряда целых нечетных чисел
- •Формирование единичной матрицы
- •Табуляция функции в массив
- •Организация стека при помощи массива
- •Организация очереди при помощи массива
-
Алгоритм нахождения суммы и среднего арифметического значений элементов двухмерного массива
Алгоритм нахождения суммы и среднего арифметического значений элементов двухмерного массива основан на полном переборе всех значений элементов двухмерного массива.
float Sum; //Начальное значение суммы
float Average; //Среднее арифметическое значение
//Расчет значения суммы Sum и значения среднего арифметического
// значений элементов двухмерного массива Average
Sum = 0.0;
//Перебор всех элементов двухмерного массива b
//Задание j – номеров строк элементов массива b*/
for (int j = 0; j<n; j++)
//Задание i – номеров столбцов строки j элементов массива
for (int i = 0; i<m; i++)
Sum = Sum + b[j,i]; /*{Увеличение текущкго значения суммы
на значение очередного элемента
двухмерного массива b*/
//Расчет среднего арифметического значения
Average = Sum/(m*n);
-
Поиск элемента с максимальным и минимальным значениями
Помимо собственно максимального и минимального значений часто требуется выявление значений их номеров (индексов). Ведь по номеру индекса элемента всегда легко восстановить значение элемента.
Случай одномерного массива.
float aMin; //Собственно значение минимума
int iaMin; //Значение индекса минимума
float aMax; //Собственно значение максимума
int iaMax; //Значение индекса максимума
//Поиск элементов массива с максимальным и минимальным
// значениями
//Первичное определение максимального и минимального значений
aMin = a[0]; //Собственно значение минимума
iaMin = 0; //Значение индекса минимума
aMax = a[0]; //Собственно значение максимума
iaMax = 0; //Значение индекса максимума
//Задание i – номера тестируемого элемента массива
for (int i = 1; i<k; i++) //Цикл можно выполнять и от 1 до k
{
//Работа с очередным i-м элементом
if (a[i] < aMin) //Выявлен элемент меньше минимума
{
//Переопределение минимума
aMin = a[i]; //Запоминание нового минимума
iaMin = i; //Запоминание индекса нового минимума
}
if (a[i] > aMax) //Выявлен элемент, больший максимума
{
//Переопределение максимума
aMax = a[i]; //Запоминание нового максимума
iaMax = i; //Запоминание индекса нового максимума
}
}
Рассмотрим работу алгоритма на тестовом примере.
Пусть k = 7, а массив a инициализирован значениями:
Отметим, что для корректного выполнения алгоритма фрагмента необходимо иметь уже определенное значение k, инициализированный массив a, а также необходимо описать переменные:
float aMin; //Собственно значение минимума
int iaMin; //Значение индекса минимума
float aMax; //Собственно значение максимума
int iaMax; //Значение индекса максимума
Для двухмерного массива построение алгоритма аналогично, реализуется двумя вложенными циклами, задающих номера всех элементов массива b, но надо запомнить второй индекс:
float bMin; //Собственно значение минимума
int ibMin; //Значение индекса i минимума
int jbMin; //Значение индекса j минимума
float bMax; //Собственно значение максимума
int ibMax; //Значение индекса i максимума
int jbMax; //Значение индекса j максимума
Первичное определение максимального и минимального значений:
//Первичное определение максимального и минимального значений
bMin = b[1][1]; //Собственно значение минимума
ibMin = 1; //Значение индекса i минимума
jbMin = 1; //Значение индекса j минимума
bMax = b[1][1]; //Собственно значение максимума
ibMax = 1; //Значение индекса i максимума
jbMax = 1; //Значение индекса j максимума