Нормальные люди понимают, что после формализации информация должна быть представлена на формальном языке, таких языком может быть как математический, так и язык программирования.
// 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.
Математическая модель (а также программа; зависит от того, что понимать под этапом формализации).
В учебнике выделяют такие этапы решения задачи на компьютере:
Исходные данные (результат - словесная информационная модель)Формализация (математическая модель)Алгоритмизация (алгоритм)Программирование (программа)Отладка, тестирование (уточнение модели)Выполнение расчетов (получение результатов)Нормальные люди понимают, что после формализации информация должна быть представлена на формальном языке, таких языком может быть как математический, так и язык программирования.
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