Если в матрице повторяющиеся столбцы, то сжать ее, оставив только столбцы уникальные - 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- индексы для обхода матрицыai2- индекс для хранения количества уникальных строкf- файл для чтения данных из файлаFilein.txtd- массив для хранения уникальных столбцов