UTNianos

Versión completa: Ayuda con un ejercicio
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2
Cita:Ahora que miro tb me faltó poner la pilaAuxiliar en nil al inicio del while. Lo cambié pero me sigue fallando.

Lo agregue y anduvo! Tambien le hice un par de cambios en el medio, no me acuerdo que pero la cuestion es que ahora anda =D=D=D

Ahí dejo el ejercicio terminado con una prueba (es una pila con los numeros 2, 2, 3, 3, 2)


type
tPunt = ^tNodo;
tNodo = record
info:integer;
sig:tPunt;
end;

procedure crearPila(var p:tPunt);
var nuevo:tPunt;
begin
new(nuevo);
nuevo^.info:=2;
nuevo^.sig:=nil;
p:=nuevo;

new(nuevo);
nuevo^.info:=3;
nuevo^.sig:=p;
p:=nuevo;


new(nuevo);
nuevo^.info:=3;
nuevo^.sig:=p;
p:=nuevo;

new(nuevo);
nuevo^.info:=2;
nuevo^.sig:=p;
p:=nuevo;

new(nuevo);
nuevo^.info:=2;
nuevo^.sig:=p;
p:=nuevo;
end;

function sacar(var p:tPunt):integer;
var aux:tPunt;
begin
sacar:=p^.info;
aux:=p^.sig;
dispose(p);
p:=aux;
end;

procedure meter(var p:tPunt; valor:integer);
var nuevo:tPunt;
begin
new(nuevo);
nuevo^.info:=valor;
nuevo^.sig:=p;
p:=nuevo;
end;

var
nroActual,cantActual,cantMax,nro,nroMax:integer;
pila,pilaAuxiliar:tPunt;

begin

cantMax:=0;
crearPila(pila);
while (pila<>nil) do begin
pilaAuxiliar:=nil;
nroActual := sacar(pila);
cantActual :=1;
while (pila<>nil) do begin
nro := sacar(pila);
if (nro = nroActual) then begin
cantActual:= cantActual +1;
end else begin
meter(pilaAuxiliar,nro);
end;
end;
if(cantActual > cantMax) then begin
nroMax := nroActual;
cantMax := cantActual;
end;
pila := pilaAuxiliar;
end;

writeln('El numero que mas se repite es el ',nroMax);

end.

Que loco, yo lo había cambiado y no andaba, aunque también había tocado otras cosas antes, así que quizá lo rompí xD Seguro que lo que pasaba era que pilaAuxiliar seguía apuntando a un nodo ya eliminado.
Para el crear pila no te convenía llamar a tu función meter?
(13-06-2012 23:24)Anirus escribió: [ -> ]Que loco, yo lo había cambiado y no andaba, aunque también había tocado otras cosas antes, así que quizá lo rompí xD Seguro que lo que pasaba era que pilaAuxiliar seguía apuntando a un nodo ya eliminado.
Para el crear pila no te convenía llamar a tu función meter?

La verdad que podría, para no repetir código, pero ya se lo mandé a mi amigo, asi que se lo comento para cuando haga los casos de prueba que le piden...

Gracias Dani!
Hubiera estado bueno que a tu amigo lo ayudes a pensar la solución, más que darle el cacho de código...

Respondo recién porque anduve enferma, pero más o menos lo hubiera hecho como Dani
(14-06-2012 09:30)nanuiit escribió: [ -> ]Hubiera estado bueno que a tu amigo lo ayudes a pensar la solución, más que darle el cacho de código...

Respondo recién porque anduve enferma, pero más o menos lo hubiera hecho como Dani

Spoiler: Mostrar
Es del tipo de amigo que o le das la solución o no hace nada lamentablemente =P
Páginas: 1 2
URLs de referencia