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

Нахождение суммы или произведения элементов массива или числа элементов, удовлетворяющих определенному условию

Для нахождения суммы S элементов массива необходимо до начала цикла принять ее равной нулю

S:=0;

а потом внутри цикла выполнять

S:=S+<элемент массива>;

Пример задачи этого типа: найти и вывести в файл сумму положительных элементов двухмерного массива B размерности 2x3, введенного в программе с помощью типизированных констант. Программа A8 решения данной задачи имеет вид.

PROGRAM A8;

TYPE VEC=ARRAY[1..2,1..3]OF SHORTINT;

CONST B:VEC=((0,-2,3),(-4,5,7));

VAR OUT:TEXT; I,J,S:byte;

BEGIN

ASSIGN(OUT,'H:\03-103\a8.OUT'); REWRITE(OUT);

WRITELN(OUT,'МАТРИЦА B'); S:=0;

FOR I:=1 TO 2 DO

BEGIN

FOR J:=1 TO 3 DO

BEGIN

IF B[I,J]>0 THEN S:=S+B[I,J];

WRITE(OUT,B[I,J]:3)

END;

WRITELN(OUT)

END;

WRITELN(OUT,'СУММА ПОЛОЖИТЕЛЬНЫХ ЭЛЕМЕНТОВ = ',S); CLOSE(OUT)

END.

Содержимое выходного файла H:\03-103\a8.out будет иметь вид:

МАТРИЦА B

0 -2 3

-4 5 7

СУММА ПОЛОЖИТЕЛЬНЫХ ЭЛЕМЕНТОВ = 15

Для определения произведения P элементов массива надо до начала цикла принять его равным единице

P:=1;

а затем внутри цикла выполнять

P:=P*<элемент массива>;

Для нахождения числа K элементов массива, удовлетворяющих определенному условию, необходимо до начала цикла принять это число равным нулю

K:=0;

а потом внутри цикла выполнять

IF <условие> THEN K:=K+1;

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

Существует несколько алгоритмов решения задачи упорядочения (сортировки) массива по возрастанию или убыванию значений его элементов.

Наиболее оптимальным является алгоритм прямого выбора с проверкой необходимости перестановки элементов. Это итерационный алгоритм (с повторением аналогичных действий в цикле) с числом итераций, равным числу элементов массива минус единица. Упорядочение массива по возрастанию значений его элементов основано на нахождении минимального элемента, а по убыванию - максимального.

Сущность алгоритма прямого выбора для упорядочения одномерного массива по возрастанию состоит в следующем. На любой итерации J находим минимальный элемент MIN с его индексом INDMIN среди элементов, начиная с J-го до последнего, и меняем местами его с J-ым элементом. Перестановку не выполняем, если минимальным является J-ый элемент.

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

PROGRAM A9;

CONST X:ARRAY[1..5] OF SHORTINT=(5,1,-3,0,2);

VAR MIN:SHORTINT; INDMIN,J,I:byte; OUT:TEXT;

BEGIN

ASSIGN(out,'H:\03-104\a9.out'); REWRITE(out); WRITE(out,'Первоначальный массив:',' ':7);

FOR I:=1 TO 5 DO WRITE(out,X[I],' '); WRITELN(out);

FOR J:=1 TO 4 DO

BEGIN

{Нахождение на итерации J минимального элемента MIN среди элементов массива X,

начиная с J-го элемента, и индекса INDMIN минимального элемента}

MIN:=X[J]; INDMIN:=J;

FOR I:=J+1 TO 5 DO

IF X[I]<MIN THEN

BEGIN

MIN:=X[I]; INDMIN:=I

END;

{Перестановка на итерации J минимального элемента с J-ым,если они не совпадают}

IF INDMIN<>J THEN

BEGIN

X[INDMIN]:=X[J]; X[J]:=MIN

END;

WRITE(out,'j = ',J,’ ‘)

IF J=4 THEN WRITE(out,'упорядоченный массив: ')

ELSE WRITE(out,'массив:',' ':15);

FOR I:=1 TO 5 DO WRITE(out,X[I],' '); WRITELN(out)

END;

CLOSE(out)

END.

Содержимое выходного файла H:\03-104\a9.out будет иметь вид:

Первоначальный массив: 5 1 -3 0 2

j = 1, массив: -3 1 5 0 2

j = 2, массив: -3 0 5 1 2

j = 3, массив: -3 0 1 5 2

j = 4, упорядоченный массив: -3 0 1 2 5

Для решения задачи упорядочения массива по убыванию его элементов, основанного на нахождении максимального элемента, в программе A9 необходимо сделать следующие изменения: везде в 5 местах MIN поменять на MAX, INDMIN на INDMAX, один раз в операторе IF X[I]<MIN поменять знак < на >.

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

Первоначальный массив: 5 1 -3 0 2

j = 1, массив: 5 1 -3 0 2

j = 2, массив: 5 2 -3 0 1

j = 3, массив: 5 2 1 0 -3

j = 4, упорядоченный массив: 5 2 1 0 -3

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