Если в матрице повторяющиеся столбцы, то сжать ее, оставив только столбцы уникальные - 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
- массив для хранения уникальных столбцов
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д