Если в матрице повторяющиеся столбцы, то сжать ее, оставив только столбцы уникальные - PascalABC.NET
Формулировка задачи:
Дана прямоугольная матрица,если в матрице есть столбики,которые повторяются,то нужно сжать матрицу так,чтоб были только разные столбики.
Решение задачи: «Если в матрице повторяющиеся столбцы, то сжать ее, оставив только столбцы уникальные»
textual
Листинг программы
const n = 10; const m = 5; var a, d: array[1..n, 1..m] of integer; b: array[1..n, 1..m]of char; c: array[1..n]of string; k: array[1..n]of boolean; i, j, i2: integer; f: text; begin assign(f, 'Filein.txt'); reset(f); for j := 1 to m do begin for i := 1 to n do //перевернуто читаем (j - столбец, i - строка) read(f, a[i, j]); readln(f); end; close(f); for i := 1 to n do for j := 1 to m do b[i, j] := chr(a[i, j]); for i := 1 to n do for j := 1 to m do //переводим в строку c[i] := c[i] + b[i, j]; for i := 1 to n do k[i] := true; for i := 1 to n do for j := i to n do if (c[i] = c[j]) and (i <> j) then k[j] := false; //находим повторяющиеся строки i2 := 0; for i := 1 to n do if k[i] = true then begin i2 := i2 + 1; for j := 1 to m do //если строки не повторяются, то перекидываем их столбцы в другой массив d[i2, j] := a[i, j]; end; for j := 1 to m do begin for i := 1 to i2 do //выводим этот массив перевернуто на экран write(d[i, j], ' ');writeln; end; end.
Объяснение кода листинга программы
В этом коде представлена реализация задачи на языке PascalABC.Net. Вот список действий, выполняемых в коде:
- Задание размеров матрицы
a
иb
, а также массива строкc
и логического массиваk
. - Чтение данных из файла
Filein.txt
в массивa
. - Перевод чисел в символы и запись их в массив
b
. - Объединение символов из массива
b
в строки и запись их в массивc
. - Поиск повторяющихся строк в массиве
c
и запись результата в массивk
. - Создание нового массива
d
для хранения уникальных столбцов. - Перенос уникальных столбцов из массива
a
в массивd
. - Вывод уникальных столбцов на экран.
Вот список переменных и их значений:
n
- размерность первой размерности матрицыa
(10)m
- размерность второй размерности матрицыa
(5)a
- матрица для чтения и обработки данныхb
- массив для хранения символов, полученных из чиселc
- массив для хранения уникальных строкk
- массив для хранения булевых значений, указывающих на уникальность строкi
,j
- индексы для обхода матрицыa
i2
- индекс для хранения количества уникальных строкf
- файл для чтения данных из файлаFilein.txt
d
- массив для хранения уникальных столбцов
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д