Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[pedido]- final ALGORITMOS 19/02/2011
Autor Mensaje
Anirus Sin conexión
Super Moderador
Sin estado :)
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.163
Agradecimientos dados: 81
Agradecimientos: 232 en 78 posts
Registro en: Nov 2009
Mensaje: #46
RE: [pedido]- final ALGORITMOS 19/02/2011
El tema de la lectura especial es cuando tenes un corte de control que requiere muchos ciclos anidados y necesitas que la lectura se haga al final del ciclo que está más adentro, en ese caso es cuando es necesaria. Si sólo tenés un while(not EOF(arch)) y te basta con leer el archivo al principio, no necesitas la lectura especial.
04-03-2011 17:32
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
LAUS Sin conexión
Campeon del cubo Rubik
:)
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 129
Agradecimientos dados: 52
Agradecimientos: 4 en 2 posts
Registro en: Jul 2008
Mensaje: #47
RE: [pedido]- final ALGORITMOS 19/02/2011
(03-03-2011 17:56)Lea escribió:  Lo acabo de resolver, pero difiero con ustedes. Primero, lo hice sin usar sublistas, directamente en un nodo meto el DNI (4 b.), un array de 5 b. (Cada uno de estos es un acumulador del examen 'I' (de 1 a 5) de tantas respuestas correctas), un campo Tot (1 b., acumulador del resultado final) y el campo siguiente, 4b.. Todo esto suma 14 b.. Como 'Examenes.dat' esta ordenado por código de examen y por dni, lo que hago son 2 cortes de control, es decir, mientras no cambie de examen, toda operacion que haga la haré sobre el indice 'I' del array del nodo de la lista de alumnos, y mientras no cambie de dni, verifico si la respuesta coincide en el array de resultados que tube que haber cargado al inicio de todo, en ese caso, acumulo 1 punto, tanto en el array que describi antes como en el campo Tot del nodo. (El nodo lo ubico luego de un BuscoOCreoNodo (Imaginenselo =P)). Despues el listado es simple, mientras la lista no sea NIL, hago un SacarPrimerNodo, y tengo todos los datos en el nodo que saque, y encima tal cual los tengo que mostrar.
Quise escanear la solucion pero las hojas que use son algo grandes acorde a mi scaner :/. Espero que se haya entendido lo que explique.

PD: Se puede usar lapiz en el final? (Uso hojas lisas)


Hola...

Yo lo hice igual que Lea (las estructuras), solo que no sé por qué nunca se me ocurre hacer corte de control ...
Hice lo siguiente:
Mientras no se termine EXAMENES
Leo registro(que si es corte de control iria con lectura especial)
Busco el código de exámen en el vector
Si vec.Respuestas[rExamenes.NumItem] = rExamenes.Opcion
BuscaInserta un nodo en la lista, sumando 1 punto en el examen correspondiente y 1 en la NotaFinal
si es distinto
BuscaInserta un nodo en la lista
Mientras la lista no esté vacía
Suprimo el primer nodo e imprimo el contenido
Incremento el número de orden

Estaría mal hacerlo así? Lo hice así porque ya estaba ordenado el archivo por los dos campos por lo que supuse que vas insertando en la lista por DNI y que segun el código de exámen vas sumando en el campo correspondiente.
Pero ahora me surgió la duda, porque según yo había entendido al corte de control lo usabas para ordenar un archivo por mas de un campo... y en este caso el archivo ya esta ordenado... Pero quisiera saber si es así o si se usa también para imprimir, porque de ser así lo estoy haciendo mal

Muchas gracias!!
Rindo mañana y tengo que aprobar si o si!!!
04-03-2011 17:56
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Lea Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 20
Agradecimientos dados: 0
Agradecimientos: 1 en 1 posts
Registro en: Mar 2011
Mensaje: #48
RE: [pedido]- final ALGORITMOS 19/02/2011
Bueno, como prometi ayer, aca esta mi solucion al final del 26/02/2011 (Adjunto).
Aclaro algunas cosas:
- No use sublistas, sino que use un corte de control por dia sobre listas.
- Como dijo Anirus, se puede usar solo el dia en el campo fecha y que de esta manera ocupe solo 1 byte, sin embargo a la hora de listar, me piden el campo entero, entonces para no complicarme la vida, use el campo fecha entero, total entra justo.
- Asumo que este final me resulto mucho mas dificil (y mas tiempo) que el del 19/02, no por la estrategia, sino por el corte de control por fecha.

Lo hice lo mas prolijo posible, obvio que no es la posta, pero puede llegar a funcionar =P. Espero comentarios!


