Если в матрице повторяющиеся столбцы, то сжать ее, оставив только столбцы уникальные - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Дана прямоугольная матрица,если в матрице есть столбики,которые повторяются,то нужно сжать матрицу так,чтоб были только разные столбики.

Решение задачи: «Если в матрице повторяющиеся столбцы, то сжать ее, оставив только столбцы уникальные»

textual
Листинг программы
  1. const
  2.   n = 10;
  3.  
  4. const
  5.   m = 5;
  6.  
  7. var
  8.   a, d: array[1..n, 1..m] of integer;
  9.   b: array[1..n, 1..m]of char;
  10.   c: array[1..n]of string;
  11.   k: array[1..n]of boolean;
  12.   i, j, i2: integer;
  13.   f: text;
  14.  
  15. begin
  16.   assign(f, 'Filein.txt');
  17.   reset(f);
  18.   for j := 1 to m do
  19.   begin
  20.     for i := 1 to n do                      //перевернуто читаем (j - столбец, i - строка)
  21.       read(f, a[i, j]);
  22.       readln(f);
  23.   end;
  24.   close(f);
  25.  
  26.  
  27.   for i := 1 to n do
  28.     for j := 1 to m do
  29.       b[i, j] := chr(a[i, j]);
  30.  
  31.   for i := 1 to n do
  32.     for j := 1 to m do          //переводим в строку
  33.       c[i] := c[i] + b[i, j];
  34.      
  35.  
  36.   for i := 1 to n do k[i] := true;
  37.  
  38.   for i := 1 to n do
  39.     for j := i to n do
  40.       if (c[i] = c[j]) and (i <> j) then k[j] := false;      //находим повторяющиеся строки
  41.  
  42.   i2 := 0;
  43.   for i := 1 to n do
  44.     if k[i] = true then
  45.     begin
  46.       i2 := i2 + 1;
  47.       for j := 1 to m do         //если строки не повторяются, то перекидываем их столбцы в другой массив
  48.         d[i2, j] := a[i, j];
  49.     end;
  50.  
  51.   for j := 1 to m do
  52.   begin
  53.     for i := 1 to i2 do            //выводим этот массив перевернуто на экран
  54.       write(d[i, j], ' ');writeln;
  55.   end;
  56. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы