Удалить из массива строку и столбец, на пересечении которых находится минимальный элемент - Pascal ABC
Формулировка задачи:
Помогите исправить ошибку . Задание :Сформировать двумерный массив. Удалить из него строку и столбец, на пересечении
которых находится минимальный элемент.
Листинг программы
- var a:array[,]of integer;
- n,i,j,imin,jmin,l:byte;
- procedure delete (var a:array [,] of integer; n,l: integer);
- begin
- for var i:=imin to n-2 do
- for var j:=0 to n-1 do
- a[i,j]:=a[i+1,j];
- for var j:=jmin to l-2 do
- for var i:=0 to n-2 do
- a[i,j]:=a[i,j+1];
- dec(n,l);
- end;
- begin
- write('n,l='); readln(n,l);
- Setlength(a,n,l);
- imin:=0; jmin:=0;
- for i:=0 to n-1 do
- begin
- for j:=0 to l-1 do
- begin
- a[i,j]:=-50+random(101);
- write(a[i,j]:4);
- if a[i,j]<a[imin,jmin] then
- begin
- imin:=i; jmin:=j;
- end;
- end;
- writeln;
- end;
- writeln('мин эл=',a[imin,jmin]);
- delete(a,imin,jmin);
- setlength(a,(n-1),(l-1));
- writeln;
- writeln(a);
- for i:=0 to n-1 do
- begin
- for j:=0 to l-1 do
- write(a[i,j]:4);
- writeln;
- end;
- end.
Решение задачи: «Удалить из массива строку и столбец, на пересечении которых находится минимальный элемент»
textual
Листинг программы
- type mtr=array[,]of integer;
- procedure delete (var a:mtr; var n,l,imin,jmin: byte);
- begin
- if imin<n-1 then
- for var i:=imin to n-2 do
- for var j:=0 to l-1 do
- a[i,j]:=a[i+1,j];
- dec(n);
- if jmin<l-1 then
- for var j:=jmin to l-2 do
- for var i:=0 to n-1 do
- a[i,j]:=a[i,j+1];
- dec(l);
- end;
- var a:mtr;
- n,l,i,j,imin,jmin:byte;
- begin
- write('n,l='); readln(n,l);
- Setlength(a,n,l);
- imin:=0;
- jmin:=0;
- for i:=0 to n-1 do
- begin
- for j:=0 to l-1 do
- begin
- a[i,j]:=-50+random(101);
- write(a[i,j]:4);
- if a[i,j]<a[imin,jmin] then
- begin
- imin:=i;
- jmin:=j;
- end;
- end;
- writeln;
- end;
- writeln;
- writeln('мин эл=',a[imin,jmin],' строка=',imin+1,' столбец=',jmin+1);
- delete(a,n,l,imin,jmin);
- writeln;
- setlength(a,n,l);
- for i:=0 to n-1 do
- begin
- for j:=0 to l-1 do
- write(a[i,j]:4);
- writeln;
- end;
- end.
Объяснение кода листинга программы
- Создается тип данных
mtr
, который представляет собой двумерный массив целых чисел. - Создается процедура
delete
, которая принимает в качестве параметров массивa
, индексы начала и конца пересечения, а также минимальный элемент. - В начале процедуры проверяется, находится ли минимальный элемент вне пересечения. Если это так, то он перемещается внутрь пересечения.
- Затем происходит итерация по массиву
a
для обновления элементов. Если текущий элемент меньше минимального, то он заменяется на следующий элемент. Это продолжается до тех пор, пока не будет достигнут конец пересечения. - После завершения итерации обновленные элементы сохраняются в новом массиве.
- Создается переменная
a
типаmtr
. - Читаются значения
n
,l
из стандартного ввода. - Создается новый массив
a
с длинойn
иl
. - Заполняется массив
a
случайными числами. - Находится минимальный элемент в массиве
a
. - Обновляется значение минимального элемента в переменной
imin
. - Обновляется значение минимального элемента в переменной
jmin
. - Выводится на экран информация о минимальном элементе и его положении.
- Вызывается процедура
delete
с параметрамиa
,n
,l
,imin
иjmin
. - Выводится на экран обновленный массив
a
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д