[ Foro de Pascal ]
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.
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.)