본문 바로가기

Algorithm/BOJ

[C/Perfect C] 프로젝트 Part 1-03 : 두 정수 교환의 다양한 방법

<흐름>

1. 연산 방법을 안내하는 메시지 함수 만들기

2. 각 연산 방법마다 함수 만들어주기 -> 총 4개

3. 연산 번호 입력 받고 연산 결과 출력

 

 

<문제>

1. <흐름> 2처럼 함수를 작성하려고 한 이유는 코드를 깔끔하게 보기 위해서이다. 하지만 그렇게 하면 문제가 발생한다.

함수는 여러 값을 입력받을 순 있지만 단 하나만 리턴 하기 때문에 (여기서는 아직 포인터를 배우기 전이라 포인터를 사용하지 않고 풀려고 함) 함수를 사용할 수  없다

   -> 그냥 main 함수 안에다가 switch문을 이용하여 각 case 안에다가 각각의 연산을 입력하기로 했다.

 

2. switch 문 안에서 변수 선언 하려고 했는데 빨간줄이 뜬다.

   -> 잇츠 오케이..라고 하는데 repl.it에서는 오류 떠서 그냥 밖에다가 선언 해줬다. 암튼 그래도 참고한 블로그 요기아래

   참고 블로그 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=tipsware&logNo=221290975902

 

3. 그냥 드는 생각

   두 정수를 교환하는 다양한 방법이 있는데 아마 이것들 중 아무것도 잘 안 쓰고 포인터를 주로 쓰겠지?

 

 

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

void printMessage();

int main(){
  int x, y, calNum, dump;
  printf("교환할 두 정수를 입력하세요. >> ");
  scanf("%d %d", &x, &y);
  printf("입력한 두 수: x = %d and y = %d", x, y);
  printf("\n\n");

  printMessage();

  printf("위 교환 방법 중 한 번호를 선택하세요. >> ");
  scanf("%d", &calNum);

  switch(calNum){
    case 1:
      dump = x;
      x = y;
      y = dump;  
      break;

    case 2:
      x = x+y;
      y = x-y;
      x = x-y;
      break;
    
    case 3:
      x = x*y;
      y = x/y;
      x = x/y;
      break;
    
    case 4:
      x = x^y;
      y = x^y;
      x = x^y;
      break;
    
    default:
      break;
    }

  printf("\n\n");
  printf("교환한 두 수: x = %d and y = %d\n", x, y);

  return 0;
  
}

void printMessage(){
  printf("임시 저장 장소 이용 방법[1]\n");
  printf("덧셈과 뺄셈으로 교환 방법[2]\n");
  printf("곱셈과 나눗셈으로 교환 방법[3]\n");
  printf("XOR 연산자 ^ 이용 방법[4]\n");
  printf("\n\n");

  return;
}

 

 

 

<실행 결과>