Foros del Web » Programación para mayores de 30 ;) » Programación General »

Burbuja en pascal

Estas en el tema de Burbuja en pascal en el foro de Programación General en Foros del Web. Tengo que hacer un programa del logaritm9o de la burbuja pero cuando corro el programa sale de resultado un 0 he pensado que el problema ...
  #1 (permalink)  
Antiguo 13/09/2003, 10:26
Avatar de periCo[un]Ltd.  
Fecha de Ingreso: agosto-2003
Ubicación: Mexico
Mensajes: 146
Antigüedad: 20 años, 8 meses
Puntos: 0
Burbuja en pascal

Tengo que hacer un programa del logaritm9o de la burbuja pero cuando corro el programa sale de resultado un 0
he pensado que el problema esta en la manera en que se carga el arreglo ¿como o en que variable tengo que cargar el arreglo?
__________________
I miss you, like the desert miss the rain
  #2 (permalink)  
Antiguo 15/09/2003, 14:55
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 20 años, 9 meses
Puntos: 1
Hola,

Es interesante que se propongan ejercicios sobre Pascal. Creo que lo que intentas es escribir un programa que implemente el algoritmo de ordenamiento burbuja, ¿no es así?

Respecto al cero que dices que genera el programa, la verdad es que puede haber un sinnúmero de razones por las que esto puede pasar, y es realmente difícil dar con la causa cuando no se cuenta con el código fuente. ¿Puedes publicar el código que estás usando en este momento? De esta forma sería tremendamente más sencillo ayudarte.

Un cordial saludo
  #3 (permalink)  
Antiguo 15/09/2003, 18:03
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
{************************************************* **************************}
{ METODOS DE ORDENAMIENTO }
{ }
{ 3 Algoritmos de ordenamiento, Burbuja, Seleccion y Interseccion. Trabajan }
{ sobre vectores de 1 dimension ordenandolos de menor a mayor, la cantidad }
{ de elementos de los vectores esta controlada por la constante N donde N }
{ puede tomar cualquier valor entero. Una forma de ver como trabajan estos }
{ algoritmos es usar el Debug de TPascal agregando la variable A(el vector) }
{ y observar como se va ordenando de a poco nuestro vector. }
{ }
{Mauricio ([email protected]) }
{Pd: no se pierdan el Debug que es lo mas!!! }
{************************************************* **************************}

program Ordenamiento;

uses crt;

const
N = 5;
type
TipoArray = Array [1 .. N] of byte;

var a:tipoarray;
i,j:byte;
opc:char;
salir:boolean;


procedure Cambiar (var a,b:byte);
var aux:byte;

begin
aux:= a;
a:= b;
b:= aux
end;

procedure Cargar(var A:TipoArray);
var i:byte;
begin
for i:=1 to N do
begin
write('Ingrese la coordenada ',i,': ');
readln(a[i]);
end;
end;


procedure Burbuja(var A:TipoArray);
var i,j:byte;

begin
for j:=1 to (N-1) do
for i:=1 to (N-1) do
if (A[i] > A[i+1]) then Cambiar(A[i],A[i+1])
end;



procedure Seleccion(var A: TipoArray);
var Recorrido,j:byte;

begin
for Recorrido:= 1 to N-1 do
for J :=Recorrido+1 to N do
If (A[Recorrido]>A[J]) then Cambiar(A[Recorrido],A[J])
end;


procedure Interseccion (var A:TipoArray);
var Indice,K,Aux:byte;
Hallado:Boolean;

begin
For Indice:= 2 to N do
begin
Aux:= A[Indice];
K:=Indice-1;
Hallado:=false;
While not Hallado and (K>0) do
If (A[K]>Aux) then
begin
A[K+1]:=A[K];
K:=K-1;
end
else Hallado:=true;
If Hallado then A [K+1]:=Aux
else A[1]:= Aux
end
end;



procedure Imprime(A:TipoArray);
var i:byte;
begin
write('[ ');
for i:=1 to N do write(A[i],' ');
writeln(']');
end;



