Удалить из массива строку и столбец, на пересечении которых находится минимальный элемент - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Помогите исправить ошибку . Задание :Сформировать двумерный массив. Удалить из него строку и столбец, на пересечении которых находится минимальный элемент.
Листинг программы
  1. var a:array[,]of integer;
  2. n,i,j,imin,jmin,l:byte;
  3. procedure delete (var a:array [,] of integer; n,l: integer);
  4. begin
  5. for var i:=imin to n-2 do
  6. for var j:=0 to n-1 do
  7. a[i,j]:=a[i+1,j];
  8. for var j:=jmin to l-2 do
  9. for var i:=0 to n-2 do
  10. a[i,j]:=a[i,j+1];
  11. dec(n,l);
  12.  
  13. end;
  14. begin
  15. write('n,l='); readln(n,l);
  16. Setlength(a,n,l);
  17. imin:=0; jmin:=0;
  18. for i:=0 to n-1 do
  19. begin
  20. for j:=0 to l-1 do
  21. begin
  22. a[i,j]:=-50+random(101);
  23. write(a[i,j]:4);
  24. if a[i,j]<a[imin,jmin] then
  25. begin
  26. imin:=i; jmin:=j;
  27. end;
  28. end;
  29. writeln;
  30. end;
  31. writeln('мин эл=',a[imin,jmin]);
  32.  
  33. delete(a,imin,jmin);
  34. setlength(a,(n-1),(l-1));
  35. writeln;
  36. writeln(a);
  37. for i:=0 to n-1 do
  38. begin
  39. for j:=0 to l-1 do
  40. write(a[i,j]:4);
  41. writeln;
  42. end;
  43. end.

Решение задачи: «Удалить из массива строку и столбец, на пересечении которых находится минимальный элемент»

textual
Листинг программы
  1. type mtr=array[,]of integer;
  2. procedure delete (var a:mtr; var n,l,imin,jmin: byte);
  3. begin
  4. if imin<n-1 then
  5. for  var i:=imin to n-2 do
  6. for var j:=0 to l-1 do
  7. a[i,j]:=a[i+1,j];
  8. dec(n);
  9. if jmin<l-1 then
  10. for var j:=jmin to l-2 do
  11. for var i:=0 to n-1 do
  12. a[i,j]:=a[i,j+1];
  13. dec(l);
  14. end;
  15. var a:mtr;
  16.     n,l,i,j,imin,jmin:byte;  
  17. begin
  18. write('n,l='); readln(n,l);
  19. Setlength(a,n,l);
  20. imin:=0;
  21. jmin:=0;
  22. for i:=0 to n-1 do
  23.  begin
  24.    for j:=0 to l-1 do
  25.     begin
  26.      a[i,j]:=-50+random(101);
  27.      write(a[i,j]:4);
  28.      if a[i,j]<a[imin,jmin] then
  29.       begin
  30.        imin:=i;
  31.        jmin:=j;
  32.       end;
  33.     end;
  34.    writeln;
  35.   end;
  36. writeln;  
  37. writeln('мин эл=',a[imin,jmin],' строка=',imin+1,' столбец=',jmin+1);
  38. delete(a,n,l,imin,jmin);
  39. writeln;
  40. setlength(a,n,l);
  41. for i:=0 to n-1 do
  42.  begin
  43.   for j:=0 to l-1 do
  44.   write(a[i,j]:4);
  45.   writeln;
  46.  end;
  47. end.

Объяснение кода листинга программы

  1. Создается тип данных mtr, который представляет собой двумерный массив целых чисел.
  2. Создается процедура delete, которая принимает в качестве параметров массив a, индексы начала и конца пересечения, а также минимальный элемент.
  3. В начале процедуры проверяется, находится ли минимальный элемент вне пересечения. Если это так, то он перемещается внутрь пересечения.
  4. Затем происходит итерация по массиву a для обновления элементов. Если текущий элемент меньше минимального, то он заменяется на следующий элемент. Это продолжается до тех пор, пока не будет достигнут конец пересечения.
  5. После завершения итерации обновленные элементы сохраняются в новом массиве.
  6. Создается переменная a типа mtr.
  7. Читаются значения n, l из стандартного ввода.
  8. Создается новый массив a с длиной n и l.
  9. Заполняется массив a случайными числами.
  10. Находится минимальный элемент в массиве a.
  11. Обновляется значение минимального элемента в переменной imin.
  12. Обновляется значение минимального элемента в переменной jmin.
  13. Выводится на экран информация о минимальном элементе и его положении.
  14. Вызывается процедура delete с параметрами a, n, l, imin и jmin.
  15. Выводится на экран обновленный массив a.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы