В двоичной матрице размером 10х10 найти совпадающие строки. Матрицу выводить из файла.

0 голосов
168 просмотров

В двоичной матрице размером 10х10 найти совпадающие строки. Матрицу выводить из файла.


Информатика (105 баллов) | 168 просмотров
0

в файле матрица введена вручную, в программе нужно вывести эту матрицу на экран, а также найти и вывести на экран совпадающие строки

0

А почему матрица названа двоичной?

0

такое условие учебника)

0

Если она двоичная, то должна 1 и 0 содержать...

0

в произвольном порядке? спасибо за замечание)

0

тогда пусть такая матрица будет

0

1 0 1 0 1 0 1 0 1 01 1 0 1 0 1 0 1 0 10 0 1 0 1 0 1 0 1 01 0 1 0 1 0 1 0 1 01 1 0 1 0 1 0 1 0 00 0 1 0 1 0 1 0 1 10 1 0 1 0 1 0 1 0 11 1 0 1 0 1 0 1 0 10 0 1 0 1 0 1 0 1 00 1 0 1 0 1 0 1 0 1

0

А тогда, самое смешное, что для данной задачи надо забыть, что это матрица и считать информацию массивом строк фиксированной длины. После чего задача сводится к нахождению одинаковых строк.

0

А для этого мы их сортируем и смотрим соседние значения.

0

можете программу написать?

Дан 1 ответ
0 голосов
Правильный ответ

// PascalABC.Net 3.0, сборка 1064
const
  n = 10;
var
  ms: array[1..n] of string;
  t: string;
  i, j: integer;
  f: Text;
begin
  { Чтение матрицы из файла }
  Assign(f, 'in.txt'); Reset(f);
  for i := 1 to n do Readln(f, ms[i]);
  Close(f);
  { Вывод матрицы на экран }
  Writeln('*** Бинарная матрица ***');
  for i := 1 to n do Writeln(ms[i]);
  { Сортировка обменом (простейшая) }
  for i := 1 to n - 1 do
    for j := 1 to n - 1 do
      if ms[j] > ms[j + 1] then
      begin t := ms[j]; ms[j] := ms[j + 1]; ms[j + 1] := t end;
  { Поиск одинаковых строк }
  Writeln('Совпадающие строки');
  j := 1; t := ms[1];
  for i := 2 to n do
  begin
    if ms[i] = t then Inc(j)
    else begin
      if j > 1 then begin Writeln(t); j := 1 end;
      t := ms[i]
    end
  end;
  if j > 1 then Writeln(t)
end.

Контрольное решение:
*** Бинарная матрица ***
1 1 0 1 0 1 0 1 0 1
0 0 1 0 1 0 1 0 1 0
1 0 1 0 1 0 1 0 1 0
1 1 0 1 0 1 0 1 0 0
0 0 1 0 1 0 1 0 1 1
0 1 0 1 0 1 0 1 0 1
1 1 0 1 0 1 0 1 0 1
0 0 1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1 0 1
Совпадающие строки
0 0 1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0 1 0
1 1 0 1 0 1 0 1 0 1

(142k баллов)