| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
beagle1
Registrado: 04 Nov 2005 Mensajes: 3
| Publicado: 19/11/2005 1:41 pm | | | Título: ALGORITMO (por favor alguna alma caritativa) |
| Escribo este correo ya que llevo dos semanas intentando hacer un algoritmo y no me salgo con él. El algoritmo dice lo siguiente:
"Un centro comercial dispone de una serie de Terminales de punto de venta TPV distribuidos en cada una de las diferentes secciones(deportes, hogar, ocio, perfumeria, etc). A la direccion de este centro le interesa conocer cierta informacion sobre las ventas diarias de los diferenes productos. en concreto quiere conocer: ¿cual es el producto que ha generado mas ingresos para cada uno de los TPV, indicando los ingresos que ha generado?¿cual es el TPV que ha generado mas ingresos en total y los ingresos que ha generado? Para esto se dispone de la informacion que van generando los TPV y que reflejan las ventas de un dia. Esta informacion es recogida en un ordenador central y se organiza como una secuencia con la estructura siguiente:
<IdTPV_1 IdProducte_11 Quantitat_11 PreuUnitari_11 IdProducte_12 Quantitat_12 PreuUnitari_12 ... IdProducte_1n1 Quantitat_1n1 PreuUnitari_1n1 -1 IdProducte_21 Quantitat_21 PreuUnitari_21 -1 ... -1 -2 IdTPV_2 IdProducte_11 Quantitat_11 PreuUnitari_11 IdProducte_12 Quantitat_12 PreuUnitari_12 ... IdProducte_1n1 Quantitat_1n1 PreuUnitari_1n1 -1 IdProducte_21 Quantitat_21 PreuUnitari_21 -1 ... - 1 -2 … -1 -2 -3>
Las ventas estan organizadas por TPV y dentro de cada TPV por tiquets. Cada tiquet refleja la informacion de los productos facturados: producto, cantidad y precioo unitario. Los diferentes bloques de informacion estan delimitados por codigos especiales: -1 para indicar el final de un tiquet, -2 para indicar el final de todos los tiquets de un TPV y -3 para indicar el final de todos los TPV y por tanto de la secuencia.
En concreto, la información que encontramos en la secuencia es la siguiente: IdTPV_i : es un entero positivo, mas grande que 0, que identifica un TPV. IdProducte_ij : es un entero positivo, mas grande 0, que indica el codigo del producto. Quantitat_ij : és un entero que indica la cantitat vendida del producto IdProducte_ij. Podria ser negativo, para indicar una devolución. PreuUnitari_ij : és el precio unitario del producte IdProducte_ij.El precio esta expresado en euros, con dos decimales para los centimos. d’euro.
Cabe destacar tambien que: 1.-Habra un maximo de 20 TPV funcionando en el centro, pero no siempre todos ellos estaran abiertos. De hecho los dias festivos se recoge una secuenciadonde no hay ningun TPV funcionanado. Los codigos de los TPV son fijos pero no consecutivos. 2.-En cada TPV se venden un maximo de 100 productos diferentes. 3.-Cada TPV puede generar un numero indeterminado de tiquets de caja. Tambien puede pasar que no genere ninguno. 4.-Cada tiquet de caja puede contener un numero indeterminado de productos vendidos, pueden haber productos repetidos y anulaciones. 5.-El sistema no permite entradas erroneas, como valores negativos,etc..
Entonces piden generar una secuencia de salida de acuerdo con la esturctura siguiente:
<IdTPVMax Ingres IdTPV1 Id1 Ingres1 IdTPV2 Id2 Ingres2 ... IdTPVn Idn Ingresn 0>"
Esto es todo. Si alguién me puede ayudar por favor hacerlo,estoy desesperado. Estoy dispuesto a pagar a quien sea por este algoritmo, puedo llegar hasta los 100 €. Lo necesito para mañana. Si alguién quiere tambien me lo puede enviar a . Muchas gracias a todos. _________________ Josepa |
| | Volver arriba | |  | dondolino
Registrado: 22 Nov 2005 Mensajes: 4
| Publicado: 22/11/2005 2:17 pm | | | Título: |
| Hola a todos, pués yo venia a plantear la misma duda que ya estaba planateada, pero doi un principio de la solución. Bueno en esto de la informatica llevo hace bien poco, pero cada vez estoy más enganchado, y eso que nunca me han gustado los números, pués la programación me xifla... Bueno la questión es que tengo una práctica, y no se muy bien como plantear el algoritmo. Os copio el enunciado,perdón por la extensión, pero es que es muy importante para mi. Y muchas gracias de antemano.
PRÀCTICA – Enunciat
Un centre comercial disposa d'una sèrie de Terminals Punt de Venda (TPV) distribuïts en cada una de les diferents seccions del centre (esports, llar, oci, perfumeria, etc.). A la direcció d'aquest centre li interessa conèixer certa informació sobre les vendes diàries dels diferents productes. En concret, volen conèixer: Quin és el producte que ha generat més ingressos per a cadascun dels TPV, tot indicant els ingressos que ha generat. Quin és el TPV que ha generat més ingressos en total; i els ingressos que ha generat. Per a això, es disposa de la informació que van generant els TPV i que reflecteix les vendes realitzades en un dia. Aquesta informació és recollida en un ordinador central i s’organitza com una única seqüència amb l’estructura següent: <IdTPV_1 IdProducte_11 Quantitat_11 PreuUnitari_11 IdProducte_12 Quantitat_12 PreuUnitari_12 ... IdProducte_1n1 Quantitat_1n1 PreuUnitari_1n1 -1 IdProducte_21 Quantitat_21 PreuUnitari_21 -1 ... -1 -2 IdTPV_2 IdProducte_11 Quantitat_11 PreuUnitari_11 IdProducte_12 Quantitat_12 PreuUnitari_12 ... IdProducte_1n1 Quantitat_1n1 PreuUnitari_1n1 -1 IdProducte_21 Quantitat_21 PreuUnitari_21 -1 ... - 1 -2 … -1 -2 -3> Les vendes estan organitzades per TPV i, dins de cada TPV, per tiquets. Cada tiquet reflecteix la informació dels productes facturats: Producte, Quantitat i Preu Unitari. Els diferents blocs d'informació estan delimitats per codis especials: -1 per indicar el final d’un tiquet, -2 per indicar el final de tots els tiquets d’un TPV i -3 per indicar el final de tots els TPV i, per tant, de la seqüència. En concret, la informació que trobem a la seqüència es correspon a: IdTPV_i : és un enter positiu, més gran que 0, que identifica un TPV. IdProducte_ij : és un enter positiu, més gran 0, que indica el codi del producte. Quantitat_ij : és un enter que indica la quantitat venuda del producte IdProducte_ij. Podria ser negatiu, per indicar una devolució. PreuUnitari_ij : és el preu unitari al qual es va vendre el producte IdProducte_ij. El preu està expressat en euros, amb dos decimals pels cèntims d’euro. Cal destacar també que: - Hi haurà un màxim de 20 TPV funcionant en el centre, però no sempre tots ells estan oberts (de vegades hi ha seccions tancades per inventari, canvi de decoració o altres motius). De fet, com que les dades es recullen de forma automàtica, en els dies festius es recull una seqüència on no n’hi ha cap TPV funcionant. Els codis del TPV són fixos, però no consecutius. Prac_FP_Tard05_Enunciat.doc 12/11/05 2 de 3 - En cada TPV es venen un màxim de 100 productes diferents, però solen ser menys. Ara bé, els productes venuts en cada TPV poden o no ser diferents dels dels altres TPV. A més, entre tots els TPV hi poden haver diversos centenars de productes a la venda. - Cada TPV pot haver generat un número indeterminat de tiquets de caixa. També pot no haver-ne generat cap (per exemple, si el TPV s’ha obert per fer-hi tasques de manteniment, però estava tancat al públic). - Cada tiquet de caixa pot contenir un nombre indeterminat de productes venuts. També n’hi poden haver de repetits i anul·lacions. Fins i tot podria haver-hi tiquets buits, corresponents a tiquets iniciats, en el qual el client decideix no fer la compra en el darrer moment. - El sistema no permet entrades errònies, com valors negatius per als identificadors, valors massa grans, tipus de dades incorrectes, etcètera. Per tant, no cal comprovar la validesa de les dades de la seqüència d’entrada. Així doncs, se us demana que genereu una seqüència de sortida d'acord a l'estructura següent: <IdTPVMax Ingres IdTPV1 Id1 Ingres1 IdTPV2 Id2 Ingres2 ... IdTPVn Idn Ingresn 0> La seqüència comença amb IdTPVMax i Ingres, on IdTPVMax és l'identificador del TPV amb els ingressos màxims, i Ingres, aquesta quantitat màxima. La seqüència continua amb un seguit de ternes [IdTPVi Idi Ingresi] on s'indica, per al TPV identificat per IdTPVi, que el producte amb identificador Idi és el que ha generat més ingressos. Aquests ingressos són iguals a Ingresi. Finalment, la seqüència acaba amb un 0, que és la marca de final. Punts a tenir en compte: En el cas que hi hagi diversos productes per a un mateix TPV amb el mateix ingrés màxim, podeu posar a la seqüència de sortida l’identificador de qualsevol d’ells. Igualment, si hi ha més d’un TPV amb el mateix ingrés total màxim, es pot donar l’identificador de TPV de qualsevol d’ells. En cap cas els ingressos totals d’un TPV seran negatius. Hi pot haver TPV per als que no hi hagi cap tiquet. Llavors, aquests TPV no han d’aparèixer a la seqüència de sortida. Tampoc no han d’aparèixer a la sortida els TPV on els ingressos siguin 0, encara que tinguin tiquets. Si la seqüència no té dades vàlides, només cal escriure a la sortida el 0 que marca el final de la seqüència. Exemple: Suposem que l’entrada és formada per la següent seqüència (per a més claredat, els TPV s’han identificat per colors, i les ternes producte-quantitat-preu unitari s’han subratllat): <1 100 2 11,95 2453 1 0,95 100 1 11,95 -1 -2 13 -2 20 137 1 299,95 -1 -1 137 -1 299,95 -1 -2 6 345 2 9,95 -1 100 1 11,95 -1 150 3 5,95 -1 -2 -3> El TPV de codi 1 presenta 1 sol tiquet de caixa amb tres vendes: s’han venut 3 productes de codi 100, a 11,95€ cadascun, i un producte de codi 2453 a 0,95€; el producte amb més ingressos és el de codi 100, amb 35,85€, i el total de totes les vendes és de 36,80€. El TPV de codi 13 no Prac_FP_Tard05_Enunciat.doc 12/11/05 3 de 3 té tiquets i, per tant, no apareix a la sortida. Tampoc no ha d’aparèixer el TPV amb codi 20, ja que els seus ingressos totals són nuls (només té una venda, un tiquet buit, i la anul·lació de la venda anterior). Finalment, el TPV de codi 6 presenta 3 tiquets de caixa amb una sola venda en cadascun d’ells; el producte amb més ingressos és el de codi 345 amb 19,90€, i el total de les vendes és de 49,7€. Per tant, el TPV que més ha ingressat és el de codi 6. Amb aquesta entrada l’algorisme haurà d’escriure per la sortida estàndard: <6 49,70 1 100 35,85 6 345 19,90 0>
la declaración de tipos:
const MAX_PRODUCTES: enter=100; MAX_TPV: enter=20; FINAL_SEQUENCIA: enter=-3; FINAL_TPV: enter=-2; FINAL_TIQUET: enter=-1; FINAL_SEQ_SORTIDA: enter=0; fconst tResultatTPV=tupla idTPV: enter; idProducteMesIngressos: enter; ingressosProducteMesIngressos: real; ftupla tResultats=tupla idTPVMesIngressos: enter; ingressosTPVMesIngressos: real; resultatTPV: taula[MAX_TPV] de tResultatTPV; nTPV: enter; {Quants TPV tenim = quantes posicions de la taula tenen inf. } ftupla tProducte=tupla idProducte: enter; ingressos: real; ftupla tProductesTPV= tupla producte: taula[MAX_PRODUCTES] de tProducte; nProductes: enter; {Quants prods tenim = quantes pos. de la taula tenen inf. } ftupla
Vale pos el algoritmo que yo he planteado:
algorisme TPV
var productesTPV : tProductesTPV Resultats : tResultatsTPV id: enter
fvar {aplicamos un sitema que recorra para identificar que TPV entra i valores}
incialitzarProductesTPV(productesTPV) {inicializo a cero cada los valores cada vez que me llega un TPV nueva} id:=lleguirEnter(); {leo la id que identifica la TPV} mentre i (diferente) FINAL_SEQ_SORTIDA fer tractarTPV(id, productesTPV) {trato los datos de entrada y los almaceno en las tablas} id:=lleguirEnter();
fmentre
mostrar resultat (aki tendria que hacer servir las tablas de resultats de)
y ya finalizar!!!!
No se como lo veis???, no pido solución solo sugerencias sobre el planteamiento, que veis y que no. Bueno me despido, con la esperanza de llegar a vuestro nivel con el tiempo. Muchas gracias. |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |