frew Posted April 25, 2009 Posted April 25, 2009 (edited) Hello, Could somebody please show me how to create a math statements that would achieve the results I describe in the comments. $x = Random(66, 990, 1) Switch $x Case $x =;any number between 66 and 990 that is a multiple of 24 MsgBox(0, Default, $x) Case $x =;any number between 200 and 400 MsgBox(0, Default, $x) Case $x =;any number NOT between 200 and 400 MsgBox(0, Default, $x) Case Else MsgBox(0, Default, $x) Exit EndSwitch Thank you very much, frew Edited April 25, 2009 by frew
MrMitchell Posted April 26, 2009 Posted April 26, 2009 For multiple of 24 you might be able to use: IsInt(Mod($x, 24)) If it returns a 0 then it's a multiple, otherwise it's not a multiple. Between 200 and 400: Case 200 To 400 Never done the third one but should be simple, I'm sure someone will jump in to help
smashly Posted April 26, 2009 Posted April 26, 2009 $x = Random(66, 990, 1) Switch $x Case Not Mod($x, 24);$x = any number between 66 and 990 that is a multiple of 24 MsgBox(0, "any number between 66 and 990 that is a multiple of 24", $x) Case 201 To 399;$x = any number between 200 and 400 MsgBox(0, "any number between 200 and 400", $x) Case 66 To 200, 400 To 990;$x = any number NOT between 200 and 400 MsgBox(0, "any number NOT between 200 and 400", $x) EndSwitch
MrMitchell Posted April 26, 2009 Posted April 26, 2009 (edited) Getting closer lol $x = Random(66, 990, 1) Switch $x Case 200 To 400;any number between 200 and 400 MsgBox(0, "", "$x = " & $x & ", it is between 200 and 400") Case 66 To 199, 401 To 990;any number NOT between 200 and 400 MsgBox(0, "", "$x = " & $x & " and it is NOT between 200 and 400") Case Else ; EndSwitch If Mod($x,24) = 0 Then MsgBox(0, "", "$x = " & $x & "and it is a multiple of 24") Exit Edit: Another way to write based on Smashly's code. This takes into account the possibility that $x can be a multiple of 24 as well as any of the Cases. I also adjusted the second case. Edited April 26, 2009 by MrMitchell
frew Posted April 26, 2009 Author Posted April 26, 2009 I thank you both so much, MrMitchell, and smashly. I can see these get the results that I asked for help with, but now I need to spend some time figuring out how these things work. MrMitchell, I'm trying to understand If NOT IsInt(Mod($x,24)) smashly, I'm trying to understand Case Not Mod($x, 24) Thank you for any explanations. I just about get it, but I'm not quite there yet. frew
MrMitchell Posted April 26, 2009 Posted April 26, 2009 Ignore the If NOT IsInt(Mod($x,24)) It is incorrect. Instead it should be what Smashly gave: Case Not Mod($x, 24) Modulus means what is the remainder of $x divided by 24? If the remainder is 0 then it is a multiple of 24. If the result is anything other than 0 then it's not a multiple because you have a remainder
smashly Posted April 26, 2009 Posted April 26, 2009 smashly, I'm trying to understand Case Not Mod($x, 24) Thank you for any explanations. I just about get it, but I'm not quite there yet. frewNot Mod($x, 24) is the same as Mod($x, 24) = 0 If $x is evenly divided by 24 then Mod will return 0 If $x is not evenly divided by 24 then Mod will return different to 0
MrMitchell Posted April 26, 2009 Posted April 26, 2009 (edited) $x = Random(66, 990, 1) Switch $x Case Not Mod($x, 24);$x = any number between 66 and 990 that is a multiple of 24 MsgBox(0, "any number between 66 and 990 that is a multiple of 24", $x) ContinueCase ;<<=== Added this line Case 201 To 399;$x = any number between 200 and 400 MsgBox(0, "any number between 200 and 400", $x) Case 66 To 200, 400 To 990;$x = any number NOT between 200 and 400 MsgBox(0, "any number NOT between 200 and 400", $x) EndSwitch Too add to Smashly's code, if the number is a multiple of 24 then the Switch will end and won't tell you what range the number falls under. If you want it to keep going place a ContinueCase statement just before the next case so that it will continue to the next Case. I didn't know this until now Edited April 26, 2009 by MrMitchell
frew Posted April 26, 2009 Author Posted April 26, 2009 If the result is anything other than 0 then it's not a multiple because you have a remainder.Thanks MrMitchellNot Mod($x, 24) is the same as Mod($x, 24) = 0Thanks smashly.I did not know that. That's good to know. That is a very helpful explanation.Thank you both so much, that really helped a lot to understand some very interesting and useful uses for the Mod math function.Thanks again!frew
Valuater Posted April 26, 2009 Posted April 26, 2009 (edited) $x = "Valuater" MsgBox(4096, "", Not Mod($x, 24)) lol 8) Edited April 26, 2009 by Valuater
frew Posted April 26, 2009 Author Posted April 26, 2009 MrMitchell,the Switch will end and won't tell you what range the number falls underIn my case, I do not need to know the range the number is in, as long as the action I put in the case is done.Thank you very much though MrMitchell, because it's nice to know that the ContinueCase is an option if I ever want it.That's good to know.ValuaterThat sure looks funny. I wish I could get that but it's coding humor that it over my head at this point.I tried it and it kept saying true, true,...ha! I don't get it but it's funny still.Seeya,frew
frew Posted April 26, 2009 Author Posted April 26, 2009 (edited) Not to belabor the point too far, but if anybody cares to do so, would you please give an explanation of what these are doing: MsgBox(0, Default, Mod(24,24)) MsgBox(0, Default, Not Mod(24,24)) MsgBox(0, Default, Mod(27,24)) MsgBox(0, Default, Not Mod(27,24)) I get the first one...zero because the result of 24 divided by 24 is zero. The second is "not zero" so it says true, because zero is false. The third one is 3 because 27 divided by 24 equals 1 with a remainder of 3. The fourth one I do not get yet. What does that one mean? Why does it say false? Thanks for any ideas. frew Edited April 26, 2009 by frew
MrMitchell Posted April 26, 2009 Posted April 26, 2009 1. It's not the result of 24 divided by 24, it's the remainder of 24 divided by 24 which is 0. The result is 1 remainder 0, so it returns the remainder of 0 or FALSE. 2. Opposite of above, returns TRUE or not zero 3. You are correct, returns 3 because that's the remainder. The fact that it's not zero tells you the number is not an even multiple of 24. 4. It returns 3 which is TRUE, so when you put that NOT there it changes it to False. I hope that makes sense?
frew Posted April 26, 2009 Author Posted April 26, 2009 I hope that makes sense?Thanks MrMitchell for going over those details. I really appreciate it.Yes, it starts to make sense. Takes a little while to get used to thinking in these terms. By the way, in MsgBox(0, Default, Not Mod(27,24))I guess 3 is true because it is not zero.With your clarifications, I think I'm onto it now.Thanks again,frew
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now