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

Алгоритм

1. Создание двумерного массива с помощью функции случайных чисел с одновременным выводом на экран.

2. Задать первоначальное значение для наибольшего элемента, в качестве такого значения можно взять значение любого элемента массива. Чаще всего в качестве наибольшего элемента принимают элемент первой строки первого столбца, т.е. a[1, 1].

3. Далее организуются два цикла, с помощью которых перебираются последовательно элементы массива и сравниваются с первоначально принятым за наибольший.

Если элемент массива больше максимального, тогда надо присвоить максимальному значение этого элемента, а переменным- счетчикам присваиваются значения номеров строки и столбца этого нового максимального элемента.

Циклы заканчиваются.

4. На экран выводится максимальный элемент, номер строки и номер столбца, в которых он находится.

Составим процедуру определения наибольшего элемента двумерного массива.

Procedure maximum_two(n, m :integer; var max, k, p : integer);

var

i, j : integer;

begin

max := a[1, 1];

for i := 1 to n do

for j := 1 to m do

if a[i, j] > max then

begin

max := a[i, j];

k := i;

p := j

end

end;

Программа

Program Problem2;

const

n = 5; m = 6;

type

t = array[1..m,1..n] of integer;

var

a : t;

k, p, max : integer;

{----------------------------------------------------------------------------------------}

Procedure create_two(n, m : integer; var a : t);

var

i, j : integer;

begin

writeln('Заданный двумерный массив целых чисел');

randomize;

for i := 1 to n do

begin

for j := 1 to m do

begin

a[i, j] := random(201) - 100;

write(a[i, j]:6, ' ')

end;

writeln

end

end;

{----------------------------------------------------------------------------------------}

Procedure maximum_two(n, m :integer; var max, k, p : integer);

var

i, j : integer;

begin

max := a[1, 1];

for i := 1 to n do

for j := 1 to m do

if a[i, j] > max then

begin

max := a[i, j];

k := i;

p := j

end

end;

{----------------------------------------------------------------------------------------}

begin

create_two(n, m, a);

maximum_two(n, m, max, k, p);

writeln('Наибольший элемент массива ', max);

writeln('Находится в ', k, '-й строке ', p, '-ом столбце')

end.

Пример 3. В двумерном массиве найдите наибольшие элементы каждой строки.

Вот здесь уже необходим одномерный массив по количеству строк массива. Каждый его элемент, в конечном итоге, даст нам значение максимального элемента каждой строки.

В цикле, который организован по числу строк, в наших программах это цикл по i, надо элементам одномерного массива присваивать первоначальные значения первых элементов строк, а затем брать элементы строки, начиная со второго и сравнивать с выбранным в качестве наибольшего.

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

После завершения работы циклов, одномерный массив, в котором накопились наибольшие элементы строк вывести на экран.

Вот в этой программе удобно описать массив так (подумайте почему?):

const

n = 4; m = 5;

type

s = array[1..m] of integer;

t = array[1..n] of s;

var

a : t;

b : s;

Составим процедуру определения наибольшего элемента в каждой строке:

Procedure maxim_line(n, m : integer; a :t; var b : s);

var

i, j : integer;

begin

for i := 1 to n do

begin

b[i] := a[i, 1];

for j := 1 to m do

if a[i, j] > b[i] then b[i] := a[i, j];

end;

writeln('Наибольшие элементы каждой строки массива');

for i := 1 to n do write(b[i]:6, ' ');

writeln

end;