목적
  - 명령줄 인수를 이해한다.

문제
사용자 삽입 이미지

코드

#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char* argv[])
{

 int i = 1;
float fMax, fMin, fBuf;

 if(argc > 6 || argc < 6)
 {
  if(argc < 6)
  {
   cerr << "매개변수 부족" << endl;
   
  }
 
  if(argc > 6)
  {
   cerr << "매개변수 초과" << endl;
  }

  return -1;
 }

 fMax = fMin = fBuf = atof(argv[1]);

 while(i < 6)
 {
fBuf = atof(argv[i]);
fMax = fMax < fBuf ? fBuf : fMax;
fMin = fMin > fBuf ? fBuf : fMin;

  i++;

 }

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

 return 0;
}

해설
  - 명령줄 인수에서 0 은 프로그램을 1 부터 띄워쓰기 단위로 명령줄이 char* (문자열 변수 형태) 배열로 저장 됩니다.
  - 이전 문제들을 잘 참조 하세요

참고
  - 유사 문제
  - 실행 화면은 아래와 같습니다.

사용자 삽입 이미지

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 카켈




목적
  - 키보드로 실수 값을 배열로 받을 줄 안다.
  - 최대 / 최소값을 찾아 낸다.
  - 삼항 연산자를 쓸 줄 안다.

문제
사용자 삽입 이미지
풀이

#include <iostream>

using namespace std;

int main(void)
{
 float fIn[5] = {0};
 float fMin, fMax;
 int i = 0;
 cout << "다섯개의 실수 값을 입력하세요 : ";
 cin >> fIn[0] >> fIn[1] >> fIn[2] >> fIn[3] >> fIn[4];
 
 fMax = fMin = fIn[0];

 while(i < 5)
 {
  fMax = fMax < fIn[i] ? fIn[i] : fMax;
  fMin = fMin > fIn[i] ? fIn[i] : fMin;
  i++;
 }

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

 return 0;
}

해설
  - C 에서 주욱 보셨으면 크게 어려울 문제는 없습니다.
  - 삼항 연산자는 [조건] ? [참일때] : [거짓일때] 로 위 조건문에 값으로 바꿔지는 간단한 조건식입니다.

참고
  - 유사 문제

Posted by 카켈




1. 목적
  - 함수를 호출하는 방식을 이해한다.
  - 최대/최소값을 구하는 알고리듬을 이해한다.

2. 문제
  - 네 값을 입력받아 최대/최소값을 출력하는 프로그램을 작성한다.
  - 최대값. 최소값을 출력하는 함수를 작성한다.
  - 출력화면

===========================================
네 개의 값을 입력하세요 : 12.45 123.4 98 2.0
최소값 :    2.0
최대값 :  123.4
===========================================
Press any key to continue

3. 이해
  - 최대값/최대값을 찾을수 있는가?
  - 함수 호출을 할수 있는가?

4. 코드

#include <stdio.h>

void findmax(double,double,double,double);
void findmin(double,double,double,double);

void findmax(double a, double b, double c, double d)
{
 double max = 0;
 max = max < a ? a : max;
 max = max < b ? b : max;
 max = max < c ? c : max;
 max = max < d ? d : max;

 printf("최대값 : %6.01f\n", max);

 return;
}

void findmin(double a, double b, double c, double d)
{
 double min = 999999;
 min = min > a ? a : min;
 min = min > b ? b : min;
 min = min > c ? c : min;
 min = min > d ? d : min;

 printf("최소값 : %6.01f\n", min);

 return;
}


double main()
{
 float a,b,c,d;
 a = b = c = d = 0;

 printf("===========================================\n");
 printf("네 개의 값을 입력하세요 : ");
 scanf("%f %f %f %f", &a, &b, &c, &d);
 findmin(a,b,c,d);
 findmax(a,b,c,d);

 printf("===========================================\n");

 return 0;

}

5. 해설
  - findmin, findmax 는 각각 최소값, 최대값을 구하는 함수입니다.
  - 소숫점 입력을 위한 scanf 문은 float 형만 가능합니다.
  - 최대값과 최소값느 변할수 있는 극한 조건에서의 값에서 비교를 시작하는게 쉽습니다.
  - 선선언문(빈껍데기를 우선 만들어 참조시 오류 안나게 한다.)은 참고로 만들었습니다.

6. 참고
  - 구글 검색 : 최대값 최소값

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