Очень даже элементарно. Только тут надо знать структуру файла в котором храниться матрица.
Допустим структура текстового файла такая:
в первых двух строках хранятся размеры X,Y матрицы, потом идет X*Y строк с данными. Код тогда будет примерно таким:
Код:
program MatrixDemo;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
TZeroPoint = record
i,j:integer;
end;
var
tf:TextFile;
MaxX,MaxY:integer;
i,j:integer;
m,n:integer;
z:integer;
data:array of array of integer;
zeropoints:array of TZeroPoint;
begin
AssignFile(tf,'F:\trash\matrix.txt');
Reset(tf);
ReadLn(tf,MaxX);
ReadLn(tf,MaxY);
SetLength(data,MaxX);
for i:=Low(data) to High(data) do
SetLength(data[i],MaxY);
//Читаем матрицу
for i:=Low(data) to High(data) do
for j:=Low(data[i]) to High(data[i]) do
begin
Readln(tf,z);
data[i,j]:=z;
if data[i,j]=0 then //Сразу запоминаем позиции ноликов
begin
SetLength(zeropoints,Length(zeropoints)+1);
zeropoints[High(zeropoints)].i:=i;
zeropoints[High(zeropoints)].j:=j;
end;
end;
//Чистим матрицу по позициям
for i:=low(zeropoints) to High(zeropoints) do
begin
for m:=Low(data[zeropoints[i].j]) to High(data[zeropoints[i].j]) do
data[zeropoints[i].j,m]:=0;
for n:=Low(data) to High(data) do
data[n,zeropoints[i].i]:=0;
end;
CloseFile(tf);
AssignFile(tf,'F:\trash\matrix2.txt');
ReWrite(tf);
WriteLn(tf,MaxX);
WriteLn(tf,MaxY);
for i:=Low(data) to High(data) do
for j:=Low(data[i]) to High(data[i]) do
WriteLn(tf,data[i,j]);
CloseFile(tf);
ReadLn;
end.
А теперь о насущном
Подобные просьбы следует помещать в раздел
"Работа", здесь не общество альтруистов. Впредь я буду просто удалять такие темы.