// Code Handout for COP 3223 Exam #2 Section 3 11/4/09
#include <stdio.h>
void function1(int array[], int length) {
    int i;
    int temp[length];
    for (i=0; i<length; i++) 
        temp[i] = array[array[i]];
    for (i=0; i<length; i++)
        array[i] = temp[i];     
    for (i=0; i<length; i++)
        printf("%d ", array[i]);
    printf("\n");
}

void main1() {
    int values[] = {3, 0, 4, 5, 1, 2};
    function1(values, 6);
}

int function2(int a, int b) {
    int temp = a+b;
    a = 3*temp - (2*b)%9;
    b = a%temp;
    printf("a = %d, b = %d\n", a, b);
    return a - b;
}

void main2() {
    int a = 2, b = 1;
    b = function2(a,b);
    printf("a = %d, b = %d\n", a, b);
    a = function2(b,a);
    printf("a = %d, b = %d\n", a, b);
}

int function3(int *a, int *b) {
    int temp = (*a)+(*b);
    *a = 3*temp - (2*(*b))%9;
    *b = (*a)%temp;
    printf("a = %d, b = %d\n", *a, *b);
    return (*a) - (*b);
}

void main3() {
    int a = 2, b = 1;
    b = function3(&a,&b);
    printf("a = %d, b = %d\n", a, b);
    a = function3(&b,&a);
    printf("a = %d, b = %d\n", a, b);
}

int main() {
    main1();  printf("\n");
    main2();  printf("\n");
    main3();
    return 0;
}
