Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Ayuda con un ejercicio
Autor Mensaje
sentey Sin conexión
Presidente del CEIT
fressi renunciessi abandonessi
********

Análisis de Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.501
Agradecimientos dados: 123
Agradecimientos: 189 en 129 posts
Registro en: Aug 2010
Facebook Google+ LinkedIn Twitter YouTube
Mensaje: #1
Ayuda con un ejercicio Trabajo practico y 1 más Algoritmos y Estructuras de Datos
Es para un TP de un amigo...

Cita:Dada una pila de numeros, informar el numero que se repite mas veces.

Para ver el numero que se repite mas veces, tengo que ordenar la pila...para eso, se me ocurre que lo mejor es pasarla a una lista nueva (no pila, lista normal) y ahi una vez que está ordenada, es mucho mas facil encontrar el numero que se repite mas veces...

A alguno se le ocurre alguna solucion no tan fea?

sentey escribió:Voy a cambiar esta firma el día que Me$$i gane un mundial
11-06-2012 23:13
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
CarooLina En línea
Colaborador
2016! ❥
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 3.463
Agradecimientos dados: 916
Agradecimientos: 1.216 en 451 posts
Registro en: Sep 2010
Mensaje: #2
RE: Ayuda con un ejercicio
jajaja eh ? SE puede usar algun vector/ por que se me ocurre:

va contando la pila y el vector de registro seria : numero - cantidad de repeticiones(contador). Pero debo saber la cantidad de numeros que hay. Luego lo rodenas y mostras el mayor.

Si no lo sabes, onda usa la lista y pone numero - cantidad de repeticiones, una vez que lo llenas te fijas el mayor.

love
11-06-2012 23:30
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
el pibe Sin conexión
Presidente del CEIT
Benderista
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.235
Agradecimientos dados: 5
Agradecimientos: 102 en 28 posts
Registro en: May 2011
YouTube
Mensaje: #3
RE: Ayuda con un ejercicio
Las unicas formas que se me ocurren son recontra no-optimas.


Si no queres ordenar, podes hacer algo muy feo, que es comparar valor contra valor MUCHAS veces.

basicamente, comparas el primero contra todos y contas. comparas el segundo contra todos y contas; si es mayor cantidad que el que tenias, tenes que es ese, sino el otro. Y asi sucesivamente.

No es optimo, es horrible, pero funciona.

[Imagen: tolivi10.jpg]
2 Veces congresista por eArgentina
13 Veces congresista por eBolivia
1 Vez Emperador por eBolivia
Ex-Ministro de Salud eArgentino

[Imagen: Necromancer616.png]
12-06-2012 00:22
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] el pibe recibio 1 Gracias por este post
sentey (13-06-2012)
sentey Sin conexión
Presidente del CEIT
fressi renunciessi abandonessi
********

Análisis de Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.501
Agradecimientos dados: 123
Agradecimientos: 189 en 129 posts
Registro en: Aug 2010
Facebook Google+ LinkedIn Twitter YouTube
Mensaje: #4
RE: Ayuda con un ejercicio
No, no se pueden usar vectores...

Estoy en la situacion que dice el pibe, tengo ese tipo de soluciones, pero son horribles!

sentey escribió:Voy a cambiar esta firma el día que Me$$i gane un mundial
12-06-2012 01:05
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Anirus Sin conexión
Super Moderador
Sin estado :)
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.162
Agradecimientos dados: 77
Agradecimientos: 194 en 69 posts
Registro en: Nov 2009
Mensaje: #5
RE: Ayuda con un ejercicio
Es sólo eso el enunciado? es medio rarito. Supongo que debe querer que lo hagas sólo con operaciones de pila. Creo que es lo mismo que dijo El pibe.


while(pila<>nil) do begin

nroActual := sacar(pila);
cantActual:=1;


//Recorro toda la pila contando las veces que aparece ese nro
while(pila<>nil) do begin

nro := sacar(pila);
if (nro = nroActual) then cantActual:= cantActual +1 else meter(pilaAuxiliar,nro);

end;