begin
clrscr;
writeln(' TIPOS DE ORDENAMIENTO');
writeln;
Cargar(A);
writeln;
writeln('Seleccione el tipo de Ordenamiento: ');
writeln(' 1.Burbuja');
writeln(' 2.Selecci¢n');
writeln(' 3.Intersecci¢n');
writeln;
repeat
write(' Opc:');
readln(opc);
if (opc='1') or (opc='2') or (opc='3') then
salir:=true else salir:=false;
until salir;
case opc of
'1': Burbuja(A);
'2': Seleccion(A);
'3': Interseccion(A);
end;
Imprime(A);
readkey;
end.

Tomado de Código Fuente Pascal.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #4 (permalink)  
Antiguo 16/09/2003, 16:39
Avatar de Hercules  
Fecha de Ingreso: diciembre-2000
Ubicación: Cerca del Olimpo
Mensajes: 286
Antigüedad: 23 años, 4 meses
Puntos: 0
es lindo volver a ver el viejo pascal :)
  #5 (permalink)  
Antiguo 16/09/2003, 18:34
Avatar de periCo[un]Ltd.  
Fecha de Ingreso: agosto-2003
Ubicación: Mexico
Mensajes: 146
Antigüedad: 20 años, 8 meses
Puntos: 0
Pues sigue sin correrme el bendito programa, este es mi codigo fuente:


program burbuja;
uses crt;
const
n=5;
var
i,j,temp:integer;
a:array[1..n] of integer;
begin
clrscr;
writeln('Metodo de ordenacion de la burbuja');
writeln('Escribe 5 numeros enteros');
readln(a[i]);
for j:=1 to (n-1) do
for i:=1 to (n-1) do
if (a[i])>(a[i+1]) then
begin;
temp:=a[i];
a[i]:=a[i+1];
a[i+1]:=temp;
end;
writeln('El resultado es ', a[i]);
readln;
end.



a todo eso sale de resultado un grandioso 0
__________________
I miss you, like the desert miss the rain
  #6 (permalink)  
Antiguo 17/09/2003, 08:25
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 20 años, 9 meses
Puntos: 1
Hola,

Me parece que lo que hace falta es que utilices ciclos tanto a la hora de leer los datos como a la hora de imprimirlos. Al tener sentencias readln(a[i]) o writeln(a[i]) sencillas, solo estarás leyendo/imprimiendo un elemento de la matriz dada. Lo natural sería que esas sentencias estuvieran dentro del cuerpo de un ciclo que usara a `i' como variable de iteración.

Por ejemplo:

Código:
program burbuja;
uses crt;
const
   n = 5;
var
   i,j,temp:integer;
   a:array[1..n] of integer;
begin
   clrscr;
   writeln('Metodo de ordenacion de la burbuja');
   writeln('Escribe ', n, ' numeros enteros');
   
   for i := 1 to n do
      readln(a[i]);
   
   for j := (n - 1) downto 1 do
      for i := 1 to j do
         if (a[i])>(a[i+1]) then
         begin
            temp   := a[i];
            a[i]   := a[i+1];
            a[i+1] := temp;
         end;

   
   writeln ('El resultado es:');
   for i := 1 to n do
      writeln (a[i]);
   readln;
end.
He modificado otros pequeños elementos del código, aunque esencialmente sigue trabajando como es de esperarse. :)

Un cordial saludo
  #7 (permalink)  
Antiguo 17/09/2003, 17:07
Avatar de periCo[un]Ltd.  
Fecha de Ingreso: agosto-2003
Ubicación: Mexico
Mensajes: 146
Antigüedad: 20 años, 8 meses
Puntos: 0
No es por ser mal agradecido, pero ni yo hubiese dado tal solucion al problema


un ciclo infinito!!!!
__________________
I miss you, like the desert miss the rain
  #8 (permalink)  
Antiguo 17/09/2003, 18:03
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 20 años, 9 meses
Puntos: 1
Disculpa periCo, ¿a qué te refieres?
  #9 (permalink)  
Antiguo 27/10/2003, 14:32
 
Fecha de Ingreso: octubre-2003
Ubicación: La Habana
Mensajes: 1
Antigüedad: 20 años, 6 meses
Puntos: 0
¿Alguien puede ayudarme con un script de ordenamiento? en JScript
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 10:28.