4
« en: Viernes 8 de Agosto de 2008, 16:42 »
Bien dejo aqui el algoritmo que compila pero que al rellenar el array no me salta otra vez el menu para hacer operaciones con este array sino que entra e un bucle y me pide rellenar el array una y otra vez, se que es una chorrada de fallo pero no caigo aer si me podeis ayudar, muchas gracias.
program ordenar_arrays;
VAR
tabla:ARRAY [1..10] OF INTEGER;
i,aux,salir,opcion,cambio:INTEGER;
begin
writeln('Elige una de las siguientes operaciones');
writeln('1.- Rellenar el Array');
writeln('2.- Ordenar Desendentemente');
writeln('3.- Ordenar Ascendentemente');
Writeln('0.- Salir');
writeln;
write('Su opcion:');
readln(opcion);
salir:=0;
begin
WHILE salir=0 DO
CASE opcion OF
1:
begin (*leer*)
FOR i:=1 TO 10 DO
begin
writeln('Mete el numero de la posicion ',i,':');
readln(tabla);
end;
end;
2:
begin (*ordenar descendentemente*)
REPEAT
cambio:=0;
FOR i:=1 TO 9 DO
begin
IF tabla< tabla [i+1] THEN
begin
aux:= tabla;
tabla:= tabla[i+1];
tabla[i+1]:=aux;
cambio:=1;
end;
end
UNTIL cambio=0;
(*escribe array*)
FOR i:=1 TO 10 DO
begin
write(tabla,' ');
end;
end;
3: (*ordenar Ascendentemente*)
begin
REPEAT
cambio:=0;
FOR i:=1 TO 9 DO
begin
IF tabla> tabla [i+1] THEN
begin
aux:= tabla;
tabla:= tabla[i+1];
tabla[i+1]:=aux;
cambio:=1;
end;
end
UNTIL cambio=0;
(*escribe array*)
FOR i:=1 TO 10 DO
begin
write(tabla,' ');
end;
end;
0: (*salir*)
begin
salir:=1;
writeln('Se va a finalizar el programa.');
readln;
end;
ELSE
Writeln('Opcion no valida');
readln;
end;
readln;
end;
readln;
end.