목적
- 프로그램 인수를 활용한다.
- 함수 호출을 이해한다.
문제
코드
#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 과 유사한 역할을 하나 오류 메시지를 출력하는 목적으로 만들어 졌습니다.
참고
- 유사 문제
- 실행 화면