Programación General > Pascal
Ordenacion QuickSort
(1/1)
Geo_Jervin:
Este es el código el problema es que me da error en la parte acentral y no se porque razón
--- Código: Pascal --- Program Quicksort;uses crt;type vector=array [1..10] of integer;const lista:vector=(8,5,6,3,1,4,2,7,10,9);var k:integer; longitud:integer; procedure rapido (var a:vector;n:integer); procedure partir (primero,ultimo :integer); var i,j,central:integer; procedure intercambiar (var m,n:integer); var aux:integer; begin aux:=m; M:=n; N:=aux; end; begin i:=primero; j:=ultimo; central:=a[(primero+ultimo) div 2]; repeat while a[i]central do {Aqui es donde me da el error en a[i]central} j:=j-1; if i<=j then begin intercambiar (a[i],a[j]); i:=i+1; j:=j-1; end; until i>j; if primero<j then partir(primero,j); if i<ultimo then partir(i,ultimo); end;begin partir (1,n);end;begin clrscr; k:=0; write ('Este es el vector original: '); repeat begin write (lista[k],' '); k:=k+1; end; until k=11; writeln; rapido (lista,10); k:=0; write ('Este es el vector ordenado: '); repeat begin write (lista[k],' '); k:=k+1; end; until k=11; readln;end.
Espero que me puedan ayudar
m0skit0:
Mi primer consejo es que no declares procedimientos dentro de procedmientos dentro de procedimientos... Hazlo fuera:
--- Código: Pascal ---Program Quicksort;uses crt;type vector=array [1..10] of integer;const lista:vector=(8,5,6,3,1,4,2,7,10,9);var k:integer; longitud:integer; procedure intercambiar (var m,n:integer);var aux:integer;begin aux:=m; M:=n; N:=aux;end; procedure partir (primero,ultimo :integer);var i,j,central:integer;begin i:=primero; j:=ultimo; central:=a[(primero+ultimo) div 2]; repeat while a[i]central do {Aqui es donde me da el error en a[i]central} j:=j-1; if i<=j then begin intercambiar (a[i],a[j]); i:=i+1; j:=j-1; end; until i>j; if primero<j then partir(primero,j); if i<ultimo then partir(i,ultimo);end; procedure rapido (var a:vector;n:integer);begin partir (1,n);end; begin clrscr; k:=0; write ('Este es el vector original: '); repeat begin write (lista[k],' '); k:=k+1; end; until k=11; writeln; rapido (lista,10); k:=0; write ('Este es el vector ordenado: '); repeat begin write (lista[k],' '); k:=k+1; end; until k=11; readln;end. En cuanto al tema de acentral, es lógico que te dé error, esa sintaxis es errónea. Supongo que querías poner (o está mal en el libro): a<central
Salud
Geo_Jervin:
Gracias, Tenes razón con respecto al error si era ese y voy a tomar tu consejo con respecto a los procedimientos
Navegación
Ir a la versión completa