@Mehelborn

Двумерный массив. Паскаль. Где ошибка?

Здравствуйте. Необходимо в матрице 2x6 найти максимальные числа в каждом столбце и среди найденных чисел найти минимальное число. Максимальные числа я нашла, но не получается записать их в массив. Минимум необходимо найти в главном теле программы. Не могу увидеть ошибку. С паскалем абсолютно не знакома.
uses crt;
const X = 2;
const Y = 6;
Type matrix = array[1..X, 1..Y] of integer;
Type arr = array[1..Y] of integer;
var D: matrix; p, t: integer;
var g: arr; k, min: integer;

procedure print_mtx(const a: matrix);
var i, j: integer; begin
    for i:= 1 to X do begin
        for j:= 1 to Y do write(a[i, j]:5);
        writeln;
    end;
end;

procedure print_arr(const a: arr);
var i: integer; begin
    for i:= 1 to Y do write(a[i]:5);
end;

function trans(var a: matrix; b: arr): integer;
var i, j: integer; begin
    i:= 1;
    for j:= 1 to Y do begin
        if(a[i,j] >= a[i+1,j]) then begin
             b[j]:= a[i,j];
             write(a[i,j]:5);
        end
        else begin
             b[j]:= a[i+1,j];
             write(a[i+1,j]:5);
        end;
    end;
end;

begin
     clrscr;
     randomize;
     for p:= 1 to X do
         for t:= 1 to Y do D[p,t]:= random(50);
     print_mtx(D);
     writeln;
     trans(D, g);
     writeln;
     writeln;
     print_arr(g);
     min:= g[1];
     for k:= 1 to Y do if(g[k] <= min) then min:= g[k];
     writeln;
     writeln;
     write(min:5);
end.

5ee48fd708197734574583.png
  • Вопрос задан
  • 113 просмотров
Решения вопроса 1
like-a-boss
@like-a-boss
Признайся,тебяТянетНаКодМужика,ты—программный гей
Я тоже абсолютно не секу в паскале, последний опыт у меня с ним был 13 лет назад. Но ваша проблема была в том, что вы не изменяли массив g, то есть ничего не записывали в него. Следовательно там были одни нули.
Я поправил, вроде правильно работает теперь:

uses crt;
const X = 2;
const Y = 6;
Type matrix = array[1..X, 1..Y] of integer;
Type arr = array[1..Y] of integer;
var D: matrix; p, t: integer;
var g: arr; k, min: integer;

procedure print_mtx(const a: matrix);
var i, j: integer; begin
    for i:= 1 to X do begin
        for j:= 1 to Y do write(a[i, j]:5);
        writeln;
    end;
end;

procedure print_arr(const a: arr);
var i: integer;
begin
    for i:= 1 to Y do
        write(a[i]:5);
end;

function trans(var a: matrix): integer;
var i, j: integer; begin
    i:= 1;
    for j:= 1 to Y do begin
        if(a[i,j] >= a[i+1,j]) then begin
             g[j]:= a[i,j];
             write(a[i,j]:5);
        end
        else begin
             g[j]:= a[i+1,j];
             write(a[i+1,j]:5);
        end;
    end;
end;

begin
     clrscr;
     randomize;
     for p:= 1 to X do
         for t:= 1 to Y do D[p,t]:= random(50);
     print_mtx(D);
     writeln;
     trans(D);
     writeln;
     writeln;
     print_arr(g);
     min:= g[1];
     for k:= 1 to Y do if(g[k] < min) then min:= g[k];
     writeln;
     writeln;
     write(min:5);
end.


Вызов print_arr(g); можно убрать, чтобы не выводить такую же строку, как выводит функция trans
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы