출처 : 반크_세계유산 창덕궁
문제]
숫자 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;
}
참고풀이 결과]
대한민국의 아름다운 영토, 독도의 여름
'프로그램 > C++ 1000제' 카테고리의 다른 글
C++ 70제] vector 사용, 주어진 숫자를 분해하여 원소 찾는 프로그램. (0) | 2022.08.09 |
---|---|
C++ 69제] vector 사용, 원하는 달팽이 수를 만들기 (0) | 2022.08.09 |
C++ 67제] vector 사용, 문제와 같은 달팽이형 사각형을 출력하시오. (0) | 2022.07.26 |
C++ 66제] vector 사용, 문제와 같은 리본을 출력하시오. (0) | 2022.07.25 |
C++ 65제] vector 사용, 문제와 같은 영문자 리본을 출력하시오. (0) | 2022.07.13 |
댓글