for j:=1 to m do i:=1; // < ---- ТУТ Do Begin видимо нужно :) while (i<=n-1) and a[i]>a[succ(i)] do inc(i); end;writeln;
uses crt;
const
n = 2; m = 3;
type
TMx = array [1..n, 1..m] of integer;
procedure ReadMatrix(var mx: TMx); var i, j: Integer; begin for i := 1 to n do for j := 1 to m do begin write('mx[', i, ',', j, ']='); readln(mx[i, j]); end; end;
procedure PrintMatrix(const mx: TMx); var i, j: Integer; begin for i := 1 to n do begin writeln; for j := 1 to m do write(mx[i, j]:2); end; end;
function CheckRow(const mx: TMx; row: Integer): Boolean; var i: Integer; begin i := 1; while (i < m) and (mx[row, i] <= mx[row, i + 1]) do inc(i); CheckRow := (i = m); end;
function CheckMatrix(const mx: TMx): Boolean; var i: Integer; begin i := 1; while (i <= n) and (CheckRow(mx, i)) do inc(i); CheckMatrix := (i > n); end;
var
mx: TMx;
begin
clrscr;
ReadMatrix(mx);
PrintMatrix(mx);
writeln;
Writeln(CheckMatrix(mx));
readln;
end.
мисс_граффити
12.10.2006 10:50
Я думаю, ошибку выдает из-за отсутствия скобочек при сравнении эл-тов массива.
klem4
12.10.2006 10:55
Цитата
Я думаю, ошибку выдает из-за отсутствия скобочек при сравнении эл-тов массива.
Anastacia Adesso, + Ты обращаешься к эелементу матрица как к элнементу массива (a[i] вместо a[i, j]), да и циклы по i и j у тебя помоему перепутаны местами в проверке, надо идти по строками (внешний цикл)
procedure printmatrix(a :matrix; n,m: integer); var i,j: integer; begin for i:=1 to n do for j:=1 to m do begin { <--- Внимание !!! Цикл по J } write(a[i,j]:6); if j=m then begin writeln; for j:=1 to m do begin { <--- И вложенный в него - тоже по J ??? } end; writeln end end end;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.