UTNianos

Versión completa: Final 1-12-2012
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2
Bueno gente voy a aportar a la causa ya que me sirvió bastante este foro para aprobar la materia.

El final si pueden subanlo, habia muchas soluciones, pero les comento lo que hice yo y me aprobaron:

Para mi gusto el final era bastante largo, de hecho nos dieron 2 horas y cuarto para hacerlo.

De memoria estatica sino me equivoco nos daban 2000 bytes y memoria dinámica nodos de 25 byte.

Lo que hizo yo fue hacer una matriz con los venderos y los código de modelo, que contenía 3 campos: pos vendedor, por modelo, cantidad de ventas y una lista de clientes (por cada nodo tenía la descripción del cliente y siguiente, esto va en una lista por que no sabiamos cuandos clientes había)

Despues hice dos vectores, para meter los archivos vendedores y modelos que estaban desordenados.

Estrategia:
1- Abrí los archivos
2- Inicializé las estructuras (la matriz y los dos vectores)
3- Cargue los vectores de vendedores y modelos con la info ordenada de los archivos vendedores y de modelos que estaban sin orden
4-Hice un corte de control por fecha de factura (por que el archivo ventas estaba ordenado por factura y me pedía emitir un lista por cada fecha)
Por cada factura cargaba la matriz, para ello incrementaba la cant de ventas, hacía una busqueda binaria en el vector de vendedores por el id del registro ventas que estaba leyendo (eso lo podía hacer ya que la info del archivo vendedores estaba ordenada en el vector, para eso habia hecho ese vector), y guardaba la posicion del vector en la matriz, lo mismo con el modelo, y llenaba la lista de clientes con la info del registro de ventas.
5-Cuando terminaba cada factura buscaba la máxima fecha donde se había vendido mas (para eso tenia un contador de cantidad de ventas que se iba incrementando en el corte de control por fecha)
6- Cada vez que terminaba cada factura emitía el listado recorriendo la matriz y sacando la info de ahí.
7- Hice una búsqueda del mínimo con el campo de cantidad que es el que había colocado en la matriz para ver cual era el cliente con menos cantidad de visitas.
8- Imprimí el máximo de las fechas donde se habían vendido mas ver punto 5
9-cerré los archivos


Bueno esa fue mi resolución mi amiga no hizo los vectores sino una matriz con una lista de sublistas.

Besos!
perfecto gracias, les recomiendo que lo practiquen de todas formas no creo que el de la siguiente ficha sea tan dificil
Alguien concuerda con que fue bastante dificil ?
El problema no es que sea dificil porque no lo fue.
El problema es que a nadie le gustan las matrices, y que en todo el año debemos hacer 2 ejercicios como mucho (así fue cuando la cursé)
Igual no lo vi bien, pero sin matriz capaz también sale
Lo que pasa es que al estar esos dos archivos sin orden, es más feliz una matriz
Yo coincido con vos, piden algo que nadie nunca usa... y de la nada tener dos horas para pensar eso, se pone dificil.
Es que sí.
Y es un tema que ya vi en varios finales.
Si te va a tomar con recurrencia, estaría bueno que se ejercite más en la cursada

De hecho, en la guía de Laborero no hay más de 3 ejercicios con eso
Y en la guía de módulos tampoco, hay re pocos

Estaría copado que haya un mini módulo de ejercicios integradores (un par más de los que hay)
yo personalmente usé una sola vez la matriz en la cursada, y de hecho no me acordaba bien tuve que pensar mucho a la hora de hacerlo por que no había praticado con matrices, personalmente igual para mi si fue difícil, ya que después de haber practicado como veinte finales estaba afilada y este lo tuve que pensar bastante mas no solo por las matrices sino por que había que combinar varias estructuras de datos, eran muchos procedimientos y funciones los que habían que hacer; nose si se podía hacer sin matriz, lo que si se podía hacer era una matriz con lista y sublistas, pero debe haber muchas mas formas de hacerlo, igual el tiempo me alcanzo bien, pero hice 10 carrillas de procedimientos y funciones y ahí se iba mucho tiempo.
No era difícil, era extenso, me llevo 3/4 de hora encontrar alguna manera de hacer las estructuras y ver como resolver por lo que no me alcanzo el tiempo. Me quedaron 2 o 3 procedimientos sin hacer, por suerte eran los sencillos sino no aprobaba. Con una matriz de clientes x modelos y con punteros en su interior se resolvía fácil, pero como no se me ocurrió use listas, sublistas y otra lista mas en esta, lo que hizo que las asignaciones se hagan muy largas y engorrosas.
Era bastante llenito, tenia un poco de todo matriz, vector, lista, corte de control. También daba amplias maneras de resolverlo, creo que la estructura mas adecuada es la siguiente

