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

  1. Задание размеров матрицы a и b, а также массива строк c и логического массива k.
  2. Чтение данных из файла Filein.txt в массив a.
  3. Перевод чисел в символы и запись их в массив b.
  4. Объединение символов из массива b в строки и запись их в массив c.
  5. Поиск повторяющихся строк в массиве c и запись результата в массив k.
  6. Создание нового массива d для хранения уникальных столбцов.
  7. Перенос уникальных столбцов из массива a в массив d.
  8. Вывод уникальных столбцов на экран. Вот список переменных и их значений:
    • n - размерность первой размерности матрицы a (10)
    • m - размерность второй размерности матрицы a (5)
    • a - матрица для чтения и обработки данных
    • b - массив для хранения символов, полученных из чисел
    • c - массив для хранения уникальных строк
    • k - массив для хранения булевых значений, указывающих на уникальность строк
    • i, j - индексы для обхода матрицы a
    • i2 - индекс для хранения количества уникальных строк
    • f - файл для чтения данных из файла Filein.txt
    • d - массив для хранения уникальных столбцов

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.2 из 5
Похожие ответы