목적
  - 난수 생성 및 조건문을 응용한다.

문제
사용자 삽입 이미지

코드

#include <iostream>
#include <cstdlib>
#include <ctime>

int main(void)
{
 srand((unsigned)time(NULL));
 rand();

 float afIn[50] = {0};
 float fTotal = 0;
 int i, iUp, iDown;
 i = iUp = iDown = 0;

 for(i = 0; i < 50; i++)
 {
  afIn[i] = ((rand() % 2001) - 1000) / 1000.0;
  std::cout << afIn[i] << '\t';
  iUp = afIn[i] > 0 ? iUp + 1 : iUp;
  iDown = afIn[i] < 0 ? iDown + 1 : iDown;
  fTotal += afIn[i];

 }

 std::cout << std::endl;
 std::cout << "0 보다 큰 값의 수 : " << iUp << '\n';
 std::cout << "0 보다 작은 값의 수 : " << iDown << '\n';
 std::cout << "난수들의 평균 : " << fTotal / 50 << '\n';

 return 0;
}


해설
  - using namespace std; 를 쓰지 않을때에는 cout 앞에 보시다시피 std:: 라는 것을 붙여 넣으면 됩니다. std::endl 도 마찬가지 입니다.
  - 이전 문제에도 보다 시피 구간내에 난수를 만들어서 계산하는 문제였습니다. 과년도 문제에도 비슷한 유형이 많으니깐 눈여겨 보셔야 할 문제 입니다.
 - 삼항 연산자는 검색하여 찾아 보시기 바랍니다.

참고
  - 유사 문제

Posted by 카켈




목적
  - 포인터를 이해한다.
  - 삼항 연산자를 자유롭게 쓴다.

문제

사용자 삽입 이미지
코드

#include <iostream>

using namespace std;

int main(void)
{
 float afIn[4] = {0};
 int i = 0;
 float *fMax,*fMin;
 fMax = fMin = &afIn[0];

 cout << "네 개의 실수를 입력하세요 : ";
 while(i < 4)
 {
  cin >> afIn[i];
  fMax = (*fMax < afIn[i] ? &afIn[i] : fMax);
  fMin = (*fMin > afIn[i] ? &afIn[i] : fMin);
  i++;
 
 }

 
 cout << "최소값 : " << *fMin << endl << "최대값 : " << *fMax << endl;

 return 0;
}


해설
  - 포인터로 *[변수] 선언시 [변수] 는 그 값이 저장될 주소(reference)를 가리키며 *[변수]를 하면 그 저장된 주소로 가면 가지고 있는 값을 가리킵니다.(derefernce)
  - 포인터 아닌 일반 변수가 포인터에서 쓰는 주소를 저장하고 싶으면 앞에 & (reference) 연산자를 붙이면 됩니다. C++ 에서 새로 추가된 기능 중 하나 입니다.
  - 삼항 연산자는 많이 풀어 봐서 이해 되실 겁니다. 유사 예제들을 검색해서 보시기 바랍니다.

참고
  -유사문제

Posted by 카켈
이전페이지 1 다음페이지