본문 바로가기
프로그램/C++ 1000제

C++ 68제] vector 사용, 1~5까지 사칙연산 사용하여 10만들기.

by 건티 2022. 7. 29.
728x90

 

출처 : 반크_세계유산 창덕궁

 

문제]

숫자 1에서부터 출발하여 숫자 5까지 차례로 하나하나의 갈림목을 지나야 하며 사칙연산(+, -, *, /)중 하나를 골라 계산하되 5까지 이르렀을 때 계산의 결과가 10이 되는 프로그램을 함수를 사용하여 작성하시오.

조건)

▶ 외부변수와 함수를 사용하시오.

 

참고풀이]

#include <iostream>
#include <vector>
using namespace std;

int Sum;

void sachik_function(char ch, int su)
{
   switch(ch)
   {
      case '+': Sum+=su; break;
      case '-': Sum-=su; break;
      case '*': Sum*=su; break;
      case '/': Sum=((double)(Sum/su)==(double)(Sum)/(double)su) ? (double)Sum/(double)su : 0;
   }
}

int main()
{
   //사칙연산을 문자열 배열을 선언하고 문자를 넣는다.
   vector<char> code;
   //char code[4]={'+','-','*','/'};
   int a,b,c,d;//반복을 위한 변수를 선언한다.
   //int sum;//결과값을 넣을 변수를 선언한다.
   //다음 결과값을 구하기 전까지의 값을 넣을 배열변수를 선언하고 초기값 0을 넣는다.
   vector<int> v;

   //vector code에 사칙연산자를 넣는다.
   code.push_back('+');
   code.push_back('-');
   code.push_back('*');
   code.push_back('/');
   
   Sum=1;
   for(a=0;a<4;a++)//사칙연산 반복
   {
      sachik_function(code[a],2);
      v.push_back(Sum);
      for(b=0;b<4;b++)
      {
         sachik_function(code[b],3);
         v.push_back(Sum);
         for(c=0;c<4;c++)
         {
             sachik_function(code[c],4);
             v.push_back(Sum);
             for(d=0;d<4;d++)
            {
                sachik_function(code[d],5);
                if(Sum==10)
               {
                  cout << "(((1 " << code[a] << " 2) " << code[b] << " 3) ";
                  cout << code[c] << " 4) " << code[d] << " 5 = " << Sum << endl;
               } 
               Sum=v[2];
            }
            Sum=v[1];
         }
         Sum=v[0];
      }
      Sum=1;
   }
   
   return 0;
}

 

참고풀이 결과]

 

 

 

 

대한민국의 아름다운 영토, 독도의 여름

 

반응형

댓글