Solved

# Urgent Case! -  the best combination of dividers '22' and '30' which divide a certain number with the smallest remainder

Posted on 2004-04-23
283 Views
Hi,
Urgently Can I have some VB code so that if I enter a certain number, say '203', then the program can find out
the best combination of dividers '22' and '30' with the smallest remainder'
Example:

Enter "203"

Output:
30 x (6) + 22 X (1) => remainder is 1

I want to output '6' and '1' in the program.
0
Question by:starstarhk
• 8
• 8
• 2
• +1

LVL 12

Expert Comment

ID: 10906418

201x1+1x1
0

Author Comment

ID: 10906423
I need '30' and '22' to be my divider
30 and 22 must be used for calculation
0

Author Comment

ID: 10906426
the remainder must be the smallest in all cases of combinations
0

LVL 50

Expert Comment

ID: 10906455
Try:

myvalue = 203
divider1 = Int(myvalue / 30)
tmp = myvalue Mod 30
divider2 = Int(tmp / 22)
MsgBox "divider1 = " & divider1 & ", divider2 = " & divider2

?
0

Author Comment

ID: 10906466
the number '30' doesn't have a priorty that the myvalue must not be always divided by it first.
The system must analyze in which combination is the best with the smallest remainder or no remainder
0

LVL 50

Expert Comment

ID: 10906498
>>the number '30' doesn't have a priorty that the myvalue must not be always divided by it first.
of course, you can put 30 and 22 into variables, in order to meet your requirement
0

Author Comment

ID: 10906519
how about if the input day is '67'

The best combination should be '22 * (3)' with remainder '1'

but the program generated '30 * (2)' with remainder '7'

remainder '1' should be chosen.....
0

LVL 9

Accepted Solution

p_sie earned 30 total points
ID: 10906593
Dim divider1(2),divider2(2),tmp(2)

divider1(1) = Int(myvalue / 30)
tmp(1) = myvalue Mod 30
divider2(1) = Int(tmp(1) / 22)

divider1(2) = Int(myvalue / 22)
tmp(2) = myvalue Mod 22
divider2(2) = Int(tmp(2) / 30)

if myvalue - divider1(1) * 30 - divider2(1) * 22 < myvalue - divider1(2) * 22 - divider2(2) * 30
MsgBox "divider1 = " & divider1(1) & ", divider2 = " & divider2(1)
else
MsgBox "divider1 = " & divider1(2) & ", divider2 = " & divider2(2)
endif
0

Author Comment

ID: 10906744
Hi, there is another case...

I want to have combination of dividers '22' and '30' and this time I want to avoid any remainder..
for example if the input is 23, then the old answer is that remainder is 1,
Now I want it to become 30, then if the input is 31, then I want it to become '22x2' = 44
......
so if the input is 206, then the answer should be 22x8+30 = 206
then if the input is 205, then the answer still should be 22x8+30 = 206
The criteria is that I need to have a combination with no remainder which is the closest to the input number.

This is a very difficult task for me.....
0

LVL 9

Expert Comment

ID: 10906765
Did my solution to your first problem (this question!) resolve it?
0

LVL 9

Expert Comment

ID: 10906770
By the way do not forget to close your open questions, you have 7 open!
0

Author Comment

ID: 10906811
thanks...your solution resolve my problem!! Thank you very much
How can I close my question?

one more thing for the new question..is
the max for the input number is 360
I still cannot figure out how to do it...
0

LVL 9

Expert Comment

ID: 10906826
You can close the question by clicking the accept button at the comment that answered your question.

To put a limit to the input number

If myvalue > 360 then
MsgBox "Maximum inputnumber is 360!",vbExclamation
exit sub
end if
0

LVL 9

Expert Comment

ID: 10906827
0

Author Comment

ID: 10906833
I need your help on this problem....
0

LVL 9

Expert Comment

ID: 10906850
If I understand you correctly, you want the closest higher numer that has no remainder.

Dim divider1(2),divider2(2),tmp(2)

myvalue = myvalue + 21 'because it can be maximal 21 above the imputnumber
divider1(1) = Int(myvalue / 30)
tmp(1) = myvalue Mod 30
divider2(1) = Int(tmp(1) / 22)

divider1(2) = Int(myvalue / 22)
tmp(2) = myvalue Mod 22
divider2(2) = Int(tmp(2) / 30)

if  divider1(1) * 30 - divider2(1) * 22 <  divider1(2) * 22 - divider2(2) * 30
MsgBox divider1(1) * 30 - divider2(1) * 22
else
MsgBox  divider1(2) * 22 - divider2(2) * 30
endif
0

LVL 9

Expert Comment

ID: 10906852
By the way thanks for the grade of A!
0

Author Comment

ID: 10914825
If I want to sort a list of numbers, which sorting is good?
I want to find the smallest number among a set of number from an array?
Can u teach me how?
0

LVL 9

Expert Comment

ID: 10915940
Sorting numbers? In code or in a control?

Find the smallest number in an array?

Dim Lowest as Double, Arr() as Double, i as Long

Lowest = Arr(0)
For i = 1 to NumberOfRecordsInArray
If Arr(i) < Lowest Then Lowest = Arr(i)
Next

Msgbox "Lowest number in array: " & Lowest
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question