- •Оглавление
- •Постановка задачи
- •Поиск минимальных элементов в строках массивов и создание линейного массива из их произведения
- •Сортировка нечетных элементов полученного массива по возрастанию.
- •Вывод отсортированного массива
- •Блок-схема алгоритма
- •Разработка программы на языке pascal
- •Описание блоков укрупненной схемы алгоритма на языке Pascal Ввод элементов двух двумерных массивов
- •Сортировка нечетных элементов полученного массива по возрастанию
- •Вывод отсортированного массива
- •Текст программы
- •Поиск минимальных элементов в строках массивов и создание линейного массива из их произведения
- •Тестирование программы
- •Список литературы
Поиск минимальных элементов в строках массивов и создание линейного массива из их произведения
Далее начинаем обработку массивов. Обработка массивов осуществляется в операторе цикла с параметром. Она заключается в сравнении минимальных элементов в строках двумерных массивов с помощью оператора сравнения if. Если условие после оператора if выполняется, то исполняется оператор после then.
Для того, чтобы прокомментировать, что будет выведен массив C, используем оператор writeln('Полученный массив С').
Поиск минимальных элементов в строках обоих массивов и создание линейного массива из произведений минимальных элементов по соответствующим строкам заданных массивов, изложенный графическим способом, реализуем в следующем фрагменте программы:
writeln('Полученный массив С');
for i:=1 to n do
begin
mina:=A[i,1];
minb:=B[i,1];
for j:=2 to m do
begin
if mina>A[i,j] then mina:=A[i,j];
if minb>B[i,j] then minb:=B[i,j];
end;
C[i]:=mina*minb;
write(C[i]:3);
end;
Как только мы вычислили новый элемент массива С выводим его на экран.
Сортировка нечетных элементов полученного массива по возрастанию
Следующий цикл реализует алгоритм сортировки нечетных элементов полученного массива по возрастанию методом обмена.
Запись for i:=1 to n-1 do означает, что элементы массива будут обрабатываться, начиная с первого до предпоследнего. Внутренний цикл просматривает элементы от i+1 до n-того элемента массива (for j:=i+1 to n do). Если все данные условия выполняются (if (odd(C[i])) and (odd(C[j])) and (C[i]>C[j])), то значения соответствующих элементов меняются местами (Значение функции odd(x) истинно, если x-нечетное число). Эти условия соединены между собой логическими операциями and – если выражения между and истинны, то и сама операция истинна. Для того, чтобы поменять их местами, используем буферную переменную l. Сначала в переменной l сохраняется значение сравниваемого элемента массива (l:=C[i]), затем элементу с этим номером присваивается значение следующего элемента (C[i]:=C[j]), после чего элементу присваивается значение буферной переменной l (C[j]:=l).
Добавим еще оператор writeln без параметров для более удобного восприятия информации с экрана.
Фрагмент программы:
for i:=1 to n-1 do
for j:=i+1 to n do
if (odd(C[i])) and (odd(C[j])) and (C[i]>C[j]) then
begin
l:=C[i];
C[i]:=C[j];
C[j]:=l;
end;
writeln;
Вывод отсортированного массива
После сортировки выводим полученный массив на экран стандартными средствами вывода, предварительно прокомментировав, что выводим его, оператором writeln('Конечный отсортированный массив'):
for i:=1 to n do write(C[i]:3);
где write(C[i]:3) – вывод элементов двумерного массива в строку с указанием количества занимаемых позиций.
Текст программы
uses crt;
Var
A,B:array[1..10,1..10] of integer;
C:array[1..10] of integer;
i,j,m,n,mina,minb,l:integer;
begin
clrscr;
randomize;
write('Введите количество строк и столбцов массива до 10 через пробел: ');
readln(n,m);
writeln('Исходный массив А');
for i:=1 to n do
begin
for j:=1 to m do
begin
A[i,j]:=random(10)+1;{Ввод массива А}
write(A[i,j]:3);
end;
writeln;
end;
writeln('Исходный массив Б');
for i:=1 to n do
begin
for j:=1 to m do
begin
B[i,j]:=random(10)+1;{Ввод массива Б}
write(B[i,j]:3);
end;
writeln;
end;
writeln('Полученный массив С');
for i:=1 to n do
begin
mina:=A[i,1];
minb:=B[i,1];
for j:=2 to m do
begin
if mina>A[i,j] then mina:=A[i,j];
if minb>B[i,j] then minb:=B[i,j];
end;
C[i]:=mina*minb;
write(C[i]:3);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if (odd(C[i])) and (odd(C[j])) and (C[i]>C[j]) then
begin
l:=C[i];
C[i]:=C[j];
C[j]:=l;
end;
writeln;
writeln('Конечный отсортированный массив');
for i:=1 to n do write(C[i]:3)
end.
