Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program MezclaArchivos;
- type
- tArchivo = text;
- tComponente = string;
- procedure LeerElemDetectandoFin(var arch:tArchivo;var comp: tComponente;var finArch: boolean);
- begin
- finArch := EoF(arch);
- if not finArch then
- ReadLn(arch,comp);
- end;
- procedure PasarElemDetectandoFin(var archOrigen,archDestino: tArchivo;var comp:tComponente;var finArchOrigen:boolean);
- begin
- WriteLn(archDestino,comp);
- LeerElemDetectandoFin(archOrigen,comp,finArchOrigen);
- end;
- procedure Mezcla(var aux1, aux2, arch: tArchivo);
- var
- c1,c2: tComponente;
- finArch1,finArch2: boolean;
- begin
- Reset(aux1);
- Reset(aux2);
- ReWrite(arch);
- LeerElemDetectandoFin(aux1, c1, finArch1);
- LeerElemDetectandoFin(aux2, c2, finArch2);
- while (not finArch1) and (not finArch2) do
- if c1 < c2 then
- PasarElemDetectandoFin(aux1, arch, c1, finArch1)
- else
- PasarElemDetectandoFin(aux2, arch, c2, finArch2);
- while not finArch1 do
- PasarElemDetectandoFin(aux1, arch, c1, finArch1);
- while not finArch2 do
- PasarElemDetectandoFin(aux2, arch, c2, finArch2);
- Close(arch);
- Close(aux1);
- Close(aux2)
- end;
- procedure Division(var arch, aux1, aux2: tArchivo;var esVacio2:boolean);
- var
- valorActual,valorAnterior: tComponente;
- cambio:boolean;
- begin
- Reset(arch);
- ReWrite(aux1);
- ReWrite(aux2);
- cambio := True;
- esVacio2 := True;
- if not EoF(arch) then begin
- ReadLn(arch,valorActual);
- WriteLn(aux1,valorActual);
- valorAnterior := valorActual;
- end;
- while not EoF(arch) do begin
- ReadLn(arch,valorActual);
- if valorAnterior > valorActual then
- cambio := not cambio;
- if cambio then
- WriteLn(aux1,valorActual)
- else begin
- WriteLn(aux2,valorActual);
- esVacio2 := False;
- end;
- valorAnterior := valorActual;
- end;
- Close(arch);
- Close(aux1);
- Close(aux2);
- end;
- var arch,aux1,aux2: tArchivo;
- esVacio2:boolean;
- begin
- Assign(arch,ParamStr(1));
- Assign(aux1,ParamStr(2));
- Assign(aux2,ParamStr(3));
- repeat
- Division(arch,aux1,aux2,esVacio2);
- Mezcla(aux1,aux2,arch);
- until esVacio2;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement