[ Foro de Pascal ]

pregunta sobre pascal

28-May-2013 01:57
Invitado (lucas)
1 Respuestas

en este programa tengo que incertar un carater en un arreglo de formada ordanada y alfabeticamente tambien hice eso pero me aparece un erro en la function


program e4p7;
const
min=1;
max=10;
type arreglo=array[min..max] of char;
procedure cargar_arreglo(var arr1:arreglo);
var i:integer;
begin
i:=min;
for i:=min to max do
readln(arr1[i]);
end;
function encontrar_pos(arr1:arreglo;elemento:char):integer;
var
i:integer;
h:integer;
begin
i:=min;
h:=max;
while (i<h)and ((elemento)>arr1[i]) do
i:=i+1;
if (elemento)<= arr1[h] and (i)<>1 then
encontrar_pos:=i
else
if (i)=1 then
begin
encontrar_pos:=1
else
encontrar_pos:=h;
end;
end;
procedure corrimiento ( var arr1:arreglo;pos:integer);
begin
while (max>pos) do begin
arr1[max]:=arr1[max-1];
max:=max-1;
end;
end;
var arr1:arreglo;pos:integer;elemento:char;
begin
readln(elemento);
cargar_arreglo(arr1);
pos:=encontrar_pos(arr1,elemento);
corrimiento(arr1,pos);
if(pos)<>0 then
arr1[pos]:=elemento;
else
writeln('no se puede ordenar');
end.



28-May-2013 11:22
Nacho Cabanes (+84)

Las condiciones están escritas de forma... rara... (y que no es la correcta, claro)

Por ejemplo, da un error en la línea


if (elemento)<= arr1[h] and (i)<>1 then


que debería ser


if (elemento<= arr1[h]) and (i<>1) then


Es decir, cada condición debe estar entre paréntesis, no sólo el primer elemento.

También hay otros fallos, que cuesta ver porque el fuente está mal tabulado. Por ejemplo, en el bloque:


if (i)=1 then
begin
encontrar_pos:=1
else


da error en la línea de "else", y es porque no has cerrado el "begin" de la primera parte del "if". Si estuviera bien tabulado, verías que a ese "begin" no le sigue ningún "end".






(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.)