Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 8 odgovora
  • 3.232 pregleda

Najnovija ↓

Petlja for ili while problem 11.04.2013. u 01:36 · pre 165 meseci #1
Pozdrav ljudi,

Imam problem što nemogu shvatiti na koji način da kreiram ovu petlju. Naime uradio sam sve sa if ali da nebi pisao još 100 ifova moram riješiti na drugi način i to izgleda ovako:
nosivost predstavlja tonu znači 16000 je 16 tona, a PUTATINA1 predstavlja novac to govorim radi lakšeg razumjevanja problema.


If nosivost > 14999 And nosivost < 16000 Then
PUTARINA1 = 480
End If
If nosivost > 15999 And nosivost < 17000 Then
PUTARINA1 = 520
End If


Sad slijedi problem kaže " za svaku tonu iznad 17 dodaj na PUTARINA1 40 maraka"

Što znači kad bi ja sad unio u formi u polje nosivost broj 20332, u PUTARINA1 bi mi trebala iznositi 680 jer je to 4 tone preko 17, a 4*40= 160 i plus ovih zadnjih 520 dobijemo taj broj.

Pokušao sam na razne načine for i while ali nisam uspio jer nemogu zamisliti kako definisati problem.
Potpis
My life is you Halima.

Rent a car Tuzla
Osiguranje
Rent a car Servis
SEO Usluge
Smještaj u Tuzli
Kupoprodajna mreža
Re: Petlja for ili while problem 11.04.2013. u 06:50 · pre 165 meseci #2
Ne razumem zasto bi koristio petlju, mislim da bi to mogao ovako da odradis:

Code:
If nosivost > 14999 And nosivost < 16000 Then
    PUTARINA1 = 480
ElseIf nosivost > 15999 And nosivost < 17000 Then
    PUTARINA1 = 520
ElseIf nosivost > 16999 Then
    PUTARINA1 = 520 + (Int((nosivost - 17000) / 1000) + 1) * 40
End If
Potpis
[email protected]=
Re: Petlja for ili while problem 11.04.2013. u 12:56 · pre 165 meseci #5
Evo primer za Select Case

Code:
Select Case nosivost
    Case 14999 To 15999
        PUTARINA1 = 480
    Case 16000 To 16999
        PUTARINA1 = 520
    Case Is > 16999
        PUTARINA1 = 520 + (Int((nosivost - 17000) / 1000) + 1) * 40
End Select



Potpis
[email protected]=
Re: Petlja for ili while problem 11.04.2013. u 15:43 · pre 165 meseci #6
Umesto da kodirate potencijalno promenljive vrednosti, zasto ne napravite lookup tabelu. Ovako nekako:
Tablea: tblPutarina_LKP
Code:

NosivostOd, NosivostDo, Putarina
14999         15999           480
16000        16999            520
16999        999999             -1



Pseudo code:
Code:

dim PutarinaIzTabele deciml
DIM Putarina1 decimal

PutarinaIzTabele  = dlookup("Putarina","tblPutarina_LKP", cstr(me!Nosivost) & " BETWEEN [NosivosOd] AND [NosivostDo]")

If PutarinaIzTabele  = -1 THEN
        PUTARINA1 = 520 + (Int((me!nosivost - 17000) / 1000) + 1) * 40
ELSE 
        Putarina1 = PutarinaIzTabele  
ENDIF


Na ovaj nacin sebi omogucujete da se putarina menja kroz vreme, pa i granice nosivosti, a da ne morate da prepravljate kod kad se to desi. Putarina se ne manja bas svaki dan, ali se menja. Granice se menjaju jos redje, ali je moguce. Problem je sto kad se to desi, ko zna ko ce odrzavati program i program moze da se zaglavi i stane samo zato sto u tom momentu niko vise ne zna kakao da promeni kod.

:-)
Re: Petlja for ili while problem 11.04.2013. u 23:21 · pre 165 meseci #7
Svaka čast i hvala momci,

ovdje se stvarno za jedan dan može mnogo novoga naučiti, svaka od vaših metoda radi perfektno i poslužit će mi u mnogim budućim situacijama, sad je samo ostalo kao i svaki put da vam se još jednom zahvalim, hvala na primjerima i dijelenju znanja!
Potpis
My life is you Halima.

Rent a car Tuzla
Osiguranje
Rent a car Servis
SEO Usluge
Smještaj u Tuzli
Kupoprodajna mreža
Re: Petlja for ili while problem 15.04.2013. u 11:20 · pre 164 meseca #8
Idem malo cjepidlačiti :)

Kada već parametriziramo, bilo bi zgodno uvaliti i onaj *40 u tablicu, npr. dodati jednu kolonu "Mnozitelj", pa bi tabela izgledala ovako:

Citat:
Zidar: Umesto da kodirate potencijalno promenljive vrednosti, zasto ne napravite lookup tabelu. Ovako nekako:
Tablea: tblPutarina_LKP
Code:

NosivostOd, NosivostDo, Putarina, Mnozitelj
14999         15999           480   ,  1
16000        16999            520   ,  1
16999        999999             -1  ,  40

Potpis
F
Re: Petlja for ili while problem 15.04.2013. u 19:02 · pre 164 meseca #9
Captai is right :-)

U stvari, celu formulu bi trebalo preradiati:

PUTARINA1 = 520 + (Int((me!nosivost - 17000) / 1000) + 1) * 40


520: A = MAX ("Putarina","tblPutarina_LKP","Putarina <> -1" )

17000: B = 1 + MAX("NosivostOd","tblPutarina_LKP")

Mnozitelj: M = MAX("Mnozitelj", "tblPutarina_LKP", "Putarina = -1" )


Ono 1000 je verovatno konstanta sa opravdanim razlogom, a ostalo mzoe da se izracuna, koristeci tabelu sa prosirenom strukturemo, onako kako je Captain uradio.

Formula bi onda bila:

PUTARINA1 = A+ (Int((me!nosivost - B) / 1000) + 1) * M


Ako neko ume da skine i ono 1000, bilo bi dobro, ali izgleda da ne mora jer to verovatno pretvara kilograme u tone?

:-)
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme