Amazon.com Widgets Chapter 12 Exercise 6
Welcome, Guest. Please login or register.
Did you miss your activation email?
June 17, 2013, 11:57:54 PM
Home Help Search chat Login Register   
News: Read this please.The Great Kangaroo Escape Looking for reviews of the 4th ed on Amazon!   Twitter:  @skochan
                     

+  Official Forum for Programming in Objective-C (the iPhone Programming Language) - Stephen Kochan
|-+  Programming in Objective-C, 4th edition
| |-+  Exercises
| | |-+  Chapter 12
| | | |-+  Chapter 12 Exercise 6
Pages: [1]   Go Down
Print
Author Topic: Chapter 12 Exercise 6  (Read 658 times)
clouded
Full Member
***
Posts: 123






« on: June 04, 2012, 10:33:20 AM »

This is my code on this one:

Code: (Objective-C)
//  Chapter 12 Exercise 6
// Write a macro called IS_DIGIT that gives a nonzero value if a character is a digit 0
// through 9. Use this macro in the definition of another macro called IS_SPECIAL, which
// gives a nonzero result if a character is a special character (that is, not alphabetic
// and not a digit). Be sure to use the IS_ALPHABETIC macro developed in Exercise 5.

//  main.m

#import <Foundation/Foundation.h>
#define IS_LOWER_CASE(x) ( ((x) >= 'a') && ((x) <= 'z') ? 1 : 0)
#define IS_UPPER_CASE(x) ( ((x) >= 'A') && ((x) <= 'Z') ? 1 : 0)
#define IS_ALPHABETIC(x) ( IS_LOWER_CASE(x) || IS_UPPER_CASE(x) ? 1 : 0)
#define IS_DIGIT(x) ( ((x) >= '0') && ((x) <= '9') ? 1 : 0)
#define IS_SPECIAL(x) ( IS_ALPHABETIC(x) || IS_DIGIT(x) ? 0 : 1)

int main (int argc, const char * argv[])
{

    @autoreleasepool {
       
        char alpha;
        printf("Enter your letter: ");
        scanf("%c", &alpha);
        printf("IS_LOWER_CASE result %3i \n", IS_LOWER_CASE(alpha));
        printf("IS_UPPER_CASE result %3i \n", IS_UPPER_CASE(alpha));
        printf("IS_ALPHABETIC result %3i \n", IS_ALPHABETIC(alpha));
        printf("IS_DIGIT result %8i \n", IS_DIGIT(alpha));
        printf("IS_SPECIAL result %6i \n", IS_SPECIAL(alpha));
           
    }
    return 0;
}

Output:

Enter your letter: A
IS_LOWER_CASE result   0
IS_UPPER_CASE result   1
IS_ALPHABETIC result   1
IS_DIGIT result        0
IS_SPECIAL result      0

Enter your letter: Z
IS_LOWER_CASE result   0
IS_UPPER_CASE result   1
IS_ALPHABETIC result   1
IS_DIGIT result        0
IS_SPECIAL result      0

Enter your letter: d
IS_LOWER_CASE result   1
IS_UPPER_CASE result   0
IS_ALPHABETIC result   1
IS_DIGIT result        0
IS_SPECIAL result      0

Enter your letter: =
IS_LOWER_CASE result   0
IS_UPPER_CASE result   0
IS_ALPHABETIC result   0
IS_DIGIT result        0
IS_SPECIAL result      1

Enter your letter: 7
IS_LOWER_CASE result   0
IS_UPPER_CASE result   0
IS_ALPHABETIC result   0
IS_DIGIT result        1
IS_SPECIAL result      0
Logged
Justwarrior
Newbie
*
Posts: 25


Email




« Reply #1 on: June 28, 2012, 03:05:52 AM »

Why I got this error in the defined IS_SPECIAL(x): "IMPLICIT DECLARATION OF FUNCTION 'IS_APLHABETIC' is invalid in C99"

please help...

Here is the code:

