Определить, содержит ли заданная целочисленная квадратная матрица порядка n все числа от 1 до n^2 - Turbo Pascal
Формулировка задачи:
Определить, является ли заданная квадратная матрица размера n*n состоящей из целых чисел от 1 до n^2 , встречающихся по одному разу. Определить позиции минимального и максимального элементов этой матрицы.
Примечание
. Позицией элемента матрицы называется упорядоченная пара (i, j) , где i - номер строки элемента, j - номер столбца. Кто может помогите. Заранее спасибо.Решение задачи: «Определить, содержит ли заданная целочисленная квадратная матрица порядка n все числа от 1 до n^2»
textual
Листинг программы
const nm=20; var a: array [1..nm,1..nm] of Integer; b: array [1..nm] of Integer; n, n2, m, i, j, imn, jmn, imx, jmx: Integer; begin repeat Write('N [2..',nm,']: '); ReadLn(n) until n in [2..nm]; WriteLn('Элементы матрицы:'); n2:=n*n; imn:=1; jmn:=1; imx:=1; jmx:=1; for i:=1 to n do for j:=1 to n do begin Read(a[i,j]); if (a[i,j]>=1) and (a[i,j]<=n2) then begin Inc(b[a[i,j]]); if b[a[i,j]]=1 then Inc(m); end; if a[imn,jmn]>a[i,j] then begin imn:=i; jmn:=j; end; if a[imx,jmx]<a[i,j] then begin imx:=i; jmx:=j; end; end; WriteLn('Матрица из чисел 1..',n2,' без дублей: ',n2=m); WriteLn('min: a[',imn,',',jmn,']; max: a[',imx,',',jmx,']'); end.
Объяснение кода листинга программы
- Переменная
n
инициализируется значением 20. - Создается двумерный массив
a
размеромn x n
, который будет использоваться для хранения чисел матрицы. - Выводится запрос на ввод
n
, который будет определять размер матрицы. - Выводится сообщение с запросом для ввода элементов матрицы.
- Запускается цикл
for
, который выполняетсяn
раз, для каждого числаa[i,j]
. - Внутри цикла считывается число
a[i,j]
и проверяется условие(a[i,j]>=1) and (a[i,j]<=n2)
. Если это условие истинно, то увеличивается значениеb[a[i,j]]
и, еслиb[a[i,j]]
равно 1, то увеличивается значениеm
. - Проверяется условие
if a[imn,jmn]>a[i,j] then ...
, гдеimn
иjmn
устанавливаются в значенияi
иj
соответственно, если текущий элементa[i,j]
больше максимального элементаa[imx,jmx]
. - Проверяется условие
if a[imx,jmx]<a[i,j] then ...
, гдеimx
иjmx
устанавливаются в значенияi
иj
соответственно, если текущий элементa[i,j]
меньше минимального элементаa[imn,jmn]
. - По завершении цикла выводится сообщение с минимальным и максимальным элементами матрицы.
- Конец программы.