ejercicio sobre listas
Publicado por Alejandra (1 intervención) el 29/01/2008 20:12:29
hola estoy atascada en este ejrcicio me dice que la solucion no es correcta...el enunciado es el siguiente
Completar la función ordinal_maximo para que devuelva la posición (ordinal: nº entero) de un elemento que almacene el máximo valor en el campo dato en una lista dinámica simple a cuyo primer elemento apunta la variable puntero cabeza. Por ejemplo, si se encuentra en el primer elemento debe devolver el valor 1... Ha de considerarse también el caso de lista vacía, en cuyo caso, la función devolverá el valor -9999.
Nota: si dos o más elementos contienen el mismo valor máximo, entonces la función debe devolver el ordinal del primero de ellos que se encuentre en la lista.
yo lo q he puesto
type ptr=^elemento;
elemento=record
dato:integer;
sig:ptr
end;
function ordinal_maximo(cabeza:ptr):integer;
var aux,contador,maximo:integer;
begin
maximo:=0;aux:=0;contador:=0;
if cabeza=nil then ordinal_maximo:=-9999 else begin
while cabeza<>nil do begin
if cabeza^.dato>aux then begin
maximo:=cabeza^.dato;
contador:=contador+1; aux:=maximo; cabeza:=cabeza^.sig end;
if cabeza^.dato<maximo then begin contador:=contador+1; cabeza:=cabeza^.sig;end;
ordinal_maximo:=aux; end;
Completar la función ordinal_maximo para que devuelva la posición (ordinal: nº entero) de un elemento que almacene el máximo valor en el campo dato en una lista dinámica simple a cuyo primer elemento apunta la variable puntero cabeza. Por ejemplo, si se encuentra en el primer elemento debe devolver el valor 1... Ha de considerarse también el caso de lista vacía, en cuyo caso, la función devolverá el valor -9999.
Nota: si dos o más elementos contienen el mismo valor máximo, entonces la función debe devolver el ordinal del primero de ellos que se encuentre en la lista.
yo lo q he puesto
type ptr=^elemento;
elemento=record
dato:integer;
sig:ptr
end;
function ordinal_maximo(cabeza:ptr):integer;
var aux,contador,maximo:integer;
begin
maximo:=0;aux:=0;contador:=0;
if cabeza=nil then ordinal_maximo:=-9999 else begin
while cabeza<>nil do begin
if cabeza^.dato>aux then begin
maximo:=cabeza^.dato;
contador:=contador+1; aux:=maximo; cabeza:=cabeza^.sig end;
if cabeza^.dato<maximo then begin contador:=contador+1; cabeza:=cabeza^.sig;end;
ordinal_maximo:=aux; end;
Valora esta pregunta


0