2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Алгоритм rle
Сообщение28.10.2012, 09:50 
Код:
var file_name,file_name1,k,s,file_name2,m,b,c:string;
    i,q,j,size1,size2,size3:Integer;
    t,t1,t2:TextFile;
begin

//----------------------------------
  Writeln('Введите имя исходного файла:');
  Readln(file_name);
  file_name:=file_name+'.txt';
  AssignFile(t,file_name);
  Reset(t);
  while not Eof(t)do
   begin
     read(t,s);
     Writeln(s);
     i:=1;
     k:='';
     while i < length(s) do
      begin
        j:=i;
        while (s[i] = s[j+1]) do
         inc(j);
         if (j-i = 0) or (j-i = 1) or (j-i =2) then
          begin
            k := k + s[i];
            if (s[i]='0') then k:=k+'0';
            inc(i)
          end
         else
          begin
            k:= k + inttostr(j-i+1) + s[i];
            inc(i,j-i+1)
          end;
      end;
   end;
  CloseFile(t);
//-----------------------------------
  Writeln('Введите имя заархивированного файла:');
  Readln(file_name1);
  file_name1:=file_name1+'.txt';
  AssignFile(t1,file_name1);
  rewrite(t1);
  Writeln(t1,k);
  Reset(t1);
  while not Eof(t1)do
   begin
     read(t1,c);
     Writeln(c);
     i:=1;
     b:='';
     while i <length(c) do
      begin
        j:=i;
        while c[j] in ['0'..'9'] do
          inc(j);
          if j-i > 0 then
           begin
              m:= copy(c,i,j-i);
              for j:=1 to strtoint(m) do b:= b+ c[j];
              delete(c,i,j-i+1);
           end
          else
           begin
             b:= b+ s[i];
             inc(i);
           end;
      end;
      end;
  CloseFile(t1);
  Writeln('Введите имя файла после распаковки:');
  Readln(file_name2);
  file_name2:=file_name2+'.txt';
  AssignFile(t2,file_name2);
  rewrite(t2);
  Writeln(t2,b);
  size3:=filesize(t2)
  CloseFile(t2);
  size2:=filesize(t1);
  CloseFile(t1);
//------------------------------------
  Writeln('размер исходного файла:',size1);
  Writeln('размер после архивации',size2);
  writeln('размер после распаковки',size3);
  readln
end.
помогите исправить ошибки.не выводит содержимое файла после распаковки и размеры файла.

 
 
 [ 1 сообщение ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group