/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

ALGORITMO (por favor alguna alma caritativa)

 
      Índice del Foro elrincondelc.com -> Algoritmos
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
beagle1



Registrado: 04 Nov 2005
Mensajes: 3

MensajePublicado: 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

MensajePublicado: 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
      Índice del Foro elrincondelc.com -> Algoritmos
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com