09.05.2013 Views

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

328 Capítulo 15. <strong>Algoritmos</strong> de búsqueda y ord<strong>en</strong>ación<br />

A continuación se ha implem<strong>en</strong>tado el procedimi<strong>en</strong>to Division <strong>en</strong> <strong>Pascal</strong>:<br />

procedure Division(var arch, aux1, aux2: tArchivo;<br />

var esVacio2: boolean);<br />

{Efecto: arch se divide <strong>en</strong> dos archivos aux1 y aux2,<br />

copiando alternativam<strong>en</strong>te tramos ord<strong>en</strong>ados maximales}<br />

var<br />

valorActual, valorAnterior: tCompon<strong>en</strong>te;<br />

cambio: boolean;<br />

{conmuta la escritura <strong>en</strong> aux1 y aux2}<br />

begin<br />

Reset(arch);<br />

ReWrite (aux1);<br />

ReWrite (aux2);<br />

cambio:= True;<br />

esVacio2:= True;<br />

if not EoF(arch) th<strong>en</strong> begin<br />

Read(arch, valorActual);<br />

Write(aux1, valorActual);<br />

valorAnterior:= valorActual<br />

<strong>en</strong>d;<br />

while not EoF(arch) do begin<br />

{se buscan y copian los tramos ord<strong>en</strong>ados}<br />

Read(arch, valorActual);<br />

if valorAnterior > valorActual th<strong>en</strong><br />

cambio:= not cambio;<br />

if cambio th<strong>en</strong><br />

Write(aux1, valorActual)<br />

else begin<br />

Write(aux2, valorActual);<br />

esVacio2:= False<br />

<strong>en</strong>d;<br />

valorAnterior:= valorActual<br />

<strong>en</strong>d; {while}<br />

Close(arch);<br />

Close(aux1);<br />

Close(aux2)<br />

<strong>en</strong>d; {Division}

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!