[?] hladam vhodny algoritmus na riesenie problemu

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod mavin 2. 2. 2006 14:27

Mam nasledovny problem, ktory potrebujem vyriesit. Existuje objednavkovy system na napoje z automatu a cena za jeden napoj sa zakaznikovy (zamestnancovi - tento system bezi v ramci firmy) vypocitava na konci obdobia (mesiac). Ide o to, ze cena za napoj zavisi od poctu automatom vydanych napojov:
- do 500 napojov - cena za jeden napoj 10 Sk
- od 500 do 1000 napojov - cena za jeden napoj 9 Sk
- od 1000 do 2000 napojov - cena za jeden napoj 7,50 Sk
nad 2000 - cena za jeden napoj 6 Sk
Problem nastava teraz, ze treba vypocitat a urcit system akym sa bude zakaznikovy vypocitavat cena za vsetky za mesiac odobrate napoje a to takym sposobom, ze zakaznici budu rozdeleny do kategorii:
- do 20 napojov
- od 20 do 40 napojov
- od 40 do 60 napojov
nad 60 napojov
Na zaklade tohto treba urcit system ktory by preferoval nizsiu cenu za napoj u velkooodberatolov (tato cenova vyhoda by bolo postupne rovnomerne znizovana. Konecny efekt by mal byt taky, ze ak sa v automate vyda napr. 3000 napojov (cize jeden = 6 Sk) tak ten kto ich vypil napriklad 100 ich bude mat za 5 Sk/kus a ten kto vypil iba dva ich bude mat napriklad za 7,50). A vsetci v kategoriach medzi nimi, by to mali odstupnovane... Vysledny poplatok za vsetkych by vsak mal cinit 3000x6 = 18000 Sk. Dufam, ze som problem predostrel zrozumitelne... Za akekolvek napady a postupy ako to riesit a najlepsie aj nacrty algoritmov vopred dakujem.
mavin
Junior
Uživatelský avatar

Odeslat příspěvekod abcabc 2. 2. 2006 15:18

dalo by se to resit treba takhle:

1. spocitat celkovou cenu (suma)

2. zavest nakou tabulku (asi pevne dana), ktera pro ruzne intervaly urcuje "relativni ceny" vzhelem k jinym intervalum... napr.

do 20 napojov ... 100% (cena1)
od 20 do 40 napojov ... 90% (cena2=0.9*cena1)
od 40 do 60 napojov ... 80% (cena3=0.8*cena1)
nad 60 napojov ... 70% (cena4=0.7*cena1)

3. vypocitat hodnotu cena1, aby to celkove vyslo

cena1 = suma /
(celkovy pocet napoju spotrebovanych zakazniky v 1. intervalu * 1 +
celkovy pocet napoju spotrebovanych zakazniky v 2. intervalu * 0.9 +
... )

4. z ceny1 dopocitat zbyle ceny

5. vse nak rozumne zaokrouhlit (asi nahoru :-))
abcabc
Junior


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků