Показать сообщение отдельно
  #5  
Старый 13.05.2009, 05:06
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Очень даже элементарно. Только тут надо знать структуру файла в котором храниться матрица.
Допустим структура текстового файла такая:
в первых двух строках хранятся размеры 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.

А теперь о насущном
Подобные просьбы следует помещать в раздел "Работа", здесь не общество альтруистов. Впредь я буду просто удалять такие темы.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием