Mike Hildner - 1 year ago 100
C# Question

# Determine rows/columns needed given a number

I've got a number of controls (charts in this case) that's determined at runtime. I'd like to put these in a grid with the proper number of rows and columns. For example,

• 4 items = 2 x 2

• 8 items = 4 x 2

• 9 items = 3 x 3

• 20 items = 5 x 4

• 11 items = 4 x 3 (I don't care about an empty cell)

Sorry, I don't really have any code to show my attempts. I started playing with determining if the square root is an integer, if the number is evenly divisible by 2 etc. and realized I'm not sure how to attack this problem. But this is what I'm thinking:

• If the square root is an integer, use the square root for the number of rows and columns (no problems there)

• If not, make sure the number is even (add one if you have to - no problems there)

• Find the highest two integers that produce the number. e.g. If I have 20 controls, the grid should be 5 x 4 and not 10 x 2 (not really sure the best way for this)

I'd appreciate it if someone could point me in the right direction - or suggest a different algorithm if I'm way off base.

``````int columns = (int)sqrt(number);