- •Структурированные типы данных
- •1. Общие понятия
- •2. Одномерные массивы (векторы)
- •2.1. Объявление одномерных массивов
- •2.2. Решение задач с использованием одномерных массивов
- •2.2.1. Ввод одномерного массива в память компьютера
- •2.2.2. Вывод массива на экран
- •2.2.3. Типовые алгоритмы для обработки одномерных массивов
- •Ф рагмент программы приводится ниже.
- •2.2.3.1. Подсчёт суммы, произведения, количества элементов массива, удовлетворяющих заданному условию
- •2.2.3.2. Поиск значений среднего арифметического и среднего геометрического элементов массива
- •2.2.3.3. Обработка элементов одномерного массива, имеющих чётные индексы
- •2.2.3.4. Формирование нового одномерного массива из элементов другого одномерного массива
- •2.2.3.5. Нахождение максимального (минимального) элемента одномерного массива
- •2.2.3.6. Изменение порядка следования элементов в массиве на обратный (инверсия)
- •2.2.3.7. Сортировка элементов массива
- •3. Двумерные массивы (матрицы)
- •3.1. Объявление двумерных массивов
- •3.2. Решение задач с использованием двумерных массивов
- •3.2.1. Ввод и вывод на экран двумерного массива
- •3.2.2. Нахождение суммы, произведения элементов, максимума всей матрицы в целом
- •3.2.3. Нахождение суммы, произведения, максимума в каждой строке матрицы
- •3.2.4. Алгоритм обработки элементов каждого столбца
- •3.2.5. Обработка элементов главной диагонали
- •3.2.6. Обработка элементов побочной диагонали
- •3.2.7. Обработка элементов квадратных матриц, расположенных над и под главными и побочными диагоналями
- •Пример решения задач
2.2. Решение задач с использованием одномерных массивов
В общем случае алгоритм решения задачи с использованием массивов выглядит так, как показано на рисунке 2. Рассмотрим более подробно шаги этого алгоритма.
Рис.2
2.2.1. Ввод одномерного массива в память компьютера
При вводе массива предлагается, что память для его размещения уже зарезервирована. Количество элементов, под которые зарезервирована память, обозначим константой LEN. Тогда LEN — это максимально возможное для использования количество элементов массива (длина массива). В действительности при решении большинства задач количество требуемых элементов может изменяться от одного запуска программы к другому. Поэтому следует предоставить пользователю возможность заказать требуемое ему в данном конкретном случае число элементов массива, которое обозначим N. Таким образом, первым шагом алгоритма ввода одномерного массива станет ввод переменной N — требуемой длины массива. Напомним, что N всегда меньше либо равна LEN.
В языке Паскаль нет средств ввода-вывода всего массива целиком, поэтому ввод и вывод массивов выполняется поэлементно. Словесно можно описать шаг ввода одномерного массива следующим образом:
ввести элемент А[1];
ввести элемент А[2];
….
ввести элемент А[N].
Таким образом, индекс вводимого элемента изменяется от 1 до N с шагом 1. Очевидно, что для реализации ввода массива необходимо выбрать структуру цикла. Блок-схема ввода массива представлена на рисунке 3.
Рис.3
На языке ТурбоПаскаль ввод одномерного массива реализуется следующим фрагментом программы:
Program ABC;
const
LEN = 100; {максимальная длина массива}
var
А : array [1. .LEN] of real; {объявление массива, состоящего из 100 вещественных чисел}
i,N : integer; {i — индекс, N — требуемая длина массива}
BEGIN
write (‘Введите длину массива N =');
read(N);
for i:=1 to N do
begin
write(‘A[‘ , i , ‘]=' );
read (A [i])
end;
…
END.
В дальнейшем заголовок и раздел описания программы приводить не станем. Фрагменты программ, описанные в примерах, следует располагать в требуемом месте раздела исполняемых операторов приведённой здесь программы.
2.2.2. Вывод массива на экран
Блок-схема алгоритма вывода одномерного массива на экран представлена на рисунке 4. Она очень мало отличается от вышеприведённой блок-схемы алгоритма ввода и построена на основании таких же рассуждений. Единственным принципиальным отличием является то, что не требуется запрашивать у пользователя длину массива, которая к моменту вывода массива на экран уже известна.
Фрагмент программы для вывода одномерного массива на экран:
…
writeln(‘Массив А’);
for i:=1 to N do
write (A[ i ]:6:2);
writeln;
…
Рис.4
2.2.3. Типовые алгоритмы для обработки одномерных массивов
Т.к. числовые массивы являются наиболее распространённой структурой данных в инженерных задачах, было разработано большое количество типовых алгоритмов обработки массивов. В этом разделе будут рассмотрены некоторые из них.