Archivo(s) adjuntos
.rar  Final 20110226.rar (Tamaño: 5,87 MB / Descargas: 38)
04-03-2011 18:14
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
leandrong Sin conexión
Secretario de la SAE
...
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 632
Agradecimientos dados: 180
Agradecimientos: 616 en 80 posts
Registro en: Sep 2008
Mensaje: #49
RE: [pedido]- final ALGORITMOS 19/02/2011
Creé un post aportando el FINAL y mi resolución ya que este post está dirigido al del 19/02

http://www.utnianos.com.ar/foro/showthread.php?tid=5863
04-03-2011 18:19
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Lea Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 20
Agradecimientos dados: 0
Agradecimientos: 1 en 1 posts
Registro en: Mar 2011
Mensaje: #50
RE: [pedido]- final ALGORITMOS 19/02/2011
(04-03-2011 17:56)LAUS escribió:  Hola...

Yo lo hice igual que Lea (las estructuras), solo que no sé por qué nunca se me ocurre hacer corte de control ...
Hice lo siguiente:
Mientras no se termine EXAMENES
Leo registro(que si es corte de control iria con lectura especial)
Busco el código de exámen en el vector
Si vec.Respuestas[rExamenes.NumItem] = rExamenes.Opcion
BuscaInserta un nodo en la lista, sumando 1 punto en el examen correspondiente y 1 en la NotaFinal
si es distinto
BuscaInserta un nodo en la lista
Mientras la lista no esté vacía
Suprimo el primer nodo e imprimo el contenido
Incremento el número de orden

Estaría mal hacerlo así? Lo hice así porque ya estaba ordenado el archivo por los dos campos por lo que supuse que vas insertando en la lista por DNI y que segun el código de exámen vas sumando en el campo correspondiente.
Pero ahora me surgió la duda, porque según yo había entendido al corte de control lo usabas para ordenar un archivo por mas de un campo... y en este caso el archivo ya esta ordenado... Pero quisiera saber si es así o si se usa también para imprimir, porque de ser así lo estoy haciendo mal

Muchas gracias!!
Rindo mañana y tengo que aprobar si o si!!!

El corte de control no se usa para ordenar. Lo podes usar siempre y cuando el archivo (en este caso) este ordenado por el campo clave que estas usando. Por lo general hay que usar una lectura especial, ya que antes de iniciar el while que leerá todo el archivo, tenes que leer el primer registro e inicializar el campo clave para compararlo con los registros siguientes.
04-03-2011 18:24
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
leandrong Sin conexión
Secretario de la SAE
...
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 632
Agradecimientos dados: 180
Agradecimientos: 616 en 80 posts
Registro en: Sep 2008
Mensaje: #51
RE: [pedido]- final ALGORITMOS 19/02/2011
(04-03-2011 18:14)Lea escribió:  Bueno, como prometi ayer, aca esta mi solucion al final del 26/02/2011 (Adjunto).
Aclaro algunas cosas:
- No use sublistas, sino que use un corte de control por dia sobre listas.
- Como dijo Anirus, se puede usar solo el dia en el campo fecha y que de esta manera ocupe solo 1 byte, sin embargo a la hora de listar, me piden el campo entero, entonces para no complicarme la vida, use el campo fecha entero, total entra justo.
- Asumo que este final me resulto mucho mas dificil (y mas tiempo) que el del 19/02, no por la estrategia, sino por el corte de control por fecha.

Lo hice lo mas prolijo posible, obvio que no es la posta, pero puede llegar a funcionar =P. Espero comentarios!

Cuál era el problema de la fecha??

Si sabés que los legajos van de 1 a 1000, Guardás todo lo que hizo cada empleado en su correspondiente legajo (o sea, índice del vector). Lo vas guardando por fecha y por hora que lo único raro de cuando insertás el nodo es:

(P <> NIL) AND (P^.INFO.FECHA < RINFO.FECHA OR (P^.INFO.FECHA = RINFO.FECHA AND P^.INFO.HORA < RINFO.HORA).

Ahí te lo ordena por fecha y hora. =) Y listo.

Después cuando recorrés cada empleado (que ya están ordenados) te metés en el vector según el índice de legajo y vas sacando los nodos =)

Creé un post http://www.utnianos.com.ar/foro/showthread.php?tid=5863
(Este mensaje fue modificado por última vez en: 04-03-2011 18:36 por leandrong.)
04-03-2011 18:35
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
batty Sin conexión
Profesor del Modulo A

*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 211
Agradecimientos dados: 1
Agradecimientos: 11 en 8 posts
Registro en: Mar 2010
Mensaje: #52
RE: [pedido]- final ALGORITMOS 19/02/2011
(04-03-2011 18:14)Lea escribió:  Bueno, como prometi ayer, aca esta mi solucion al final del 26/02/2011 (Adjunto).
Aclaro algunas cosas:
- No use sublistas, sino que use un corte de control por dia sobre listas.
- Como dijo Anirus, se puede usar solo el dia en el campo fecha y que de esta manera ocupe solo 1 byte, sin embargo a la hora de listar, me piden el campo entero, entonces para no complicarme la vida, use el campo fecha entero, total entra justo.
- Asumo que este final me resulto mucho mas dificil (y mas tiempo) que el del 19/02, no por la estrategia, sino por el corte de control por fecha.