if(cantActual> cantMax) then begin
nroMax:= nroActual;
cantMax := cantActual;
end;

pila := pilaAuxiliar; //Vuelvo a hacer lo mismo con los que quedan

end;


(Este mensaje fue modificado por última vez en: 12-06-2012 21:34 por Anirus.)
12-06-2012 21:21
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Anirus recibio 1 Gracias por este post
sentey (13-06-2012)
juanete86 Sin conexión
Profesor del Modulo A
Closed stand
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 243
Agradecimientos dados: 0
Agradecimientos: 6 en 5 posts
Registro en: Feb 2011
Mensaje: #6
RE: Ayuda con un ejercicio
a mi tambien me parece raro que solo te permitan usar pilas,
ya que presisamente ese es el chiste de las pilas, no tener orden
ni podes no ser optimo para procesos de contar,
12-06-2012 22:20
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
el pibe Sin conexión
Presidente del CEIT
Benderista
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.235
Agradecimientos dados: 5
Agradecimientos: 102 en 28 posts
Registro en: May 2011
YouTube
Mensaje: #7
RE: Ayuda con un ejercicio

Off-topic:
es como cuando en analisis 2 te hacen usar coordenadas esfericas para regiones que ni siquiera son circulares

[Imagen: tolivi10.jpg]
2 Veces congresista por eArgentina
13 Veces congresista por eBolivia
1 Vez Emperador por eBolivia
Ex-Ministro de Salud eArgentino

[Imagen: Necromancer616.png]
12-06-2012 22:54
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
sentey Sin conexión
Presidente del CEIT
fressi renunciessi abandonessi
********

Análisis de Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.501
Agradecimientos dados: 123
Agradecimientos: 189 en 129 posts
Registro en: Aug 2010
Facebook Google+ LinkedIn Twitter YouTube
Mensaje: #8
RE: Ayuda con un ejercicio
Dani, me encanto tu solucion, ya la implementé, pero ando con un problema

Me tira error 204 (pueden compilar y verlo)

Segun leí puede ser un problema con el dispose pero no lo puedo encontrar Confused


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;
//apunta a NIL por ser el unico nodo

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

//A partir de ahora, ahora todos los hago apuntar a P, que antes era el primer nodo (es una pila)

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

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

new(nuevo);
nuevo^.info:=4;
nuevo^.sig:=p;
p:=nuevo;
//aca ya tengo la lista con 5 nodos
end;

function sacar(var p:tPunt):integer;
var aux:tPunt;
begin
sacar:=p^.info;
aux:=p;
p:=p^.sig;
dispose(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

crearPila(pila); // 4 1 3 3 2

while(pila<>nil) do begin
nroActual := sacar(pila);
cantActual :=1;
//Recorro toda la pila contando las veces que aparece ese nro
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; //Vuelvo a hacer lo mismo con los que quedan
end;

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

end.



sentey escribió:Voy a cambiar esta firma el día que Me$$i gane un mundial
13-06-2012 00:09
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] sentey recibio 1 Gracias por este post
brunodiaz (13-06-2012)
el pibe Sin conexión
Presidente del CEIT
Benderista
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.235
Agradecimientos dados: 5
Agradecimientos: 102 en 28 posts
Registro en: May 2011
YouTube
Mensaje: #9
RE: Ayuda con un ejercicio
el error 204 es puntero invalido, y se produce en tu funcion "sacar"

No preguntas si p == NIL cuando haces el p^.info, por lo que si p es NIL, rompe porque no existe el ^.info

[Imagen: tolivi10.jpg]
2 Veces congresista por eArgentina
13 Veces congresista por eBolivia
1 Vez Emperador por eBolivia
Ex-Ministro de Salud eArgentino

[Imagen: Necromancer616.png]
13-06-2012 00:19
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
sentey Sin conexión
Presidente del CEIT
fressi renunciessi abandonessi
********

Análisis de Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.501
Agradecimientos dados: 123
Agradecimientos: 189 en 129 posts
Registro en: Aug 2010
Facebook Google+ LinkedIn Twitter YouTube
Mensaje: #10
RE: Ayuda con un ejercicio
(13-06-2012 00:19)el pibe escribió:  el error 204 es puntero invalido, y se produce en tu funcion "sacar"

