출처] 반크_세계유산 석굴암
문제]
아래의 조건에 맞게 출력하는 프로그램을 작성하시오.
조건)
1. 입력하는 숫자의 범위는 1에서 6까지의 정수로 한다.
2. 조건1이외의 수가 들어오면 “범위 밖입니다.”를 출력하고 다시 입력한다.
3. 출력의 형태는 마름모 형태이어야 한다.
4. 결과 출력 후, 계속여부를 물어 N이면 “수고하셨습니다.”를 출력 후 끝낸다.
출력 예)
원하는 수를 입력하시오 : 7
1~6 범위 밖입니다.
다시 입력하세요.
원하는 수를 입력하시오 : 5
1 | ||||||||
3 | 3 | |||||||
8 | 2 | 8 | ||||||
20 | 5 | 5 | 20 | |||||
48 | 12 | 3 | 12 | 48 | ||||
28 | 7 | 7 | 28 | |||||
16 | 4 | 16 | ||||||
9 | 9 | |||||||
5 |
계속하시겠습니까(Y/N) u
Y/y/N/n이 아닙니다.
다시 입력하세요.
계속하시겠습니까(Y/N) y
원하는 수를 입력하시오 : 3
1 | ||||
3 | 3 | |||
8 | 2 | 8 | ||
5 | 5 | |||
3 |
계속하시겠습니까(Y/N) y
수고하셨습니다.
참고풀이]
#include <iostream>
#include <vector>
#include <iomanip> //setw()
#include <string> //toupper()
using namespace std;
int main()
{
vector<vector<int> > v;
vector<int> vc;
int r,c;//반복변수 또는 index 행열변수
int N;//입력변수
int n;//증가값 변수
int r_s,r_e;//행의 시작과 끝 변수
int c_j,c_g;//열의 증감변수
int i;//반복변수
char ch;//계속여부 체크 변수
while(true)
{
//출력할 기준 수를 입력받는다.
while(true)
{
cout << "원하는 수를 입력하시오 : ";
cin >> N;
if(N>=1 && N<=6) break;
cout << "1~6 범위 밖입니다.\n";
cout << "다시 입력하세요.\n\n";
}
//vector에 0수를 입력한다.
for(r=0;r<N*2;r++) vc.push_back(0);
for(r=0;r<N*2;r++) v.push_back(vc);
//증가값으로 마름모형을 만든다.
//1~N까지의 수를 입력한다.
for(n=r=0;r<N*2;r+=2) v[r][N-1]=++n;
//나머지 곳에 숫자를 넣는다.
c_j=c_g=N-1;
r_s=0; r_e=N*2-1;
for(i=1;i<N;i++)
{
c_j++; c_g--;
r_s++; r_e--;
for(r=r_s;r<r_e;r+=2)
{
v[r][c_g]=v[r-1][c_g+1]+v[r+1][c_g+1];
v[r][c_j]=v[r-1][c_j-1]+v[r+1][c_j-1];
}
}
//결과출력
for(r=0;r<N*2;r++)
{
for(c=0;c<N*2;c++)
if(v[r][c]==0) cout << setw(3) << " ";
else cout << setw(3) << v[r][c];
cout << endl;
}
//계속여부 체크한다.
while(true)
{
cout << "계속하시겠습니까(Y/N) ";
cin >> ch;
if(toupper(ch)=='Y' || toupper(ch)=='N') break;
cout << "Y/y/N/n이 아닙닙다.\n";
cout << "다시 입력하세요.\n";
}
if(toupper(ch)=='N') break;
v.clear();//vector를 깨끗이한다.
vc.clear();
cout << endl;
}
cout << "수고하셨습니다.\n";
return 0;
}
참고풀이 결과]
대한민국의 아름다운 영토, 독도
'프로그램 > C++ 1000제' 카테고리의 다른 글
C++ 58제] vector 사용, 1~10000까지 중 7배수합과 개수를 구하시오. (0) | 2022.06.29 |
---|---|
C++ 57제] vector 사용, 1~N까지의 합을 구하시오. (0) | 2022.06.29 |
C++ 55제] vector 사용, 입력된 문자열을 단어별로 출력하시오. (0) | 2022.06.23 |
C++ 54제] vector 사용, 입력된 문자열을 결과와 같이 출력하시오. (0) | 2022.06.23 |
C++ 53제] vector 사용, 입력된 문자열 거꾸로 출력하시오. (0) | 2022.06.22 |
댓글