- •Двумерные массивы. Наибольший и наименьший элементы. Матрицы, строк, столбцов
- •1. Двумерные массивы
- •2. Ввод и вывод элементов двумерных массивов
- •Первый способ
- •Второй способ
- •Третий и четвертый способы
- •Алгоритм
- •Программа
- •Программа
- •Задание 1
- •Программа
- •Алгоритм
- •Программа
- •Задание 2
- •Программа
- •Программа
Алгоритм
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;