Code: (Objective-C)
#import <Foundation/Foundation.h>
#define MINT(x,y) (x < y ? x : y)
#define MAX3(val1, val2, val3) ( ((val1)>(val2)) ? ((val1)>(val3)) ? (val1) : (val3) : ((val2)>(val3)) ? (val2) : (val3) )

#define IS_UPPER_CASE(x) ((x >= 'a')&&(x <= 'z') ? 1 : 0)
#define IS_LOWER_CASE(x) ((x >= 'A')&&(x <= 'Z') ? 1 : 0)
#define IS_ALPHABETIC(x) ( ( (IS_UPPER_CASE(x)) || (IS_LOWER_CASE(x))) ? 1:0)
#define IS_DIGIT(x) ( (x >= '0')&&(x<='9') ? 1 : 0)
#define IS_SPECIAL(x) ( IS_DIGIT(x)||IS_APLHABETIC(x) ? 1:0 ) // IMPLICIT DECLARATION OF FUNCTION 'IS_APLHABETIC' is invalid in C99

int main (int argc, const char * argv[])
{
    @autoreleasepool {
        int val = MAX3(1,6,7);
        NSLog(@"%i",val);
        char a;
        scanf("%c",&a);
        if(IS_UPPER_CASE(a) && IS_ALPHABETIC(a)) { NSLog(@"Lower case and Alphabetic");}
        else { NSLog(@"Upper case");}
       
        if(IS_ALPHABETIC(a)) { NSLog(@"Alphabetic");}
        else { NSLog(@"non-alphabetic");}
       
        if(IS_SPECIAL(a)) { NSLog(@"It is Number or Alphabetic");}
        else { NSLog(@"It is a special character");}
    }
    return 0;
}
Logged
clouded
Full Member
***
Posts: 123






« Reply #2 on: June 28, 2012, 07:15:32 AM »

The compiler is correct:

You did not define IS_APLHABETIC, you defined IS_ALPHABETIC Wink
« Last Edit: June 28, 2012, 08:32:25 AM by clouded » Logged
Justwarrior
Newbie
*
Posts: 25


Email




« Reply #3 on: July 01, 2012, 01:50:07 AM »

 Oh crap, I didn't see that even after week  Grin
Logged
Remm
Newbie
*
Posts: 1






« Reply #4 on: August 18, 2012, 02:17:10 PM »

Code: (Objective-C)
//
//  main.m
//  Macros
//
//  Created by '-' on 8/17/12.
//  Copyright (c) 2012 '-'. All rights reserved.
//

#import <Foundation/Foundation.h>

#define MIN(a,b) (( a > b )? b : a)
#define MAX_3(val1,val2,val3) ( ((val1) > (val2)) ? ((val1) > (val3)) ? (val1) : (val3) : ((val2) > (val3)) ? (val2) : (val3) )
#define IS_UPPER_CASE(x) ((x) >= 'A') && ((x) <= 'Z')
#define IS_LOWER_CASE(x) ( ((x) >= 'a') && ((x) <= 'z') )
#define IS_ALPHABETIC(x) (( (IS_UPPER_CASE(x)) || (IS_LOWER_CASE(x)) )? 1 : 0)
#define IS_DIGIT(x) (( (x) >= 0 ) || ( (x) <= 9 )? 1 : 0)
#define IS_SPECIAL(x) ( (IS_ALPHABETIC(x) && (IS_DIGIT(x))

int main(int argc, const char * argv[])
{

    @autoreleasepool {
       
       
        char alpha;
        printf("Enter a character: ");
        scanf("%c", &alpha);
       
        printf("The result of IS_SPECIAL is %i", IS_SPECIAL(alpha));
       
    }
    return 0;
}


Hey Everyone, I keep getting an error on the printf line of code. It says "Expected ')'" Any advice? Thanks.
Logged
mitchb
Jr. Member
**
Posts: 98






« Reply #5 on: August 20, 2012, 10:39:37 PM »

