Двухмерный массив: обработка данных в строках (столбцах)

Рассмотрим более сложные задачи обработки двухмерных масивов.
В этом материале будем обрабатывать отдельно строки массива. (Для столбцов достаточно поменять местами индексы)
Какие же задачи мы будем решать?

1. Найти сумму элементов каждой строки и заполнить результатом другой массив, и вывести результат в порядке возрастания.
Решение задачи сводиться в решению следующих проблем.
— заполнение массива случайными числами
— нахождение суммы элементов
— занесение результата (сумма элементов строки) в другой массив
— сортировка массива-результата
— вывод на экран
В задаче реализован принцип «защиты от дурака»

const
 Col = 10;
 Row = 10;

var
 n, m, i, j, sum, Temp: integer;
 Matrix: array[1..Row, 1..Col] of integer; {исходный массив}
 Solution: array[1..Row]of integer;{массив для результата}

BEGIN
 
 randomize;
 write('Количество строк N=');
 readln(n);if n>Row then n := Row;
 write('Количество столбцов M=');
 readln(m);if m>Col then m := Col;
 writeln('Исходная матрица:');
 {заполнение матрицы}
 for i := 1 to N do
 begin
 for j := 1 to M do
 begin
 Matrix[i, j] := random(20);
 write(Matrix[i, j]:4);
 end;
 writeln;
 end;
 {нахождение суммы по строкам} 
 for i := 1 to N do
 begin
 Sum := 0;
 for j := 1 to M do
 begin
 Sum := Sum + Matrix[i, j]; {считаем суммы в строках}
 end; 
 Solution[i] := sum; {создаем из них массив}
 end;
 
 Writeln('Вывод массива сумм:');
 for i := 1 to n do
 writeln('Строка ', i:3, Solution[i]:4);
 
 {сортировка по возрастанию)}
 for i := 1 to n - 1 do
 for j := i + 1 to n do
 if Solution[i] > Solution[j] then
 begin
 Temp := Solution[i];
 Solution[i] := Solution[j];
 Solution[j] := Temp;
 end;
 
 writeln('Результат:');
 for i := 1 to n do
 write(Solution[i]:3);
 readln
END.

Найти минимальный элемент массива, указать номер строки, в которой он находится, и просчитать сумму элементов этой строки

const
 Col = 10;
 Row = 10;

var
 n, m, i, j, sum, RowMin, Min: integer;
 Matrix: array[1..Row, 1..Col] of integer;{исходный массив}

begin
 
 randomize;
 write('Количество строк N=');
 readln(n);if n>Row then n := Row;
 write('Количество столбцов M=');
 readln(m);if m>Col then m := Col;
 writeln('Исходная матрица:');
 
 {заполнение матрицы}
 for i := 1 to N do
 begin
 for j := 1 to M do
 begin
 Matrix[i, j] := random(20);
 write(Matrix[i, j]:4);
 end;
 writeln;
 end;
 
 {нахождение минимального элемента матрицы} 
 min := Matrix[1, 1]; Rowmin := 1;
 for i := 1 to N do
 for j := 1 to M do
 if Matrix[i, j] < min then
 begin
 min := Matrix[i, j];
 RowMin := i;
 end;
 writeln('Минимум=', min:3, ' в строке=', RowMin);
 
{нахождение суммы элементов в нужной строке} 
 sum := 0;
 for j := 1 to m do
 sum := sum + Matrix[RowMin, j];
 writeln('Сумма=', sum);
END.

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

const
 Col = 10;
 Row = 10;

var
 n, m, i, j, sum, RowMin, Min: integer;
 Matrix: array[1..Row, 1..Col] of integer;{исходный массив}

begin
 
 randomize;
 write('Количество строк N=');
 readln(n);if n>Row then n := Row;
 write('Количество столбцов M=');
 readln(m);if m>Col then m := Col;
 writeln('Исходная матрица:');
 {заполнение матрицы}
 for i := 1 to N do
 begin
 for j := 1 to M do
 begin
 Matrix[i, j] := random(20);
 write(Matrix[i, j]:4);
 end;
 writeln;
 end;
{Поиск суммы элементов по строкам}
 for i:=1 to n do
 begin
 sum:=0;
 for j:=1 to m do
 sum:=sum+Matrix[i,j];
 writeln('Сумма элементов ',i,'-й строки = ',sum);
 end;

writeln;

{Поиск суммы элементов по столбцам}
 for j:=1 to m do
 begin
 sum:=0;
 for i:=1 to n do
 sum:=sum+Matrix[i,j];
 writeln('Сумма элементов ',j,'-го столбца = ',sum);
 end;
 readln;
end.

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

{Максимум среди минимумов строк}
const
 Col = 10;
 Row = 10;

var
 n, m, i, j, MaxFromMin, Min: integer;
 Matrix: array[1..Row, 1..Col] of integer;{исходный массив}
 Temp_min: array[1..Row] of integer;

BEGIN
 
 randomize;
 write('Количество строк N=');
 readln(n);if n > Row then n := Row;
 write('Количество столбцов M=');
 readln(m);if m > Col then m := Col;
 writeln('Исходная матрица:');
 {заполнение матрицы}
 for i := 1 to N do
 begin
 for j := 1 to M do
 begin
 Matrix[i, j] := random(20);
 write(Matrix[i, j]:4);
 end;
 writeln;
 end;
 {нахождение минимальных элементов в строках} 
 for i := 1 to N do
 begin
 min := Matrix[i, 1];
 for j := 1 to M do
 if Matrix[i, j] < min then
 begin
 min := Matrix[i, j];
 end;
 Temp_min[i] := min;
 end;
 
 Writeln('Минимальные элементы в строках:');
 for i := 1 to N do
 write(Temp_min[i]:3);
 
 writeln;
 
 {нахождение максимального элемента среди минимумов} 
 MaxFromMin := Temp_min[1];
 for i := 2 to N do
 if Temp_min[i] > MaxFromMin then MaxFromMin := Temp_min[i];
 writeln('Максимальный среди минимальных=', MaxFromMin);
 
END.

В двухмерном массиве отсортировать значения каждой строки по возрастанию

Сортировка по строкам}
const
 Col = 10;
 Row = 10;

var
 n, m, i, j, k, Temp: integer;
 Matrix: array[1..Row, 1..Col] of integer;{исходный массив}

BEGIN
 
 randomize;
 write('Количество строк N=');
 readln(n);if n > Row then n := Row;
 write('Количество столбцов M=');
 readln(m);if m > Col then m := Col;
 writeln('Исходная матрица:');
 {заполнение матрицы}
 for i := 1 to N do
 begin
 for j := 1 to M do
 begin
 Matrix[i, j] := random(20);
 write(Matrix[i, j]:4);
 end;
 writeln;
 end;
 {Сортировка элементов по строкам} 
 for i := 1 to N do
 for j := 1 to M do
 for k := 1 to m - 1 do
 if (Matrix[i, k] < Matrix[i, k + 1]) then 
 begin
 Temp := Matrix[i, k]; 
 Matrix[i, k] := Matrix[i, k + 1]; 
 Matrix[i, k + 1] := Temp; 
 end;
 
 Writeln('Сортирован по строкам');
 for i := 1 to N do
 begin
 for j := 1 to M do
 begin
 write(Matrix[i, j]:4);
 end;
 writeln;
 end; 
 
END.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии