Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Massivi.doc
Скачиваний:
5
Добавлен:
26.08.2019
Размер:
86.53 Кб
Скачать

Типовые задачи на массивы

Имеются следующие типовые задачи на массивы:

1) поиск максимального или минимального элемента в массиве;

2) нахождение суммы или произведения элементов массива;

3) упорядочение массива по возрастанию или убыванию его элементов;

4) поиск в массиве заданного элемента;

Поиск максимального или минимального элемента в массиве

Сущность алгоритма поиска максимального элемента в одномерном массиве и его индекса состоит в следующем. Вначале за максимальный принимается первый элемент, а за индекс – 1 или индекс первого элемента. Затем второй элемент сравнивается с максимальным, и, если он больше, то он и принимается за максимальный, и запоминается его индекс. Далее продолжается аналогичное сравнение оставшихся элементов с максимальным вплоть до последнего элемента массива.

Программа A7 решения задачи поиска максимального элемента MAX в одномерном массиве A и его индекса K с вводом массива из входного файла и выводом результатов в выходной файл имеет вид.

PROGRAM A7;

VAR I,K:byte; INP,OUT:TEXT;A:ARRAY[1..9]OF SHORTINT;

MAX:SHORTINT;{Тип максимального элемента MAX массива должен совпадать

с типом его элементов}

BEGIN

ASSIGN(INP,'H:\03-102\a7.IN'); RESET(INP);

FOR I:=1 TO 9 DO READ(INP,A[I]); CLOSE(INP);

MAX:=A[1]; K:=1;

FOR I:=2 TO 9 DO

IF A[I]>MAX THEN

BEGIN

MAX:=A[I]; K:=I

END;

ASSIGN(OUT,'H:\03-102\a7.OUT'); REWRITE(OUT);

WRITELN(OUT,'Вектор A':17);

FOR I:=1 TO 9 DO WRITE(OUT,A[I],' '); WRITELN(OUT);

WRITELN(OUT,'МАКСИМАЛЬНЫЙ ЭЛЕМЕНТ A[',K,'] = ',MAX); CLOSE(OUT)

END.

До запуска на выполнение данной программы надо создать входной файл a7.IN в директории 03-102 диска H с девятью целыми числами типа SHORTINT с пробелом между ними, например

5 45 17 3 -58 1 -26 55 22

В результате выполнения программы в директории 03-102 диска H появится выходной файл a7.out со следующим содержимым.

Вектор A

5 45 17 3 -58 1 -26 55 22

МАКСИМАЛЬНЫЙ ЭЛЕМЕНТ A[8] = 55

Для решения той же задачи, но с вводом массива не из входного файла, а с помощью типизированной константы-массива в программе A7 необходимо сделать следующие изменения:

1) из раздела VAR убрать INP с запятой и описание

A:ARRAY[1..9]OF SHORTINT;

2) добавить раздел описания

CONST A:ARRAY[1..9]OF SHORTINT=(5,45,17,3,-58,1,-26,55,22);

3) убрать четыре первых исполняемых оператора ASSIGN, RESET, FOR и CLOSE.

В этом случае входной файл будет отсутствовать, а выходной файл будет тот же.

Для решения той же задачи, но с вводом массива с помощью генератора псевдослучайных целых чисел, равномерно распределенных от -5 до 10 в программе A7 необходимо сделать следующие изменения:

1) из раздела VAR убрать INP с запятой

2) заменить первые четыре исполняемые операторы ASSIGN, RESET, FOR и

CLOSE на следующие:

RANDOMIZE;

FOR I:=1 TO 9 DO A[I]:=-5+RANDOM(16);

Тогда входного файла не будет, а выходной файл может иметь вид

Вектор A

-4 -5 10 5 -1 6 4 -1 3

МАКСИМАЛЬНЫЙ ЭЛЕМЕНТ A[3] = 10

Получаемые псевдослучайные числа при каждом новом запуске на выполнение программы меняются, так как они зависят от текущего времени на компьютерных часах.

Для поиска минимального элемента в одномерном массиве необходимо в программе A7 сделать следующие изменения: везде в 5 местах MAX поменять на MIN, заменить слово максимальный на минимальный и в операторе IF поменять знак > на <.

Содержимое выходного файла в этом случае будет иметь вид.

Вектор A

5 45 17 3 -58 1 -26 55 22

МИНИМАЛЬНЫЙ ЭЛЕМЕНТ A[5] = -58

Алгоритм поиска максимального элемента в многомерном массиве и его индексов аналогичен рассмотренному выше алгоритму для одномерного массива.

Сущность алгоритма поиска максимального элемента MAX в двухмерном массиве B и его индексов K и N состоит в следующем. Вначале за максимальный принимается первый элемент с индексами 1 и 1 (или с индексами первого элемента), а за каждый из двух индексов - 1 (или индексы первого элемента). Затем последовательно каждый оставшийся элемент массива вплоть до последнего сравнивается с максимальным, и, если он больше, то он и принимается за максимальный, и запоминаются все его индексы.

Программа A7a решения задачи поиска максимального элемента MAX в двухмерном массиве B размерности 2x3 и его индексов K и N с вводом массива из входного файла и выводом результатов в выходной файл имеет вид.

PROGRAM A7a;

VAR I,K,J,N:byte; INP,OUT:TEXT;

B:ARRAY[1..2,1..3] OF SHORTINT; MAX:SHORTINT;

BEGIN

ASSIGN(INP,'H:\03-102\a7a.IN'); RESET(INP);

FOR I:=1 TO 2 DO

FOR J:=1 TO 3 DO READ(INP,B[I,J]);

CLOSE(INP);

MAX:=B[1,1]; K:=1; N:=1;

FOR I:=1 TO 2 DO

FOR J:=1 TO 3 DO

IF B[I,J]>MAX THEN

BEGIN

MAX:=B[I,J]; K:=I; N:=J

END;

ASSIGN(OUT,'H:\03-102\a7a.OUT'); REWRITE(OUT); WRITELN(OUT,' МАТРИЦА B');

FOR I:=1 TO 2 DO

BEGIN

FOR J:=1 TO 3 DO WRITE(OUT,B[I,J]:4); WRITELN(OUT)

END;

WRITELN(OUT,'МАКСИМАЛЬНЫЙ ЭЛЕМЕНТ B[',K,',',N,'] = ',MAX); CLOSE(OUT)

END.

Содержимое входного файла H:\03-102\a7a.in может иметь вид:

5 45 17

3 -58 1

Тогда содержимое выходного файла H:\03-102\a7a.out будет иметь вид:

МАТРИЦА B

5 45 17

3 -58 1

МАКСИМАЛЬНЫЙ ЭЛЕМЕНТ B[1,2] = 45

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]