Remm,
Your #define IS_SPECIAL(x) has one to many opening (.  The #define IS_DIGIT(x) needed some changes and simplified some other code, see if this works for you.

Code: (Objective-C)
#import <Foundation/Foundation.h>
   
#define MIN(a,b) (( a > b )? b : a) 
#define MAX_3(val1,val2,val3) ( ((val1) > (val2)) ? ((val1) > (val3)) ? (val1) : (val3) : ((val2) > (val3)) ? (val2) : (val3) ) 
#define IS_UPPER_CASE(x) ((x) >= 'A') && ((x) <= 'Z') 
#define IS_LOWER_CASE(x) ((x) >= 'a') && ((x) <= 'z') 
#define IS_ALPHABETIC(x) ((IS_UPPER_CASE(x)) || (IS_LOWER_CASE(x))) 
#define IS_DIGIT(x)      ((x) >= '0' ) && ((x) <= '9' ) 
#define IS_SPECIAL(x)   !(IS_ALPHABETIC(x) || (IS_DIGIT(x))) 
   
int main(int argc, const char * argv[]) 

       
    autoreleasePool {
           
    char alpha; 
    printf("Enter a character: "); 
    scanf("%c", &alpha); 
   
    printf("Is upper: %i\n", IS_UPPER_CASE(alpha));
    printf("Is lower: %i\n", IS_LOWER_CASE(alpha));
    printf("Is alpha: %i\n", IS_ALPHABETIC(alpha));
    printf("Is digit: %i\n", IS_DIGIT(alpha));
    printf("Is special: %i\n", IS_SPECIAL(alpha));   
       
    }
    return 0;
}
Mitch
Logged

If you give a man a program, you will frustrate him for a day;
If you teach him how to program, you will frustrate him for a lifetime;
     - Anonymous
mo7ionsickness
Jr. Member
**
Posts: 50






« Reply #6 on: August 25, 2012, 02:44:25 PM »

Code: (Objective-C)
#import <Foundation/Foundation.h>
#define IS_UPPER_CASE(x) ( ((x) >= 'A') && ((x) <= 'Z') )
#define IS_LOWER_CASE(x) ( ((x) >= 'a') && ((x) <= 'z') )
#define IS_ALPHABETIC(x) ( IS_LOWER_CASE(x) || IS_UPPER_CASE(x) )
#define IS_DIGIT(x) ( ((x) >= 0) && ((x) <= 9) )
#define IS_SPECIAL(x) ( !(IS_ALPHABETIC(x) || IS_DIGIT(x)) )

int main(int argc, const char * argv[])
{

    @autoreleasepool {
       
        NSLog(@"%i", IS_DIGIT(2));
        NSLog(@"%i", IS_DIGIT(1));
        NSLog(@"%i", IS_DIGIT('a'));
        NSLog(@"%i", IS_DIGIT('j'));
       
        NSLog(@"\n");
       
        NSLog(@"%i", IS_SPECIAL('#'));
        NSLog(@"%i", IS_SPECIAL('@'));
        NSLog(@"%i", IS_SPECIAL('A'));
        NSLog(@"%i", IS_SPECIAL(1));
    }
    return 0;
}


2012-08-25 22:43:48.587 Test[1496:303] 1
2012-08-25 22:43:48.589 Test[1496:303] 1
2012-08-25 22:43:48.590 Test[1496:303] 0
2012-08-25 22:43:48.590 Test[1496:303] 0
2012-08-25 22:43:48.591 Test[1496:303]
2012-08-25 22:43:48.591 Test[1496:303] 1
2012-08-25 22:43:48.592 Test[1496:303] 1
2012-08-25 22:43:48.592 Test[1496:303] 0
2012-08-25 22:43:48.592 Test[1496:303] 0
Logged
Pages: [1]   Go Up
Print
Jump to:  



Login with username, password and session length

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC Valid XHTML 1.0! Valid CSS!
Entire forum contents (c) 2009 classroomM.com. All rights reserved.