Link to home
Start Free TrialLog in
Avatar of ross13
ross13Flag for United Kingdom of Great Britain and Northern Ireland

asked on

vb.net application logic

Hi,

I was wondering if someone is able to help with the logic for an application.
I am currently looking at an application within the company that has received an error.
The issue is to do with the original coding as a case statement that the parameter has exceeded.
The application is coded in vb.net and needs to work out the number of pallets that should be used based on a quantity of cartons (for shipments).
I spoke to the warehouse and they said the following logic is used:

14 -40 cartons = 1 pallet
41- 80 cartons = 2 pallets
81 – 120 cartons = 3 pallets

And so on ………

14 -40 cartons = 26 cartons = 1 pallet
41- 80 cartons = 39 cartons = 2 pallets
81 – 120 cartons = 39 cartons = 3 pallets
…..

I did think about trying to divide but if for example you took:
3125 / 39 = 81 this is not correct

a case statement exists and a quantity of 79 pallets should be used.

I am not sure what the best way of coding this would be? Any help would be appreciated.

Regards,

Ross




Avatar of Neuropsykopat
Neuropsykopat
Flag of France image

seems that you need to divide with 40


3125 / 40 = 78,125

superior rounding to 79


As @Neuropsykopat already indicated, it would be something like this:

Dim cartonsPerPallet As Double = 40.0
Dim cartons As Integer = 3125

Dim pallets As Integer

pallets = CType(Math.Ceiling(cartons / cartonsPerPallet), Integer)

Console.WriteLine("Pallets required: {0}", pallets)

Open in new window


Output:
Pallets required: 79

Open in new window

Avatar of Mike Tomlinson
You can also use "Integer Division" to get the number of pallets like this:  
Dim cartonsPerPallet As Integer = 40.0
Dim cartons As Integer = 3125

Dim pallets As Integer = cartons \ cartonsPerPallet ' <-- Integer Division!

Open in new window


Note that the slash is a BACKSLASH "\", as opposed to normal division with a forward slash "/".

See "\ Operator (Visual Basic)":
http://msdn.microsoft.com/en-us/library/0e16fywh.aspx

    "Divides two numbers and returns an integer result."

    "The result is the integer quotient of expression1 divided by expression2, which discards any remainder and retains only the integer portion. This is known as truncation."
ASKER CERTIFIED SOLUTION
Avatar of Mike Tomlinson
Mike Tomlinson
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
pallets = CType(Math.Ceiling(cartons / cartonsPerPallet), Integer)

if (cartons Mod cartonsPerPallet >0)
pallets += 1;