Создание двумерного массива, все элементы которого различны - Turbo Pascal
Формулировка задачи:
Задана целочисленная матрица А, все элементы которой различны.
Помогите. Не могу сообразить как сделать так, чтобы элементы не повторялись.
Решение задачи: «Создание двумерного массива, все элементы которого различны»
textual
Листинг программы
const max=10;
var a:array[1..max,1..max] of integer;
b:array[1..max*max+1] of integer;
n,m,k,i,j,p,x:integer;
f:boolean;
begin
clrscr;
randomize;
repeat
write('Количество строк до ',max,' m=');
readln(m);
until m in [1..max];
repeat
write('Количество столбцов до ',max,' n=');
readln(n);
until n in [1..max];
b[1]:=-2*max*max+random(4*max*max+1);
k:=1;
for i:=1 to m do
for j:=1 to n do
begin
repeat
x:=-2*max*max+random(4*max*max+1);
f:=true;
p:=1;
while(p<=k)and f do
if x=b[p] then f:=false
else inc(p);
until f;
a[i,j]:=x;
inc(k);
b[k]:=x;
end;
for i:=1 to m do
begin
for j:=1 to n do
write(a[i,j]:4);
writeln;
end;
readln
end.
Объяснение кода листинга программы
Данный код на Turbo Pascal создает двумерный массив, все элементы которого различны.
- В начале кода объявляются необходимые переменные: максимальное значение для строк и столбцов (макс), двумерный массив a, одномерный массив b, переменные n, m, k, i, j, p и x, а также логическое значение f.
- Затем происходит инициализация массива a случайными значениями.
- Далее идет цикл, который повторяется столько раз, сколько строк и столбцов в массиве. Внутри цикла вычисляется индекс текущего элемента массива a и b, а также переменная p, которая отслеживает текущий элемент в цикле.
- Пока значение переменной p меньше или равно k и значение переменной f равно true, происходит проверка: если текущий элемент в массиве a равен значению b[p], то значение переменной f устанавливается в false, иначе значение переменной p увеличивается на 1.
- После того как значение переменной f становится false, значение переменной p увеличивается на 1.
- После завершения внутреннего цикла происходит установка значения текущего элемента массива a в значение x.
- Затем происходит повторное вычисление индекса текущего элемента массива a и b, и значение переменной p снова сбрасывается на 1.
- После окончания внешнего цикла выводится содержимое каждой строки массива a.
- В конце кода выводится сообщение с количеством строк и столбцов, а также сгенерированным значением x.