Home > Study > C Language > C task > [ex07] 함수 Lookup table (코드 수정)

[ex07] 함수 Lookup table (코드 수정)
Study Language

문제 설명


교재의 코드를 그대로 사용하면 안됨(채점을 위하여 get_key 함수 변경됨)
아래 코드 복사하여 fa 배열만 선언할 것

#include <stdio.h>
#include <stdlib.h>

int add(int a, int b)
{
    return a+b;
}

int sub(int a, int b)
{
    return a-b;
}

int mul(int a, int b)
{
    return a*b;
}

int get_key(void)
{
    static int r = 0;
    int ret = r;

    r = (r + 1) % 3;
    return ret;
}

       fa[3]       = {add, sub, mul};

int op(int a, int b)
{
    return fa[get_key()](a,b);
}

void main(void)
{
    printf("%d\n", op(3, 4));
    printf("%d\n", op(3, 4));
    printf("%d\n", op(3, 4));
    printf("%d\n", op(3, 4));
    printf("%d\n", op(3, 4));
    printf("%d\n", op(3, 4));
    printf("%d\n", op(3, 4));
}

출력 예시


7
-1
12
7
-1
12
7

정답 코드


#include <stdio.h>
#include <stdlib.h>

int add(int a, int b)
{
	return a+b;
}

int sub(int a, int b)
{
	return a-b;
}

int mul(int a, int b)
{
	return a*b;
}

int get_key(void)
{
	static int r = 0;
	int ret = r;

	r = (r + 1) % 3;
	return ret;
}

int (*fa[3])(int a, int b) = {add, sub, mul};

int op(int a, int b)
{
	return fa[get_key()](a,b);
}

void main(void)
{
	printf("%d\n", op(3, 4));
	printf("%d\n", op(3, 4));
	printf("%d\n", op(3, 4));
	printf("%d\n", op(3, 4));
	printf("%d\n", op(3, 4));
	printf("%d\n", op(3, 4));
	printf("%d\n", op(3, 4));
}

메모


printf 내부의 \n 습관화 필요