[ Foro de Pascal ]
Hola, estube practicando ordenamientos, el de la burbuja específicamente, el algoritmo es el mismo que apliqué en otro lenguajes como Basic y C (con su respectiva sintaxis) y en ambos el resultado fue correcto, ahora, en Pascal no me ordena correctamente. Por ej: si le doy de entrada (3, 5, 90, 78 ,21) me devuelve (21,78,90,0,0) dónde están el 3 y 5, quisiera que me ayuden, calculo que debe ser un problema de sintaxis, pero no se cuál, recién empiezo con este lenguaje. El código es el sig:
uses
crt;
var
a:array[1..5] of integer;
x,n,i,j,aux:integer;
begin
clrscr;
for n:=1 to 5 do
begin
readln(x);
a[n]:=x ;
end;
writeln;
writeln;
for n:=1 to 5 do
begin
writeln(a[n]);
end;
readkey;
for i:=1 to 4 do
begin
for j:=1 to (5-i) do
begin
if a[j] > a[j+1] then
aux:=a[j];
a[j]:=a[j+1];
a[j+1]:=aux
end;
end;
writeln;
writeln;
for j:=1 to 5 do
begin
writeln(a[j]);
end;
readkey;
end.
Gracias.
Tienes un fallo frecuente: te falta un "begin" y un "end" en la parte que intercambia las tres variables, de modo que cuando se cumple el IF, sólo da el primero de los pasos:
for i:=1 to 4 do
begin
for j:=1 to (5-i) do
begin
if a[j] > a[j+1] then
BEGIN
aux:=a[j];
a[j]:=a[j+1];
a[j+1]:=aux
END;
end;
end;
Confírmame si con el BEGIN y el END va bien.
Aun así, he ampliado el curso, para añadir una "ampliación 3", que sí existía en la versión PDF, pero no en la versión alojada aquí. Esa ampliación 3 habla sobre ordenaciones, y cuenta cómo es el método de burbuja (y otros dos) y cómo aprovechar que los datos están ordenados para hacer una "búsqueda binaria".
Sí, ese era el problema, muchas gracias. Quisiera preguntarte también cómo hago para dejar cargada una tabla (matriz) en el código fuente, es decir, no tener que ingresarla cuando corre el programa.
Puedes dejar cargada la matriz usando "const", e indicando los valores entre paréntesis, separados por comas.
He publicado algunas ampliaciones del curso que estaban en el PDF pero no aquí. Entre ellas, en la que habla de cómo usar ensamblador desde Turbo Pascal, tienes un ejemplo, en el que los datos del sprite forman una matriz de 2 dimensiones:
http://www.aprendeaprogramar.com/mod/resource/view.php?id=473
OK; gracias.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)