{ Предположим, что НЕвозрастание - это любой порядок элементов, кроме возрастания } program NonAscendingOrderColumn; uses Crt, SysUtils; var NumberOfRows : Integer; NumberOfColumns : Integer; { Учтите, что некоторые компиляторы паскаля, вроде Turbo Pascal, не поддерживают динамическую длинну массивов! Решение дано, из рассчёта, что вы используйте современный компилятор, вроде fpc } Matrix : array of array of Integer; ParticularColumn : 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 ColumnsCounter := 0 to NumberOfColumns - 1 do begin for RowsCounter := 0 to NumberOfRows - 2 do begin if Matrix[RowsCounter][ColumnsCounter] < Matrix[RowsCounter + 1][ColumnsCounter] then begin ErrorIndex := RowsCounter + 1; break; end; end; if ErrorIndex > -1 then begin writeln('Колонка ', ColumnsCounter + 1 , ' - по возрастанию! Индекс: ', ErrorIndex + 1); end; ErrorIndex := -1; end; end.