program ChangeMatrix;
const
FileIn = 'C:\Users\admin\Documents\in.txt';
FileOut = 'C:\Users\admin\Documents\out.txt';
var
fin, fout: Text;
n: integer;
matrix: array of array of string;
row, col: integer;
src: string;
target: array of string;
counter: integer;
function Split(sep: string; source: string): array of string;
var
i: integer;
position: integer;
begin
result := Nil;
SetLength(result, n);
for i := 0 to n - 1 do
begin
position := Pos(sep, source);
if position > 0 then
begin
result[i] := Copy(source, 1, position - 1);
Delete(source, 1, position + Length(sep) - 1);
end
else
result[i] := source;
end;
end;
function Join(sep: string; source: array of string): string;
var
i: integer;
begin
result := source[0];
for i := 1 to n - 1 do
result := Concat(result, sep, source[i]);
end;
begin
Assign(fin, FileIn);
Reset(fin);
Assign(fout, FileOut);
Rewrite(fout);
While not EoF(fin) do
begin
// Читаем размер матрицы
Readln(fin, n);
// Обнуляем матрицу
matrix := Nil;
// Задаем размеры матрицы
SetLength(matrix, n);
for row := 0 to n - 1 do
SetLength(matrix[row], n);
// Читаем значения и заполняем матрицу
for row := 0 to n - 1 do
begin
Readln(fin, src);
target := Split(' ', src);
for col := 0 to n - 1 do
matrix[row][col] := target[col];
begin
end;
end;
// Удаляем элементы побочной диагонали
counter := 0;
row := n - 1;
col := 0;
while counter < n do
begin
matrix[row][col] := '*';
Dec(row);
Inc(col);
Inc(counter);
end;
// Записываем результат в файл
Writeln(fout, n);
for row := 0 to n - 1 do
begin
Writeln(fout, Join(' ', matrix[row]));
end;
end;
Close(fout);
Close(fin);
end.
С перезаписью исходного файла:
program ChangeMatrix;
const
DataFile = 'C:\Users\Jonathan\Documents\in.txt';
var
fdata: Text;
n: integer;
matrix: array of array of string;
change: array of string;
cursor: integer;
row, col: integer;
src: string;
target: array of string;
counter: integer;
function Split(sep: string; source: string): array of string;
var
i: integer;
position: integer;
begin
result := Nil;
SetLength(result, n);
for i := 0 to n - 1 do
begin
position := Pos(sep, source);
if position > 0 then
begin
result[i] := Copy(source, 1, position - 1);
Delete(source, 1, position + Length(sep) - 1);
end
else
result[i] := source;
end;
end;
function Join(sep: string; source: array of string): string;
var
i: integer;
begin
result := source[0];
for i := 1 to n - 1 do
result := Concat(result, sep, source[i]);
end;
begin
cursor := 0;
Assign(fdata, DataFile);
Reset(fdata);
While not EoF(fdata) do
begin
// Читаем размер матрицы
Readln(fdata, n);
// Обнуляем матрицу
matrix := Nil;
// Задаем размеры матрицы
SetLength(matrix, n);
SetLength(change, Length(change) + n + 1);
change[cursor] := IntToStr(n);
Inc(cursor);
for row := 0 to n - 1 do
SetLength(matrix[row], n);
// Читаем значения и заполняем матрицу
for row := 0 to n - 1 do
begin
Readln(fdata, src);
target := Split(' ', src);
for col := 0 to n - 1 do
matrix[row][col] := target[col];
begin
end;
end;
// Удаляем элементы побочной диагонали
counter := 0;
row := n - 1;
col := 0;
while counter < n do
begin
matrix[row][col] := '*';
change[cursor + row] := Join(' ', matrix[row]);
Dec(row);
Inc(col);
Inc(counter);
end;
Inc(cursor, n);
end;
Close(fdata);
Assign(fdata, DataFile);
Rewrite(fdata);
// Записываем результат в файл
for row := 0 to cursor - 1 do
begin
Writeln(fdata, change[row]);
end;
Close(fdata);
end.