Определить, содержит ли заданная целочисленная квадратная матрица порядка 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.

Объяснение кода листинга программы

  1. Переменная n инициализируется значением 20.
  2. Создается двумерный массив a размером n x n, который будет использоваться для хранения чисел матрицы.
  3. Выводится запрос на ввод n, который будет определять размер матрицы.
  4. Выводится сообщение с запросом для ввода элементов матрицы.
  5. Запускается цикл for, который выполняется n раз, для каждого числа a[i,j].
  6. Внутри цикла считывается число a[i,j] и проверяется условие (a[i,j]>=1) and (a[i,j]<=n2). Если это условие истинно, то увеличивается значение b[a[i,j]] и, если b[a[i,j]] равно 1, то увеличивается значение m.
  7. Проверяется условие if a[imn,jmn]>a[i,j] then ..., где imn и jmn устанавливаются в значения i и j соответственно, если текущий элемент a[i,j] больше максимального элемента a[imx,jmx].
  8. Проверяется условие if a[imx,jmx]<a[i,j] then ..., где imx и jmx устанавливаются в значения i и j соответственно, если текущий элемент a[i,j] меньше минимального элемента a[imn,jmn].
  9. По завершении цикла выводится сообщение с минимальным и максимальным элементами матрицы.
  10. Конец программы.

Оцени полезность:

9   голосов , оценка 4.333 из 5
Похожие ответы