Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

[Javascript?] help with functions: isOdd in terms of isEven

  1. Sep 19, 2012 #1
    Problem statement:

    Define isOdd function, and then define isEven function in terms of isOdd function.

    My attempt is ridiculous:

    Code (Text):

    var isOdd = function (x){
        if (x % 2 ===0){
            return isOdd;
        }else{
            return "is even";
        }
    };
     
     var isEven = function (){
        return;
     };
     
    Last edited by a moderator: Sep 20, 2012
  2. jcsd
  3. Sep 19, 2012 #2

    jedishrfu

    Staff: Mentor

    Re: help with functions: isOff in terms of isEven

    in java:

    public boolean isOdd(int x) { return ( (x%2) == 1 ); } // returns boolean true if odd

    public boolean isEven(int x) { return ( (x%2) == 0 ); } // returns boolean true if even

    or alternatively:

    public boolean isEven(int x) { return !isOdd(x); }

    basically don't return strings for "is" style functions better to return clearly defined boolean values. With strings you have to contend with remembering whether to use upper / lowercase and a host of other little problems each of which can cause a programming error in your code.
     
  4. Sep 19, 2012 #3

    gabbagabbahey

    User Avatar
    Homework Helper
    Gold Member

    Re: help with functions: isOff in terms of isEven

    What language are you programming in? Javascript?

    Usually x % 2 gives the remainder when dividing x by 2, so if x % 2 ==0, then is x odd or even?

    When you write something like
    Code (Text):
    var isOdd = function (x){
        //do stuff
            return isOdd;
        }
    };
    You are defining a function that returns itself, which doesn't make much sense. Instead, try returning a boolean value:

    Code (Text):
    var isOdd = function (x){
        //if x is odd
            return true;
            //otherwise
            return false;
        }
    };
     
  5. Sep 21, 2012 #4
    Re: [Javascript?] help with functions: isOff in terms of isEven

    Sorry, it's Javascript (my justification for not mentioning the programming language is that i'm new in programming and I presumed that it is easy to identify the language just by glancing ant the syntax - i learned that i was wrong ... ).
     
  6. Sep 21, 2012 #5

    jtbell

    User Avatar

    Staff: Mentor

    Re: [Javascript?] help with functions: isOff in terms of isEven

    Another important reason to include the name of the language in the title of your post is to tell people what's inside, so they don't waste their time opening a post about a language they don't know anything about. It also attracts people who do know the language, and might be in a position to help you.
     
    Last edited: Sep 21, 2012
  7. Sep 24, 2012 #6
    Re: help with functions: isOff in terms of isEven

    Yes, JavaScript. I would use the litteral booleans, if I had only one function to work with. However, I don't understand how to define the isEven function in term of isOdd (I need to use the logical operator "!" (not) somehow, but it is confusing. And from this confusion many kinds of non-workable ideas arise ....
     
  8. Sep 25, 2012 #7

    Mark44

    Staff: Mentor

    Re: help with functions: isOff in terms of isEven

    In the definition of isEven() you can test the number x by calling isOdd(x). If isOdd(x) returns false, x must be even.
     
  9. Sep 25, 2012 #8
    Re: help with functions: isOff in terms of isEven

    Here is the original problem statment:

    PHP:
    Remember the functions isOdd and isEven from Exercise 3.4?

    We'd like you to code them here again! But this time, the aim is to define one function in terms of the other using the ! symbol.

    Define isOdd, and then define isEven in terms of isOdd.

    To define the isOdd function, you will need to use:

    a) The modulo % symbol.
    b) If / else statement in the body of the function
    I have to have both the isEven and isOdd funtions.

    Code (Text):
    var isOdd = function (x){
        if (!x % 2 ===0){
            return "x is odd";
        }
    };
     
    var isEven = function (x){
        isOdd(x);
        return !isOdd(x);
    };
     
    I know this is WRONG, just dont know how to do it :)
     
  10. Sep 25, 2012 #9

    DavidSnider

    User Avatar
    Gold Member

    Re: [Javascript?] help with functions: isOff in terms of isEven

    Think about what the type being returned from isOdd is.

    Does using ! on that type make any sense?

    Also
    Code (Text):
     if(!x % 2 ===0)
    is incorrect. That says "IF (NOT X) MOD 2 ===0". Try to rewrite this using the != operator.
     
    Last edited: Sep 25, 2012
  11. Sep 25, 2012 #10

    Mark44

    Staff: Mentor

    Re: [Javascript?] help with functions: isOff in terms of isEven

    David already pointed out what was wrong with your if expression. The other thing is that you DON'T want to return a string. A function can return a boolean constant (i.e., true or false).
    Try this:
    Code (Text):

    var isEven = function (x){
        [STRIKE]isOdd(x);[/STRIKE]
        return !isOdd(x);
    };
     
     
  12. Sep 26, 2012 #11
    Re: [Javascript?] help with functions: isOff in terms of isEven

    Code (Text):
    var isOdd = function (x){
    [I][B]  if ((x % 2)!=== 0){[/B][/I]
            return true;
        }
    };
     
    var isEven = function (x){
        return !isOdd(x);
    };
    Tried it like that, but it seems to be sintacticaly incorrect. I got an error: "missing operand; found =" on line 2
     
  13. Sep 26, 2012 #12

    gabbagabbahey

    User Avatar
    Homework Helper
    Gold Member

    Re: [Javascript?] help with functions: isOff in terms of isEven

    When you write it like that, order of operations is to first compute (x%2), then try to compare it to 0 using the comparison operator "!===", but "!===" is not a valid comparison operator in javascript. There is no javascript comparison operator for "is not exactly equal to", so instead, you could test whether (x%2) is exactly equal to 0, and then take the logical negative of the comparison:

    Code (Text):
    var isOdd = function (x){
        if(!((x % 2)===0)){
            return true;
        }
    };
    Additionally, you should also specify that the function should return false when (x%2)===2, which could be done like

    Code (Text):
    var isOdd = function (x){
        if(!((x % 2)===0)){
            return true;
            }else{
                return false;
            }
    };
    or like

    Code (Text):
    var isOdd = function (x){
        if(!((x % 2)===0)){
            return true;
            }
            return false;
    };
    or, without using the logical not operator "!",
    Code (Text):
    var isOdd = function (x){
        if((x % 2)===0){
            return false;
            }else{
                return true;
            }
    };
     
  14. Sep 26, 2012 #13

    jedishrfu

    Staff: Mentor

  15. Sep 27, 2012 #14
    Solved, thanks to all :)
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: [Javascript?] help with functions: isOdd in terms of isEven
  1. Javascript Help (Replies: 4)

Loading...