Lo hice lo mas prolijo posible, obvio que no es la posta, pero puede llegar a funcionar =P. Espero comentarios!

Se agradece el aporte, bastante prolijo thumbup3

En el procedimiento ProcEs creo que en vez de hacer Info^.algo sería Info.algo porque el vector es arrE[n]^.Info.algo

El arrP lo incrementas en cada Entrada y también en cada Salida. Yo lo habia hecho que se incremente si era uno de los dos, interpreté que se suma 1 cuando se completa el movimiento de Entrar/Salir.

Después al final cuando imprimis las fechas y las horas, yo hice un procedimiento que las convierta de aaaammdd (longint) a dd/mm/aaaa (string[10]) y hhmm (word) a hh:mm (string[5])

Y no se si hay que convertir el nombre, porque al final de la tabla está escrito primero el Nombre y despues el Apellido, no como al principio de la tabla, capas se confundieron.. sino no se como invertirlo.
04-03-2011 18:44
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
LAUS Sin conexión
Campeon del cubo Rubik
:)
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 129
Agradecimientos dados: 52
Agradecimientos: 4 en 2 posts
Registro en: Jul 2008
Mensaje: #53
RE: [pedido]- final ALGORITMOS 19/02/2011
Gracias Lea! =D
04-03-2011 18:52
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Lea Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 20
Agradecimientos dados: 0
Agradecimientos: 1 en 1 posts
Registro en: Mar 2011
Mensaje: #54
RE: [pedido]- final ALGORITMOS 19/02/2011
(04-03-2011 18:35)leandrong escribió:  Cuál era el problema de la fecha??

Si sabés que los legajos van de 1 a 1000, Guardás todo lo que hizo cada empleado en su correspondiente legajo (o sea, índice del vector). Lo vas guardando por fecha y por hora que lo único raro de cuando insertás el nodo es:

(P <> NIL) AND (P^.INFO.FECHA < RINFO.FECHA OR (P^.INFO.FECHA = RINFO.FECHA AND P^.INFO.HORA < RINFO.HORA).

Ahí te lo ordena por fecha y hora. =) Y listo.

Después cuando recorrés cada empleado (que ya están ordenados) te metés en el vector según el índice de legajo y vas sacando los nodos =)

Creé un post http://www.utnianos.com.ar/foro/showthread.php?tid=5863

Si si, lo hicimos bastante parecido, exceptuando la parte de agregar los nodos, que por cierto tu forma es mas directa (y mejor) que la que hice, así que te la voy a robar =D.

(04-03-2011 18:44)batty escribió:  Se agradece el aporte, bastante prolijo thumbup3

En el procedimiento ProcEs creo que en vez de hacer Info^.algo sería Info.algo porque el vector es arrE[n]^.Info.algo

El arrP lo incrementas en cada Entrada y también en cada Salida. Yo lo habia hecho que se incremente si era uno de los dos, interpreté que se suma 1 cuando se completa el movimiento de Entrar/Salir.

Después al final cuando imprimis las fechas y las horas, yo hice un procedimiento que las convierta de aaaammdd (longint) a dd/mm/aaaa (string[10]) y hhmm (word) a hh:mm (string[5])

Y no se si hay que convertir el nombre, porque al final de la tabla está escrito primero el Nombre y despues el Apellido, no como al principio de la tabla, capas se confundieron.. sino no se como invertirlo.

También, pase por alto la forma de mostrar la fecha, supongo que es un detalle menor, pero de todas formas era mejor con tal procedimiento.

(04-03-2011 18:52)LAUS escribió:  Gracias Lea! =D

De nada =)

También se me ocurrió en un momento usar unix time, pasando todo a minutos, que es la unidad mas chica en este caso.
Ventajas: Seria un solo campo, 4 bytes solo ocuparía (en ves de los 4 + 2), habría menos comparaciones ya que a la hora de agregar a la lista se compara este campo solo.
Desventajas: Hay que hacer un procedimiento por cada fecha y hora pasando todo a minutos. A la hora de listarlo habría que hacer un procedimiento inverso.

