All pastes #897806 Raw Edit

Stuff

public text v1 · immutable
·published 2008-02-09 21:18 UTC
rendered paste body
program directoryes;
type stringvektor = Array[1..100] of String;
var f,g:Text;
C:Char;
filename,path,foldername,fname:String;
n,i:Integer;
pathvektor:stringvektor;
p:Integer;{the index of the pathvektor}
zjv:Array[1..1600] of 0..1; {zarojeles vektor}
helye,zny,zz:Integer; { a zarojeles (nyiltak illetve zartak) vektor szamlaloja}
mch:set of Char;
fileset:set of Char;
dir:Boolean;
V:Array[1..1601] of Char;


 procedure rendez(var v:Stringvektor);
 var rendezett:boolean;
     i:Integer;
     s:String;
     aux:String;
 begin
  repeat
   rendezett:=true;
  for i:=1 to p-1 do
   begin
    {s:=v[i];
    for j:=1 to length(s) do
     begin

     end;}
     if v[i]>v[i+1] then
      begin
       aux:=v[i];
       v[i]:=v[i+1];
       v[i+1]:=aux;
       rendezett:=false;
      end;
   end
  until rendezett=true;
 end;

begin
 Assign(f,'dir.in');
 Assign(g,'dir.out');
 Reset(f);
 ReWrite(g);
 i:=0;
 while not eof(f) do
  begin
   Read(f,C);
   Inc(i);
   v[i]:=C;
  end;
 n:=i;

 {lets get procesing}
 {init}
 foldername:='';
 filename:='';
 mch:=['A'..'Z'];
 fileset:=['a'..'z'];
 zny:=0;
 zz:=0;
 dir:=false;
 p:=0;
 {kezdetbol a nyitott zarojelek szama egyenlo a zart zarojelek szamaval vagyis 0}

 {this is the fun part:}
 for i:=1 to n do
  begin
   C:=v[i];
   if C in mch then
    begin
     foldername:=foldername+C;
    end;
   if C in ['('] then
    begin
     path:=path+foldername+'\';
     fname:=foldername;
     foldername:='';
     Inc(zny);
     zjv[zny]:=1;
    end;
   if C in [')'] then
    begin
     Inc(zz);
     zjv[zz]:=0;
      if v[i-1] <> '(' then
       begin
        {ignore emphty folders}
        if filename<>'' then
         begin
          Inc(p);
          pathvektor[p]:=path+filename;
          filename:='';
         end;

        helye:=pos(fname,path);
        Delete(path,helye,length(fname)+1);
       end
        else
         begin
          helye:=pos(fname,path);
          Delete(path,helye,length(fname)+1);
         end;
    end;
   if C in fileset then
    begin
      filename:=filename+C;
{      pathvektor[p]:=pathvektor[p]+path+C;}
    end;
   if C in [','] then
    begin
     if filename<>'' then
      begin
       Inc(p);
       pathvektor[p]:=path+filename;
       filename:='';
      end;
    end;
   if C in ['0'..'9'] then
    begin
     if v[i-1] in mch then
      begin
       foldername:=foldername+C;
      end;
     if v[i-1] in fileset then
      begin
       filename:=filename+C;
{       pathvektor[p]:=pathvektor[p]+path+C;}
      end;
    end;
  end;

 {Ok lets pray that this worked}
 {now lets sort it into alphabetical order}
 rendez(pathvektor);
 {lets write this out}
 WriteLn(g,p);
 for i:=1 to p do
  begin
   WriteLn(g,pathvektor[i]);
  end;

 Close(f);
 Close(g);
end.