Найти, в какой из данных матриц больше разных элементов - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

3)Даны две квадратные матрицы NxN. Найти, в какой из данных матриц больше разных элементов. Используйте массив flag типа boolean.

Решение задачи: «Найти, в какой из данных матриц больше разных элементов»

textual
Листинг программы
type mtr=array[0..9,0..9] of integer; //от 0 удобнее определять индексы в матрице
var n:integer;
//создание матриц
procedure matrix(var a:mtr;c:char);
var i,j:integer;
begin
writeln('Матрица ',c);
for i:=0 to n-1 do
 begin
  for j:=0 to n-1 do
   begin
    a[i,j]:=random(20);
    write(a[i,j]:3);
   end;
  writeln;
 end;
end;
//определение числа разных
function razn(a:mtr):integer;
var flag:array[0..99] of boolean;
    i,j,k:integer;
begin
//инициируем массив, все true
for i:=0 to n*n-1 do
flag[i]:=true;
for i:=1 to n*n-1 do //проверяем все элементы начиная со 2 на уникальность
 begin
  j:=0;
  while (j<i)and(a[j div n,j mod n]<>a[i div n,i mod n]) do inc(j);
  if j<i then flag[i]:=false;
 end;
k:=0;  //считаем количество
for i:=0 to n*n-1 do
if flag[i] then inc(k);
razn:=k;
end;
var a,b:mtr;
    ka,kb:integer;
begin
write('Введите размер матриц от 2 до 10 n=');
readln(n);
randomize;
matrix(a,'A');
ka:=razn(a);
writeln('Количество разных элементов=',ka);
matrix(b,'B');
kb:=razn(b);
writeln('Количество разных элементов=',kb);
if ka>kb then write('Количество разных больше в матрице А')
else if ka<kb then write('Количество разных больше в матрице B')
else write('Количество разных в обеих матрицах одинаковое')
end.

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

  1. Тип данных mtr определен как массив размером от 0 до 9 по двум измерениям, инициализированный значениями типа integer.
  2. Объявлена переменная n типа integer, которая будет использоваться для определения размера матриц.
  3. Создана процедура matrix, которая принимает в качестве аргументов матрицу a и символ c. Эта процедура выводит название матрицы и заполняет ее случайными значениями от 0 до 19.
  4. Определена функция razn, которая принимает матрицу a в качестве аргумента и возвращает количество уникальных элементов в этой матрице. Функция использует массив flag типа boolean для отслеживания уникальности каждого элемента.
  5. Объявлены две переменные a и b типа mtr, которые будут использоваться для хранения двух матриц.
  6. Введен размер матриц n с помощью функции readln.
  7. Вызвана функция matrix для заполнения первой матрицы a случайными значениями.
  8. Вычислено количество уникальных элементов в матрице a с помощью функции razn и сохранено в переменной ka.
  9. Выведена информация о количестве уникальных элементов в матрице a.
  10. Вызвана функция matrix для заполнения второй матрицы b случайными значениями.
  11. Вычислено количество уникальных элементов в матрице b с помощью функции razn и сохранено в переменной kb.
  12. Сравнено количество уникальных элементов в матрицах a и b, и выведено соответствующее сообщение.
  13. Если количество уникальных элементов в матрице a больше, чем в матрице b, выводится сообщение Количество разных больше в матрице А.
  14. Если количество уникальных элементов в матрице a меньше, чем в матрице b, выводится сообщение Количество разных больше в матрице B.
  15. Если количество уникальных элементов в матрице a равно количеству уникальных элементов в матрице b, выводится сообщение Количество разных в обеих матрицах одинаковое.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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