Learning objective c on the mac

Discussion in 'Mac Programming' started by Frankymac, Nov 1, 2009.

  1. macrumors newbie

    Joined:
    Nov 1, 2009
    #1
    I've been reading this book and am having trouble with one of the sample codes that the author calls "bool party". I keep getting error when i try to "build and run". I've typed the code exactly as it appears in the book but i can't get it to work. Anyone familiar with this title? "learning objective c on the mac"

    thank you

    Code:
    #import <Foundation/Foundation.h>
    
    //returns NO if the two integers have the same
    //value, YES otherwise
    
    BOOL areIntsDifferent (int thing1, int thing2)
    {
    	if (thing1== thing2) {return(NO);}else {return (YES);}
    }//areIntsDifferent
    
    //given a NO value, return the human-readable
    // strin "NO". Otherwise return "YES"
    
    NSString *boolString (BOOL yesno)
    {
    	if (yesNo == NO) {return (@"NO");} else { return (@"YES");  [I]Here I get "yesNo undeclared"[/I]
    	}
    
    // boolstring
    int main (int argc, const char *argv[])[I] here I get "nested functions are disabled use fnested functions[/I]
    {
    	BOOL areTheyDifferent; areTheyDifferent = areIntsDifferent (5, 5);
    NSLog (@"are %d and %d different? %@", 5, 5, boolString(areTheyDifferent));
    
    areTheyDifferent = areIntsdifferent (23, 42);  [I]Here I get "Implicit declaration of function"[/I]
    
    NSLog (@"are %d and %d different? %@", 23, 42, boolString(areTheyDifferent));
    
    return(0)
    	;} //main  [I]Expected declaration of input"[/I]
     
  2. macrumors 603

    Cromulent

    Joined:
    Oct 2, 2006
    Location:
    The Land of Hope and Glory
    #2
    If you want help with any programming problem always post the relevant code and the exact error message or no one will be able to help you. Chances are you have missed a semi-colon somewhere.
     
  3. thread starter macrumors newbie

    Joined:
    Nov 1, 2009
    #3
    Thanks cromulent

    I followed your advice. Could you give any advice about the code? It's very frustrating. Thanks Frank
     
  4. macrumors 68040

    lee1210

    Joined:
    Jan 10, 2005
    Location:
    Dallas, TX
    #4
    C, and Objective-C, are case-sensitive. yesNo is not the same variable as yesno. areIntsdifferent is a different function than areIntsDifferent.

    Also, you missed a closing } in this code:
    Code:
    NSString *boolString (BOOL yesno)
    {
    if (yesNo == NO) {return (@"NO");} else { return (@"YES"); Here I get "yesNo undeclared"
    }
    
    Change this to:
    Code:
    NSString *boolString (BOOL yesNo) {
      if (yesNo == NO) {
        return (@"NO");
      } else {
        return (@"YES");
      }
    }
    
    or
    Code:
    NSString *boolString (BOOL yesNo) {
      return yesNo==YES?@"YES":@"NO";
    }
    
    This should fix the nested function business. It things you're declaring main inside of boolString.

    -Lee
     
  5. thread starter macrumors newbie

    Joined:
    Nov 1, 2009
  6. macrumors member

    Joined:
    Jul 22, 2009
    #6
    Just a general tip: (this may be because you didn't post your code in the code brackets) Your code is shown on this forums as all starting at the beginning of each line with no indentation. Including indentation for code that falls under a function or within a loop/ if-selector makes your code much more readable. Readability is something that you want your code to have because an increase in code readability makes it easier for you and other to read which makes for easier code to debug. Good luck with learning Objective-C!
     
  7. thread starter macrumors newbie

    Joined:
    Nov 1, 2009
  8. macrumors 603

    MorphingDragon

    Joined:
    Mar 27, 2009
    Location:
    The World Inbetween
    #8
    Please learn some code layout, helps a bunch when other try read code. Plus it can avoid syntax errors.
     
  9. macrumors newbie

    Joined:
    Mar 24, 2010
    #9
    another way

    I wrote this

    Code:
    #import <Foundation/Foundation.h>
    NSString *areintsdifferent (int a,int b)
    {int c;
    	c=a-b;
    if (c == 0) {
    	return (@"NO");
    }
    else {
    	return (@"YES");
    }
    }
    
    int main (int argc, const char *argv[])
    {int x,y;
    	scanf("%d%d",&x,&y);
    	NSLog(@"%@",areintsdifferent(x, y));
    }
     

Share This Page