목적
  - 프로그램 인수를 활용한다.
  - 함수 호출을 이해한다.

문제
사용자 삽입 이미지

코드

#include <iostream>
#include <cstdlib>
#include <cstring>

float add(float aA, float aB)
{ return aA + aB; }

float min(float aA, float aB)
{ return aA - aB; }

float mul(float aA, float aB)
{ return aA * aB; }

float div(double aA, double aB)
{ return aA / aB; }

using namespace std;

int main(int argc, char* argv[])
{
 if(argc < 4 || argc > 4)
 {
  cerr << "ERROR : 인수 부족" << endl;
  return 0;

 }

  if ( !(strcmp(argv[1], "+")) )
  {
   cout << argv[2] << " " << argv[1] << " " << argv[3] << " = " << add( atof(argv[2]), atof(argv[3]) ) << endl; }
 
  else
   {
   
   if ( !(strcmp("-", argv[1])) )
    { cout << argv[2] << " " << argv[1] << " " << argv[3] << " = " << min( atof(argv[2]), atof(argv[3]) ) << endl; }
   
   else
   {
    if ( !(strcmp("*", argv[1])) )
     { cout << argv[2] << " " << argv[1] << " " << argv[3] << " = " << mul( atof(argv[2]), atof(argv[3]) ) << endl; }

    else
    {
     if ( !(strcmp("/",argv[1])) )
      { cout << argv[2] << " " << argv[1] << " " << argv[3] << " = " << div( atof(argv[2]), atof(argv[3]) ) << endl; }

     else
     {
      cerr << "잘못된 연산자 입니다." << endl;

     }

    }

   }

  }
 
 return 0;
}


해설
  - argv 문자열 변수는 if(argv[1] == "+") 이런식으로 문자열 비교를 할수 없었습니다. strcmp 함수를 받아 NOT 연산자를 통해 비교 하시면 됩니다.
  - 커맨드 라인(실행줄) 파라매터(인수)는 이전 문제에 많이 언급되어 있습니다. 검색 하여 보시기 바랍니다.
  - cerr 객체는 cout 과 유사한 역할을 하나 오류 메시지를 출력하는 목적으로 만들어 졌습니다.

참고
  - 유사 문제
  - 실행 화면

사용자 삽입 이미지

Posted by 카켈