Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Матрица

Автор: Anastacia Adesso 12.10.2006 14:08

Хммм я кажется тут чтото не то делаю.
Вроде надо проверить, являются ли все числа в строках матрицы в убывающей последовательности.

Процедуры работают очень хорошо..А вот в самом теле какая то фигня. Выдаёт ошибку в цикле while Прикрепленный файл  UZD3.PAS ( 1.24 килобайт ) Кол-во скачиваний: 443

Автор: klem4 12.10.2006 14:48

Код
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 14:50

Я думаю, ошибку выдает из-за отсутствия скобочек при сравнении эл-тов массива.

Автор: klem4 12.10.2006 14:55

Цитата
Я думаю, ошибку выдает из-за отсутствия скобочек при сравнении эл-тов массива.


Anastacia Adesso, + Ты обращаешься к эелементу матрица как к элнементу массива (a[i] вместо a[i, j]), да и циклы по i и j у тебя помоему перепутаны местами в проверке, надо идти по строками (внешний цикл)

Автор: Anastacia Adesso 12.10.2006 16:10

Прикрепленный файл  UZD3.PAS ( 1.48 килобайт ) Кол-во скачиваний: 433
Да да..Это я поняла что там двумерный масив..
Поставила 2 координаты, но сейчас всё ещё не компилирует никак..

Автор: volvo 12.10.2006 16:49

Цитата(Anastacia Adesso @ 12.10.2006 11:10)
сейчас всё ещё не компилирует никак..
Я бы тоже отказался ЭТО компилировать:
    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;