• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 324
  • Last Modified:

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




0
ross13
Asked:
ross13
  • 2
  • 2
1 Solution
 
NeuropsykopatCommented:
seems that you need to divide with 40


3125 / 40 = 78,125

superior rounding to 79


0
 
wdosanjosCommented:
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

0
 
Mike TomlinsonMiddle School Assistant TeacherCommented:
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."
0
 
Mike TomlinsonMiddle School Assistant TeacherCommented:
*Obviously this doesn't account for an extra pallet needed for any remaining cartons.

You can use the Mod operator to find out if there are any remaining cartons:

    Dim pallets As Integer = (cartons \ cartonsPerPallet) + IIf(cartons Mod cartonsPerPallet > 0, 1, 0)


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

if (cartons Mod cartonsPerPallet >0)
pallets += 1;
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now