Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
работа с массивами.doc
Скачиваний:
10
Добавлен:
05.11.2018
Размер:
358.91 Кб
Скачать
    1. Алгоритм нахождения суммы и среднего арифметического значений элементов двухмерного массива

Алгоритм нахождения суммы и среднего арифметического значений элементов двухмерного массива основан на полном переборе всех значений элементов двухмерного массива.

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);

    1. Поиск элемента с максимальным и минимальным значениями

Помимо собственно максимального и минимального значений часто требуется выявление значений их номеров (индексов). Ведь по номеру индекса элемента всегда легко восстановить значение элемента.

Случай одномерного массива.

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 максимума