Найти, в какой из данных матриц больше разных элементов - 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.
Объяснение кода листинга программы
- Тип данных mtr определен как массив размером от 0 до 9 по двум измерениям, инициализированный значениями типа integer.
- Объявлена переменная n типа integer, которая будет использоваться для определения размера матриц.
- Создана процедура matrix, которая принимает в качестве аргументов матрицу a и символ c. Эта процедура выводит название матрицы и заполняет ее случайными значениями от 0 до 19.
- Определена функция razn, которая принимает матрицу a в качестве аргумента и возвращает количество уникальных элементов в этой матрице. Функция использует массив flag типа boolean для отслеживания уникальности каждого элемента.
- Объявлены две переменные a и b типа mtr, которые будут использоваться для хранения двух матриц.
- Введен размер матриц n с помощью функции readln.
- Вызвана функция matrix для заполнения первой матрицы a случайными значениями.
- Вычислено количество уникальных элементов в матрице a с помощью функции razn и сохранено в переменной ka.
- Выведена информация о количестве уникальных элементов в матрице a.
- Вызвана функция matrix для заполнения второй матрицы b случайными значениями.
- Вычислено количество уникальных элементов в матрице b с помощью функции razn и сохранено в переменной kb.
- Сравнено количество уникальных элементов в матрицах a и b, и выведено соответствующее сообщение.
- Если количество уникальных элементов в матрице a больше, чем в матрице b, выводится сообщение
Количество разных больше в матрице А
. - Если количество уникальных элементов в матрице a меньше, чем в матрице b, выводится сообщение
Количество разных больше в матрице B
. - Если количество уникальных элементов в матрице a равно количеству уникальных элементов в матрице b, выводится сообщение
Количество разных в обеих матрицах одинаковое
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д