Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lec05-АТП2011-12.doc
Скачиваний:
2
Добавлен:
11.07.2019
Размер:
61.44 Кб
Скачать
    1. Поиск максимума/минимума

Алгоритм поиска максимума в одномерном массиве

Поиск максимума в одномерном массиве обычно выполняют по такому алгоритму:

  1. Считают что максимум – это первый элемент массива. Запоминают значение этого элемента в специальной переменной (например, Max), кроме этого можно запомнить и порядковый номер максимального элемента, равный 1 (например, в переменной NMax).

  2. Организуется цикл (как правило, цикл с параметром) в котором поочередно просматриваются все оставшиеся элементы массива (от 2-го до последнего). Каждый элемент сравнивается с максимумом. Если значение элемента оказывается больше, чем значение максимума, то максимуму присваивают значение этого элемента, а текущее значение параметра цикла (то есть порядковый номер максимума) запоминается в переменной NMax.

  3. После завершения цикла выводят значение максимума (Max) и его порядкового номера (NMax) на экран.

Примечание – Если выполняют поиск минимума, то операцию сравнения в п.2 алгоритма заменяют на противоположную, то есть проверяют, что значение элемента меньше, чем значение минимума.

Пример поиска максимума в одномерном массиве

Program PoiskMax;

Uses CRT; {Подключение модуля работы с экраном}

Const

N=10; {число элементов массива}

Type {Описание типа массива}

Massiv1=Array[1..N] of Integer;

Var

Z :Massiv1; {исходный массив}

Max :Integer; {макс.элемент}

Nmax:Byte; {номер макс. эл-та}

i :Byte; {параметр цикла}

BEGIN

ClrScr; {Очистка экрана}

{Ввод элементов массива}

For i:=1 to N do

Begin

Write('Z[',i,']='); {Вывод сообщения}

ReadLn(Z[i]); {Ввод элемента}

End;

{Вывод массива на экран в строку}

WriteLn('Исходный массив'); {Вывод сообщения}

For i:=1 to N do

Write(Z[i]:4); {Вывод i-го элемента на экран}

WriteLn; {Переход на новую строку}

{Поиск максимума}

Max:=Z[1]; {Считаем,что максимум - это 1-й элемент}

Nmax:=1; {Запоминаем его номер}

For i:=2 to N do {Просматриваем оставшиеся элементы}

If Z[i]>Max then {Если элемент больше максимума}

Begin

Max:=Z[i]; {Присваиваем максимуму значение этого эл-та}

Nmax:=i; {Запоминаем номер этого эл-та}

End;

WriteLn('Максимум=',Max);

WriteLn('Его порядковый номер=',Nmax);

ReadLn;

END.

    1. Примеры обработки матриц

Пример 1. Дана матрица . Обменять в ней местами 2-й и 3-й столбцы.

Program Obmen;

Uses CRT;

Const

M=3;

N=4;

{Задание исходной матрицы}

Z:Array[1..M,1..N] of Integer=

((4, 0, 6, 2),

(7, 9, 1, 5),

(8, 3, 4, 0));

Var

i,j :Byte;

Temp:Integer;

BEGIN

ClrScr;

{Вывод исходной матрицы}

WriteLn('Исходная матрица');

For i:=1 to M do

Begin

For j:=1 to N do Write(Z[i,j]:4);

WriteLn;

End;

{Обмен столбцов}

For i:=1 to N do

Begin

Temp:=Z[i,2];

Z[i,2]:=Z[i,3];

Z[i,3]:=Temp;

End;

{Вывод преобразованной матрицы}

WriteLn('Преобразованная матрица');

For i:=1 to M do

Begin

For j:=1 to N do Write(Z[i,j]:4);

WriteLn;

End;

ReadLn;

END.

Пример 2. Преобразовать одномерный массив X={13, 25, 16, 8, 11, 4, 10, 19, 2, 17, 23, 41} в матрицу Z[3,4] построчно (массив условно разрезается на три полоски, которые затем располагаются одна под другой):

Program Transform01; {Преобразование массивов}

Uses CRT;

Const

L=12; {Число элементов одномерного массива}

M=3; {Число строк матрицы}

N=4; {Число столбцов матрицы}

{Исходный массив}

X:Array[1..L] of Integer=

(13,25,16,8,11,4,10,19,2,17,23,41);

Var

i,j,k:Integer;

Z:Array[1..M,1..N] of Integer;

BEGIN

ClrScr;

{Вывод исходного массива}

WriteLn('Исходный массив:');

For i:=1 to L do Write(X[i]:4);

WriteLn;

{Преобразование одномерного массива}

{в матрицу по строкам}

k:=1;

For i:=1 to M do

For j:=1 to N do

Begin

Z[i,j]:=X[k];

Inc(k);

End;

{Вывод полученной матрицы}

WriteLn('Полученная матрица:');

For i:=1 to M do

Begin

For j:=1 to N do Write(Z[i,j]:4);

WriteLn;

End;

ReadLn;

END.

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