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

[0] Índice de Mensajes

Ir a la versión completa