No preguntas si p == NIL cuando haces el p^.info, por lo que si p es NIL, rompe porque no existe el ^.info

Probe preguntando si es nil y me tira el mismo error...

Es cierto, el error esta en la funcion sacar, pero es en la linea del dispose...

---

Aparte p nunca va a ser nil, porque entra en un while donde la condicion es que sea Distinto de NIL

---

faltaba inicializar cantMax, pero tampoco es eso...

sentey escribió:Voy a cambiar esta firma el día que Me$$i gane un mundial
(Este mensaje fue modificado por última vez en: 13-06-2012 00:54 por sentey.)
13-06-2012 00:30
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
el pibe Sin conexión
Presidente del CEIT
Benderista
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.235
Agradecimientos dados: 5
Agradecimientos: 102 en 28 posts
Registro en: May 2011
YouTube
Mensaje: #11
RE: Ayuda con un ejercicio
A veces pasa, es como si pascal se pone tarado cuando haces un dispose de algo que creaste recien. Proba esto:

begin
sacar:=p^.info;
aux:=p^.sig;
dispose(p);
p:=aux;
end;

[Imagen: tolivi10.jpg]
2 Veces congresista por eArgentina
13 Veces congresista por eBolivia
1 Vez Emperador por eBolivia
Ex-Ministro de Salud eArgentino

[Imagen: Necromancer616.png]
13-06-2012 11:56
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
sentey Sin conexión
Presidente del CEIT
fressi renunciessi abandonessi
********

Análisis de Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.501
Agradecimientos dados: 123
Agradecimientos: 189 en 129 posts
Registro en: Aug 2010
Facebook Google+ LinkedIn Twitter YouTube
Mensaje: #12
RE: Ayuda con un ejercicio
No, me pasa lo mismo...

[Imagen: impossibru-imgur-668.jpg]

sentey escribió:Voy a cambiar esta firma el día que Me$$i gane un mundial
13-06-2012 13:09
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
brunodiaz Sin conexión
The Dark Knight
Bla
**********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 7.762
Agradecimientos dados: 136
Agradecimientos: 381 en 132 posts
Registro en: May 2008
Mensaje: #13
RE: Ayuda con un ejercicio
La pregunta de si es NIL incluye el dispose?
Porque sino aux va a ser invalido, dependiendo de tu if va a ser Nil si haces la linea de "aux=" o basura si mantenes el puntero a la linea anterior.

Aclaro que peudo estar diciendo cualqueir cosa, podrias poner tu codigo con el if== NIL asi lo vemos?
Te deje un gracias por haber usado correctamente el compilador integrado en el foro para mostrar tu problema
Fijate que si borras el dispose el error te lo tira en un putno anterior
(Este mensaje fue modificado por última vez en: 13-06-2012 13:28 por brunodiaz.)
13-06-2012 13:18
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
el pibe Sin conexión
Presidente del CEIT
Benderista
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.235
Agradecimientos dados: 5
Agradecimientos: 102 en 28 posts
Registro en: May 2011
YouTube
Mensaje: #14
RE: Ayuda con un ejercicio
hum, que porqueria. No habra que incluir alguna biblioteca (onda C)

Un uses crt; o parecido para el dispose ?

[Imagen: tolivi10.jpg]
2 Veces congresista por eArgentina
13 Veces congresista por eBolivia
1 Vez Emperador por eBolivia
Ex-Ministro de Salud eArgentino

[Imagen: Necromancer616.png]
13-06-2012 17:32
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Anirus Sin conexión
Super Moderador
Sin estado :)
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.162
Agradecimientos dados: 77
Agradecimientos: 194 en 69 posts
Registro en: Nov 2009
Mensaje: #15
RE: Ayuda con un ejercicio
Ahora que miro tb me faltó poner la pilaAuxiliar en nil al inicio del while. Lo cambié pero me sigue fallando.
13-06-2012 20:23
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.