문제

프로필 교환 프로그램

두 명의 나이와 키를 입력한 후에 바꾸어 출력합니다. 단, 나이와 키를 바꾸는 함수는 int형과 double형을 모두 교환할 수 있도록 하나의 함수로 구현하세요. 다음의 swap 함수 호출 예를 참고하여 작성합니다.

 swap("int", &a, &b);
 swap("double", &a, &b);

풀이과정: void* 를 이용하면 자료형에 관계없이 가져올 수 있다.

#include <stdio.h>

void swap(char* data_type, void* number1, void* number2);

void main(void) {

	int first_age, second_age;
	double first_height, second_height;

	printf("첫 번째 사람의 나이와 키 입력 : ");
	scanf("%d %lf", &first_age, &first_height);

	printf("두 번째 사람의 나이와 키 입력 : ");
	scanf("%d %lf", &second_age, &second_height);

	swap("int", &first_age, &second_age);
	swap("double", &first_height, &second_height);

	printf("첫 번째 사람의 나이와 키 : %d, %.1lf\n", first_age, first_height);
	printf("두 번째 사람의 나이와 키 : %d, %.1lf\n", second_age, second_height);

	return 0;
}

void swap(char* data_type, void* number1, void* number2) {

	if (data_type == "int") {
		int temp;

		temp = *(int*)number1;
		*(int*)number1 = *(int*)number2;
		*(int*)number2 = temp;
	}
// *(int*)number1 -> (int*)number1 으로 void* number1을 int* number1로 바꾼다음
// 앞에 *을 붙여 포인터를 이용한 swap을 구현하도록 한다.

	else if (data_type == "double") {
		double temp;

		temp = *(double*)number1;
		*(double*)number1 = *(double*)number2;
		*(double*)number2 = temp;
	}
}

Tags:

Updated: