ross13
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
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
As @Neuropsykopat already indicated, it would be something like this:
Output:
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)
Output:
Pallets required: 79
You can also use "Integer Division" to get the number of pallets like this:
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."
Dim cartonsPerPallet As Integer = 40.0
Dim cartons As Integer = 3125
Dim pallets As Integer = cartons \ cartonsPerPallet ' <-- Integer Division!
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
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
pallets = CType(Math.Ceiling(cartons / cartonsPerPallet), Integer)
if (cartons Mod cartonsPerPallet >0)
pallets += 1;
if (cartons Mod cartonsPerPallet >0)
pallets += 1;
3125 / 40 = 78,125
superior rounding to 79