[Imagen: finalestructura.jpg]

De esta manera esta ordenado por vendedor y modelo, y con acceso directo obtenes nombres y detalles. La fecha no hay problema porque se hace un corte de control y cuando se cambia de fecha se muestra todo y se vacían las listas.
Acá hay un video en el que Pablo Szn. resuelve un final con matrices, bastante parecido, creo...

http://www.youtube.com/watch?v=GNQJYQowHeA
A mi se me ocurre otra forma de hacerlo sin matrices, aunque ni idea si está bien:

Un vector de modelos, con idModelo y Descripción: (450b)
Un vector de vendedores con IdVendedor, ApellidoNombre, cantidad de vendidos y una lista de modelos (270b), que tiene idModelo, fecha y una sublista (15b) en donde van los nombres de los clientes que compraron ese modelo (25b), esa fecha, a ese vendedor.

1) Abro archivos e inicializo vectores
2) Cargo los dos vectores y los ordeno por idVendedor e idModelo
3) Leo el archivo de ventas y cada registro que leo me fijo primero si el vendedor ya vendió ese modelo en esa fecha, si ya vendió, lo unico que hago es agregar un nodo a la sublista con el nombre del cliente, si no, creo un nodo nuevo en la lista y uno nuevo en la sublista.
Asi hasta que termine de con todo ventas.dat (voy actualizando la cantidad de vendidos de cada usuario)
4) Recorro el vector de vendedores y voy haciendo el listado por mes, tengo todo ahí salvo la descripción del modelo, que la tengo en el vector de modelos. A su vez voy guardando en una variable la cantidad de ventas maxima por día y la fecha del dia con max ventas.
5) Cierro archivos

No se si estará bien o si me estaré olvidando de algo, solamente pensé la estrategia y no hice los diagramas, ahora me voy a poner a ver si me trabo en alguna parte.
yo pense lo de la matriz con listas ,era lo mas facil, y cuando cortabas obtenias el ordenamiento por fecha
(14-12-2012 19:46)Marvelek escribió: [ -> ]A mi se me ocurre otra forma de hacerlo sin matrices, aunque ni idea si está bien:

Un vector de modelos, con idModelo y Descripción: (450b)
Un vector de vendedores con IdVendedor, ApellidoNombre, cantidad de vendidos y una lista de modelos (270b), que tiene idModelo, fecha y una sublista (15b) en donde van los nombres de los clientes que compraron ese modelo (25b), esa fecha, a ese vendedor.

1) Abro archivos e inicializo vectores
2) Cargo los dos vectores y los ordeno por idVendedor e idModelo
3) Leo el archivo de ventas y cada registro que leo me fijo primero si el vendedor ya vendió ese modelo en esa fecha, si ya vendió, lo unico que hago es agregar un nodo a la sublista con el nombre del cliente, si no, creo un nodo nuevo en la lista y uno nuevo en la sublista.
Asi hasta que termine de con todo ventas.dat (voy actualizando la cantidad de vendidos de cada usuario)
4) Recorro el vector de vendedores y voy haciendo el listado por mes, tengo todo ahí salvo la descripción del modelo, que la tengo en el vector de modelos. A su vez voy guardando en una variable la cantidad de ventas maxima por día y la fecha del dia con max ventas.
5) Cierro archivos

No se si estará bien o si me estaré olvidando de algo, solamente pensé la estrategia y no hice los diagramas, ahora me voy a poner a ver si me trabo en alguna parte.

sisi hasta ai todo lindo pero cuando insertas los nodos tenes q insertarlos ordenados o hacer algo porq tenes q tenerlo ordenado x 3 campos no te olvides de eso.. jajaja suerte
veo que la fecha en el punto 2 te la piden de tipo byte, deberia ser de tipo longint
Que es la Clave en el procedimiento este?

Procedure ordenarVector(var Vector: tipoVector; Clave: tipoInfo;N: Entero)
Páginas: 1 2
URLs de referencia