{ Предположим, что НЕубывание - это любой порядок элементов, кроме убывания } program NonDescendingOrderRow; uses Crt, SysUtils; var NumberOfRows : Integer; NumberOfColumns : Integer; { Учтите, что некоторые компиляторы паскаля, вроде Turbo Pascal, не поддерживают динамическую длинну массивов! Решение дано, из рассчёта, что вы используйте современный компилятор, вроде fpc } Matrix : array of array of Integer; UserAnswer : Char; UserProvidedInteger : Integer; RowsCounter : Integer; ColumnsCounter : Integer; ErrorIndex : Integer = -1; begin clrscr; write('Введите кол-во строк в матрице: '); readln(NumberOfRows); write('Введите кол-во столбцов в матрице: '); readln(NumberOfColumns); { При использовании setLength(), индекс начального элемента массива ВСЕГДА равен 0, таким образом, все проходы по массиву: от 0 до длинны масива - 1 } setLength(Matrix, NumberOfRows, NumberOfColumns); write('Ввести элементы матрицы вручную? (y/n): '); readln(UserAnswer); { Если пользователь намерен ввести элементы матрицы вручную, то так тому и быть, инчае генериуруем случайную матрицу, со значениями в промежутке 0..99 } randomize(); for RowsCounter := 0 to NumberOfRows - 1 do begin for ColumnsCounter := 0 to NumberOfColumns - 1 do begin if (UserAnswer = 'y') or (UserAnswer = 'Y') then begin clrscr; write(RowsCounter + 1, ' строка, ', ColumnsCounter + 1, ' столбец: '); readln(UserProvidedInteger); Matrix[RowsCounter][ColumnsCounter] := UserProvidedInteger; end else begin Matrix[RowsCounter][ColumnsCounter] := random(100); end; end; end; clrscr; { Показываем получившуюся матрицу } writeln('Матрица из ', NumberOfRows, ' строк и ', NumberOfColumns, ' столбцов: ' ); for RowsCounter := 0 to NumberOfRows - 1 do begin for ColumnsCounter := 0 to NumberOfColumns - 1 do begin write(format('%5d',[Matrix[RowsCounter][ColumnsCounter]])); end; writeln(); end; { Проверяем строки матрицы, на нарушение НЕубывания, т.е. на возрастание, или на не извменение } for RowsCounter := 0 to NumberOfRows - 1 do begin for ColumnsCounter := 0 to NumberOfColumns - 2 do begin if Matrix[RowsCounter][ColumnsCounter] > Matrix[RowsCounter][ColumnsCounter + 1] then begin ErrorIndex := ColumnsCounter + 1; break; end; end; if ErrorIndex > -1 then begin writeln('Строка ', RowsCounter + 1 , ' - по убыванию! Индекс: ', ErrorIndex + 1); end; ErrorIndex := -1; end; end.