Двумерные массивы - сортировка и произведение - Turbo Pascal

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

Помогите, пожалуйста, решить задачу:
Дан массив m * n. Расположить элементы каждого столбца в порядке возрастания. Найти произведение наименьших элементов каждого столбца массива.
Учусь на заочке. Спрашивал, можно ли на чем-то нормальном (Java, C#) решать задачи, но препод упёрся в паскале. Сижу решаю теперь на языке, для которого IDE хуже Sublime Text

Код к задаче: «Двумерные массивы - сортировка и произведение - Turbo Pascal»

textual
const
  m = 4; {строки}
  n = 7; {столбцы}
type
  matrix = array[1..m, 1..n] of integer;
var
  a : matrix;
  i, j : integer;
  p : longint;
  
procedure sort (var z : matrix; k : integer);
var x, y, temp : integer;
begin
  for x := 1 to m do
    for y := m downto x do
      if z[x,k] >= z[y,k] then
      begin
        temp := z[x,k];
        z[x,k] := z[y,k];
        z[y,k] := temp
      end
end;
 
function min (z : matrix; k : integer) : integer;
var x, temp : integer;
begin
  temp := maxInt;
  for x := 1 to m do
    if z[x,k] <= temp then temp := z[x,k];
  min := temp
end;
 
begin
  p := 1;
  {заполняем и выводим}
  writeln('матрица:');
  randomize;
  for i := 1 to m do
  begin
    for j := 1 to n do
    begin
      a[i,j] := random(20) - 10;
      write(a[i,j]:4)
    end;
    writeln
  end;
  {сортируем считаем произведение}
  for j := 1 to n do
  begin
    sort(a, j);
    p := p * min(a, j)
  end;
  {выводим новую матрицу}
  writeln('новая матрица:');
  for i := 1 to m do
  begin
    for j := 1 to n do write(a[i,j]:4);
    writeln
  end;
  writeln('произведение минимумов столбцов: ', p);
  readln
end.
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

8   голосов, оценка 4.250 из 5


СДЕЛАЙТЕ РЕПОСТ