O'Reilly logo

Beginning Mac OS® X Programming by Drew McCormack, Michael Trent

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

A.3. Chapter 3

A.3.1. Exercise 1 solution

Use the proper man page requests that appear in the following table. Note that printf overlaps with a command-line function, so you must specifically request the section for C functions. The section is optional for the other man pages.

FunctionMan Page
printf"3 printf"
scanf"scanf" or "3 scanf"
pow"pow" or "3 pow"

A.3.2. Exercise 2 solution

  1. Change the instances of int in Calculate.h to double. This includes

    double calculate(const double a, const double b, const char op);
  2. Change the instances of int in Calculate.c to double. This includes:

    double calculate(const double a, const double b, const char op)
    {
        double result;
  3. Replace the main function in main.c with the following code:

    int main (int argc, const char * argv[])
    {
        int count;
        double a, b, answer;
        char op;
    
        // print the prompt
        printf("Enter an expression: ");
    
        // get the expression
        count = scanf("%lg %c %lg", &a, &op, &b);
        if (count != 3) {
            printf("bad expression\n");
            exit(1);
        }
    
        // perform the computation
        answer = calculate(a, b, op);
    
        // print the answer
        printf("%lg %c %lg = %lg\n", a, op, b, answer);
    
        return 0;
    }

A.3.3. Exercise 3 solution

  1. Add the following include after the other includes in Calculate.c:

    #include <math.h>
  2. Add the following case entries to the switch statement. Here is the final switch statement:

    case '/':
                result = a / b;
                break;
            case '\\':
                result = (int)a / (int)b;
                break;
            case '%':
                result = (int)a % (int)b;
                break;
            case '^':
                result = pow(a, b);
                break;

    Your Calculate.c file ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required