Определить количество классов эквивалентных строк данной прямоугольной матрицы - Pascal ABC
Формулировка задачи:
Определить количество классов эквивалентных строк данной прямоугольной матрицы. Строки считать эквивалентными, если равны суммы их элементов.
Решение задачи: «Определить количество классов эквивалентных строк данной прямоугольной матрицы»
textual
Листинг программы
const nmax=20; var a: array[1..nmax,1..nmax] of integer; b: array[1..nmax] of integer; i,j,k,n,m: byte; sum,tmp: integer; begin write('Введите размеры массива n, m: '); readln(n,m); writeln('Исходный массив:'); for i:=1 to n do begin for j:=1 to m do begin a[i,j]:=random(3);//маленький диапазон взят для наглядности write(a[i,j]:3); end; writeln; end; writeln; for i:=1 to n do begin sum:=0; for j:=1 to m do sum:=sum+a[i,j]; b[i]:=sum; end; for i:=2 to n do for j:=n downto i do if b[j-1]>b[j] then begin tmp:=b[j-1]; b[j-1]:=b[j]; b[j]:=tmp; end; writeln('Упорядоченные суммы строк:'); for i:=1 to n do write(b[i],' '); writeln; k:=1; for i:=2 to n do if b[i-1]<>b[i] then inc(k); writeln(k,' классов эквивалентных строк в массиве'); end.
Объяснение кода листинга программы
- Объявлены переменные: nmax, a, b, i, j, k, n, m, sum, tmp (строки 1-10)
- Введен размер матрицы n и m (строка 11)
- Выведена исходная матрица (строки 12-17)
- Просуммированы элементы каждой строки и сохранены в массиве b (строки 18-23)
- Отсортированы элементы массива b в порядке возрастания (строки 24-27)
- Выведены отсортированные суммы строк (строка 28)
- Инициализируется переменная k=1 (строка 29)
- Проверяется различие между соседними элементами массива b, и при наличии различия увеличивается значение переменной k (строки 30-32)
- Выводится значение переменной k - количество классов эквивалентных строк (строка 33)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д