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

C++ 25제] vector 사용, 1~N까지 중 조건에 맞는 합과 개수를 구하시오.

by 건티 2022. 6. 1.
728x90

출처 : 반크_세계유산 고인돌

 

문제]

임의의 수를 입력하여 조건에 맞는 프로그램을 작성하시오.

조건)

1. 입력한 수까지의 짝수를 출력하시오.

2. 한 라인에 10개씩 출력하시오.

3. 입력한 수까지의 짝수의 개수를 구하시오.

4. 입력한 수까지의 짝수의 합을 구하시오.

5. 임의의 수는 100 이상의 수가 입력되도록 하시오.

6. 임의의 수가 100 이상의 수가 아니면,

     "100 이상의 수를 입력하세요...","다시 입력하시오..."라는 메세지를 띄우고 재입력하시오.

 

참고풀이]

#include <iostream>
#include <vector>
#include <iomanip> //setw()
#include <numeric> //accumulate(시작위치, 끝위치, 초기값)
using namespace std;

int Jsu(int k)
{
   int j;
   int x;

   x=1;
   j=1;
   while(1)
   {
      x++;
      j*=10;
      if(j>k) break;
   }

   return x;
}

int main()
{
   vector<int> v;
   int N;//입력할 N변수 
   int i;
   int Sum;
   int jari;//출력할 때 일정한 공간을 확보할 변수 

   //N을 100보다 크게 입력되게한다.
   while(1) 
   {
      cout << "임의의 수를 입력하시오 : ";
      cin >> N;
      if (N>=100) break;
      cout << "100 이상의 수를 입력하세요...\n";
      cout << "다시 입력하세요...\n";
   }

   //vector에 1~N까지 짝수를 저장한다.
   for(i=1;i<=N;i++) 
      if(i%2==0) v.push_back(i);

   //vector안의 값들을 더한다.
   Sum=accumulate(v.begin(),v.end(),0);

   //결과출력
   //출력할 공간을 일정하게 하기 위하여 자리수를 구한다.
   jari=Jsu(N);
   //한 줄에 10개씩 출력한다.
   cout << "Vector 안에 있는 짝수들]" << endl;
   for(i=0;i<v.size();i++)
   {
      cout << setw(jari);
      if((i+1)%10) cout<<v[i];
      else cout << v[i] << endl;
   }
   cout << endl << endl;

   cout << "1 ~ " << N <<"까지 중 짝수인 수의 개수 : "  << v.size() << endl;
   cout << "1 ~ " << N <<"까지 중 짝수인 수의   합 : "  << Sum << endl;

   return 0;
}

 

참고풀이 결과]

 

 

 

 

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

 

반응형

댓글