출처 : 반크_세계유산 석굴암
문제]
중복되지 않은 2자리 자영수를 무작위로 10개 발생하여 가장 작은 수와 가장 큰 수의 차를 구하는 프로그램을 작성하시오.
출력 예)
2자리 자연수는 17 80 96 50 58 37 52 66 90 25 이며,
그 중 가장 작은 수는 17이고, 가장 큰 수는 96이면
두 수의 차는 79입니다.
참고풀이]
#include <iostream>
#include <vector>
#include <stdlib.h> //srand(),rand()
#include <time.h> //time()
#include <algorithm> //min(), max()
using namespace std;
vector<int> v;
//중복여부 체크함수
bool Check(int x,int n)
{
int j;
for(j=0;j<n;j++)
if(v[j]==x) return false;
return true;
}
int main()
{
int i;//반복 또는 인덱스변수
int a;//입력변수
int Min,Max;//최소값과 최대값 변수
bool chk;//중복여부 체크변수
//무작위 수 발생 초기값을 설정한다.
srand(time(NULL));
//중복되지 않는 2자리 자연수 10개를 vector에 넣는다.
for(i=0;i<10;i++)
{
if(i==0) a=rand()%90+10;
else
while(1)
{
a=rand()%90+10;
//발생된 자연수가 중복되었는 지 체크한다.
chk=Check(a,i);
//발생된 자연수가 중복되지 않았다면 작업을 끝낸다.
if(chk) break;
}
v.push_back(a);
}
//최소값과 최댁값을 구한다.
Max=Min=v[0];
for(i=1;i<10;i++)
{
Min=min(Min,v[i]);
Max=max(Max,v[i]);
}
//결과출력
cout << "2자리 자연수는 ";
for(i=0;i<10;i++) cout << v[i] << " ";
cout << "이며,\n그 중 가장 작은 수는 ";
cout << Min << "이고, 가장 큰 수는 ";
cout << Max << "이며\n두 수의 차는 ";
cout << Max-Min << "입니다.\n";
return 0;
}
참고풀이 결과]
대한민국의 아름다운 영토, 독도의 봄
'프로그램 > C++ 1000제' 카테고리의 다른 글
C++ 54제] vector 사용, 입력된 문자열을 결과와 같이 출력하시오. (0) | 2022.06.23 |
---|---|
C++ 53제] vector 사용, 입력된 문자열 거꾸로 출력하시오. (0) | 2022.06.22 |
C++ 51제] vector 사용, 최소값을 구하시오. (0) | 2022.06.21 |
C++ 50제] vector 사용, 최대값을 구하시오. (0) | 2022.06.20 |
C++ 49제] vector 사용, 이차방정식의 두 근을 구하시오. (0) | 2022.06.20 |
댓글