UTNianos

Versión completa: [PEDIDO]Final Algoritmos 13/02/2010
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2
Si, entendí lo que dijiste... jamás se me había ocurrido así. Yo lo que entendí del enunciado.. era que onda en FILESXUSER vos podías tener:
FILE 3... IDFILEPUB 9 (eran caracteres pero te pongo en nro)
FILE 3... IDFILEPUB 10
FILE 4... IDFILEPUB 11
FILE 3... IDFILEPUB 4
Entonces si en TO_KILL, estaban los IDFILEPUB 9,10 y 4, entonces tenías que imprimir la INFO del FILE3.
Era asi?

Nose, yo la estrategia me di cuenta como hacerla a la hora, y después no tuve tiempo de terminar... mejor dicho, hice el proceso sin revisar y con confusiones de punteros que es imposible hacer bien de una... pero ni abrí ni cerré archivos..etc. Mi estrategia era distinta a como decís vos... pero mucho más complicada. Aunque de nodos daba bien.
yo lo hize todo bien el ejercicio pero al hacer lista cn sublista de id file por id file pub me pase de la cantidad de nodos, lo demas todo bien y completo. NUNCA IMAGINE QUE POR ESO ME DESAPROBARIAN EL FINAL, ya se fueron a la mierda!

en una lista pones todos lso archivos cn el contador a 0, dsp armas otra lista que tenga todos lso idfilepub con el id file, y en la otra lista incrementas el contador ( pq un id file puede tener varios idfilepub, por ende tantos como usuarios que suban ese mismo archivo y para eso es el contador)
despues recorriendo to_kill buscas en la lista cn el idfilepub el idfile, vas a la primer lista y cn ese idfile decrementas el contador( despues cuando termines te paras en esa lista, y si el contador esta a 0 es que n personas subieron el mismoi archivo y todas, osea n fueron reportadas, tocnes imprimis e incrementas contadores)
Yo lo que hice fue una lista principal que tenía el idFile de 4, la posición al archivo de 4, una sublista de 4, y el siguiente de 4... ahí tenías la lista principal, en esa cargabas todo el archivo files (todas las posiciones y todos los idfiles...

Luego recorrías FilesxUsr y hacías las sublistas, ponías TODOS los registros de filesxUsr, los nodos de la sublista sólo tenía el idfilepub (de 8 bytes) y el siguiente....

Por último recorrías el To_Kill, a medida que lo ibas leyendo recorrías la lista y eliminabas el nodo DE LAS SUBLISTAS en el cual esté el mismo idfilepub que el del registro leído... Acá venía la parte "Poco feliz"; ninjguno de los archivos tenían orden, las listas tampoco, nada de nada! por lo cual por cada registro de To_Kill había que recorrer toda la lista principal y sus sublistas... Una mierda..... (SIGO CON ESTA EXPLICACIÓN MÁS ABAJO)

por último lo que hacía era recorrer la lista principal y preguntar qué nodo tenía la sublista igual a NIL, aquel que así la tenía implicaba que todos sus idfilepub habían sido denunciados, y de ese nodo sacaba la posición en el archivo, y publicaba todos los datos.... Total podía hacer una entrada directa a cada registro...

Así fue mi resolución, y aprobé....

(SIGO CON LA EXPLICACION DE ARRIBA)

Justamente como eso en las sublistas quedaba como el totó, algunos (pocos) optaron por hacer una lista principal que tuviera los idfile, un contador, la posición y nada más... y otra lista que tenga idfilepub, idfilepos y siguiente... Lo que se hacía de esta manera era recorrer el archivo FilesXUsr y cargar todos los registros, a medida que se iban agregando nodos a la lista esta, también se incrementaba el contador correspondiente en la lista principal (Es decir, si el IdFile era 1, se iba a la lista principal, la recorría buscando el nodo en el que el IdFile sea igual a uno, y aumentaba el contador).. Por último, leían el archivo To_Kill y por cada registro volvían a recorrer la lista auxiliar (aunque esto es una mierda, evidentemente era mucho mejor que recorrer la lista de sublistas, aunque a la larga, las dos son una cagada total), cuando encontraban el IdFilePub que coincidía con el del nodo, agarraban el idfile del nodo y recorrían la lista principal para disminuír en uno el contador... Se mostraba en pantalla aquellos que el contador tengan en cero... esta era la estrategia que tomaban como BIEN....

En fin, espero que se haya entendido, cualquier duda avisennn =D
Aye escribió:Yo lo que hice fue una lista principal que tenía el idFile de 4, la posición al archivo de 4, una sublista de 4, y el siguiente de 4... ahí tenías la lista principal, en esa cargabas todo el archivo files (todas las posiciones y todos los idfiles...

Luego recorrías FilesxUsr y hacías las sublistas, ponías TODOS los registros de filesxUsr, los nodos de la sublista sólo tenía el idfilepub (de 8 bytes) y el siguiente....

Por último recorrías el To_Kill, a medida que lo ibas leyendo recorrías la lista y eliminabas el nodo DE LAS SUBLISTAS en el cual esté el mismo idfilepub que el del registro leído... Acá venía la parte "Poco feliz"; ninjguno de los archivos tenían orden, las listas tampoco, nada de nada! por lo cual por cada registro de To_Kill había que recorrer toda la lista principal y sus sublistas... Una mierda..... (SIGO CON ESTA EXPLICACIÓN MÁS ABAJO)

por último lo que hacía era recorrer la lista principal y preguntar qué nodo tenía la sublista igual a NIL, aquel que así la tenía implicaba que todos sus idfilepub habían sido denunciados, y de ese nodo sacaba la posición en el archivo, y publicaba todos los datos.... Total podía hacer una entrada directa a cada registro...

Así fue mi resolución, y aprobé....

(SIGO CON LA EXPLICACION DE ARRIBA)

Justamente como eso en las sublistas quedaba como el totó, algunos (pocos) optaron por hacer una lista principal que tuviera los idfile, un contador, la posición y nada más... y otra lista que tenga idfilepub, idfilepos y siguiente... Lo que se hacía de esta manera era recorrer el archivo FilesXUsr y cargar todos los registros, a medida que se iban agregando nodos a la lista esta, también se incrementaba el contador correspondiente en la lista principal (Es decir, si el IdFile era 1, se iba a la lista principal, la recorría buscando el nodo en el que el IdFile sea igual a uno, y aumentaba el contador).. Por último, leían el archivo To_Kill y por cada registro volvían a recorrer la lista auxiliar (aunque esto es una mierda, evidentemente era mucho mejor que recorrer la lista de sublistas, aunque a la larga, las dos son una cagada total), cuando encontraban el IdFilePub que coincidía con el del nodo, agarraban el idfile del nodo y recorrían la lista principal para disminuír en uno el contador... Se mostraba en pantalla aquellos que el contador tengan en cero... esta era la estrategia que tomaban como BIEN....

En fin, espero que se haya entendido, cualquier duda avisennn :D

Si tal cual entendí, eso es lo que yo hice o intenté hacer pero no me dio el tiempo.

La de los contadores también la entendí, y era mucho más simple..
Ah, y el del 13, era mucho mas simple en realidad... no hace falta contador y se puede hacer mas facil... Lista de files con el IDFILE, POSF y SUBL. Y dp cuando haces la busqueda binaria de tokill a filexuser, lees a que idfile corresponde, buscasnodo en listadeFiles, y en su sublsita le enchufas ese usuario, y la pos al Tokill del cual sacaste 1ro el idfilepub para hacer la BBin... y listo. Despues recorres esa unica lista preguntando si su "sublista" tiene + de 1 nodo, si lo tiene, es porque ese idfile se reporto + de una vez, le imprimis los usuarios que los tenes ahi, con la pos a tokill de la subl imprimis lo necesario, y con la pos a files de la lista, imprimis lo necesario.
guidoakd escribió:Al final me parece que no era así (como decís y como yo puse). Porque tenés que imprimir los que fueron reportados MAS DE UNA VEZ... y estaríamos mostrando TODOS, ahí.

Como se resuelve eso, se podria recorrer la listaB y si nadie cumple con que algun archivo tiene mas de un kill entonces borrar ese nodo de la listaA... pero seria agregar mas logica aun y el tiempo no me da... como seria la forma rapida de resolver esto?
alguno hizo el final del 01-03-08 .... como hicieron para listar ???, porque queria como una lista circular la sublista.....
gracias !!!!
franeybar escribió:
guidoakd escribió:Al final me parece que no era así (como decís y como yo puse). Porque tenés que imprimir los que fueron reportados MAS DE UNA VEZ... y estaríamos mostrando TODOS, ahí.

Como se resuelve eso, se podria recorrer la listaB y si nadie cumple con que algun archivo tiene mas de un kill entonces borrar ese nodo de la listaA... pero seria agregar mas logica aun y el tiempo no me da... como seria la forma rapida de resolver esto?

Yo agregue un contador en la lista de FILES. Donde lo incrementaba cada vez que encontraba el IDFILE (luego de hacer x bbinaria idfilepub en filesxuser) de filexuser. Dp, si el contador de ese IDfile era mayor que 1, imprimia los datos necesarios de ese IDFILE (el resto de las cosas de los otros archivos, las tenias en la otra lista de la que sacaste el Idfile.. ahi tenias las pos, etc)
Páginas: 1 2
URLs de referencia