[ 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 (+30)

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