Es una alternativa, no se si seria conveniente aplicarlo en este final.
04-03-2011 19:38
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
convicto27 Sin conexión
Militante
Sin estado :(
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 62
Agradecimientos dados: 1
Agradecimientos: 0 en 0 posts
Registro en: Oct 2009
Mensaje: #55
RE: [pedido]- final ALGORITMOS 19/02/2011
Buenas noches, necesito que me saquen una duda muy boluda, pero duda al fin.
En los vectores hay alguna funcion tipo "fileSize" (de lo archivos) para averiguar el tamaño maximo del vector???. Ya se que el vector se define antes y que tiene tamaño fijo, pero me agarro la duda poruqe por ejemplo en el ordenamiento del vector por burbujeo, se usa para limite superior del FOR "N-1", y ese N es el tamaño del vector.
Si me pueden sacar esta duda se los agradeceria muchisimo!!
Saludos!.
05-03-2011 21:13
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
batty Sin conexión
Profesor del Modulo A

*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 211
Agradecimientos dados: 1
Agradecimientos: 11 en 8 posts
Registro en: Mar 2010
Mensaje: #56
RE: [pedido]- final ALGORITMOS 19/02/2011
(05-03-2011 21:13)convicto27 escribió:  Buenas noches, necesito que me saquen una duda muy boluda, pero duda al fin.
En los vectores hay alguna funcion tipo "fileSize" (de lo archivos) para averiguar el tamaño maximo del vector???. Ya se que el vector se define antes y que tiene tamaño fijo, pero me agarro la duda poruqe por ejemplo en el ordenamiento del vector por burbujeo, se usa para limite superior del FOR "N-1", y ese N es el tamaño del vector.
Si me pueden sacar esta duda se los agradeceria muchisimo!!
Saludos!.

Te dejo una lista de comandos en pascal por si te interesa:
http://www.scribd.com/doc/45320888/Comandos-en-Pascal

Estuve probando estas dos en pascal:
SizeOf(); Si la usas para un vector, te devuelve el tamaño en bytes del mismo (cantidad de registros * tamaño en bytes de cada registro).
Length(); Esta función sí, te devuelve la cantidad de registros que tiene el vector.

thumbup3
05-03-2011 22:10
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
convicto27 Sin conexión
Militante
Sin estado :(
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 62
Agradecimientos dados: 1
Agradecimientos: 0 en 0 posts
Registro en: Oct 2009
Mensaje: #57
RE: [pedido]- final ALGORITMOS 19/02/2011
ahh, ahora que lo decis existia esa funcion Length!! es verdad!!, la curse hace como 3 años y no me acuerdo de nada de pascal ajajja.
Ahora te hago otra consulta, para asignarle el valor a la N durante el algoritmo, tengo que ponerle N<---5 (por ejemplo, para un vector que tenga 5 registros)?? o en el final no joden con la asignacion del valor de la N en el caso del ordenamiento por burbujeo???.
Sino la otra opcion para asigarle el valor seria poner N <--- length(vec) , no??.
Muchas gracias!!.
Saludos!
05-03-2011 23:16
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.163
Agradecimientos dados: 81
Agradecimientos: 232 en 78 posts
Registro en: Nov 2009
Mensaje: #58
RE: [pedido]- final ALGORITMOS 19/02/2011
Podés poner length(vec) en el FOR en vez de la N, no es necesario hacer una asignación a una variable. Igual en pascal creo que no podrías hacer un procedimiento de ordenamiento burbuja genérico, porque en la cabecera tiene que estar el tipo de parámetro y el tipo va a ser vector de X tamaño ya definido en la seccion type, no le podés pasar un vector a un procedimiento sin que sepa el tamaño que va a tener. Pero en C se puede, así que supongo que no te van a decir nada si lo hacés en el diagrama.
(Este mensaje fue modificado por última vez en: 06-03-2011 00:31 por Anirus.)
06-03-2011 00:11
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
leandrong Sin conexión
Secretario de la SAE
...
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 632
Agradecimientos dados: 180
Agradecimientos: 616 en 80 posts
Registro en: Sep 2008
Mensaje: #59
RE: [pedido]- final ALGORITMOS 19/02/2011
El diagrama del burbujeo que enseñan en Algoritmos necesita que le mandés la cantidad de campos que tienen información válida o el total (depende si está todo usado o no) del vector.
(Este mensaje fue modificado por última vez en: 06-03-2011 21:43 por leandrong.)
06-03-2011 21:32
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Sim Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Ing. en Sistemas


Mensajes: 37
Agradecimientos dados: 3
Agradecimientos: 0 en 0 posts
Registro en: Apr 2008
Mensaje: #60
RE: [pedido]- final ALGORITMOS 19/02/2011
Che si alguien me puede contestar unas preguntas medias tontas:

Cuando uso por ejemplo el procedimiento getDate (aaaa,mm,dd,ds), los parametros se concatenan directamente poniendolos uno al lado del otro, por ejemplo fecha <--- aaaammdd

Y la otra, estaba haciendo unos finales, resulta que necesito guardar una posicion de un archivo, si nose cuantos registros voy a tener, siempre elijo el tipo de dato mas grande que puede ( en bytes)
07-03-2011 05:47
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)