목적
  - 매개변수 입력을 익힌다. 원하는 자릿수의 숫자를 출력을 한다.

문제

사용자 삽입 이미지

코드

#include <iostream>
#include <cstdlib>

using namespace std;

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

{
 float iYear, iMonth, iDay;
 iYear = iMonth = iDay = 0;


 if(argc < 3)
 {
  cerr << "ERROR : 인수 부족" << endl;
  return -1;

 }

 if(argc > 3)
 {
  cerr << "ERROR : 인수 초과" << endl;
  return -1;

 }

 iYear = int(atof(argv[1]) / 10000) > 50 ? 1900 + int(atof(argv[1]) / 10000) : 2000 + int(atof(argv[1]) / 10000);
 iMonth = (int)atof(argv[1]) % 10000 / 100;
 iDay = (int)atof(argv[1]) % 100;

 cout << argv[2] << "님의 생일은 " << iYear << "년 " << iMonth << "월 " << iDay << "일 입니다." << endl;

 return 0;


}



해설
  - 명령줄 매개변수 입력은 예전 문제들 많으니깐 참조 하시기 바랍니다.

참고
  - 유사 문제
  - http://www.winapi.co.kr/clec/cpp1/10-4-2.htm : main 함수의 인수

Posted by 카켈




목적
  - 매개변수를 입력 받아 함수를 이용하여 출력한다.

문제
사용자 삽입 이미지

코드

#include <iostream>
#include <cstdlib>

using namespace std;

void add(float aA, float aB)
{
 cout << aA << " + " << aB << " = " << aA + aB << endl;
 return;
}

void sub(float aA, float aB)
{
 cout << aA << " - " << aB << " = " << aA - aB << endl;
 return;
}

void mul(float aA, float aB)
{
 cout << aA << " * " << aB << " = " << aA * aB << endl;
 return;
}

void div(float aA, float aB)
{
 cout << aA << " / " << aB << " = " << aA / aB << endl;
 return;
}

int main(int argc, char* argv[])
{
 if(argc != 3) cout << "두 개의 인수를 넣어 주세요." << endl;
 else
 {
  add(atof(argv[1]), atof(argv[2]));
  sub(atof(argv[1]), atof(argv[2]));
  mul(atof(argv[1]), atof(argv[2]));
  div((float)atof(argv[1]), (float)atof(argv[2]));

 }


 return 0;
}


해설
  - 유사 문제가 많아서 크게 설명하지 않겠습니다. div 함수를 그냥 하니깐 오류가 났습니다. cstdlib 의 div(int, int) 함수와 overloaded 모호 충돌 오류가 났습니다. 강제로 float 형변환을 해서 문제를 해결 했습니다.

참고
  -유사 문제
Posted by 카켈




1. 목적
  - 외부 실행시 매개변수 입력되는 방법을 이해한다.

2. 문제 (점수 : 20 점)
  - main() 함수의 인자로 다섯 개의 실수값을 받아들여서 최대/최소/평균값을 출력하는 프로그램을 만들어라
  - 출력 화면

C:\Work\2005_final_5\Debug>2005_final_5.exe 12.34 56.78 90.12 34.56 78.90
최대값 : 90.120000
최소값 : 12.340000
평균값 : 54.540000

C:\Work\2005_final_5\Debug>

3. 이해
  - 프로그램 실행시 매개변수로 입력 받을줄 아는가?
  - 최대/최소/평균값을 이해하는가?

4. 코드

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
 int i = 0;
 double total, max, min;
 total = 0.0;

 if(argc > 6) puts("입력된 값 초과!");
 else
 {
  if(argc < 6) puts("입력된 값 부족!");
  else
  {
   min = (float)atof(argv[1]);
   max = (float)atof(argv[1]);


   for(i = 1; i < 6; i++)
   {
    min = min > (float)atof(argv[i]) ? (float)atof(argv[i]) : min;
    max = max < (float)atof(argv[i]) ? (float)atof(argv[i]) : max;
    total += (float)atof(argv[i]);
   
   }
   printf("최대값 : %f\n", max);
   printf("최소값 : %f\n", min);
   printf("평균값 : %f\n", total / 5);


  }

 }

 return 0;
}


5. 해설
  - double 형으로 자료를 받아 출력해야지 소숫점 자릿수가 깨끗하게 나옵니다.
  - argc 는 인수의 개수를 argv 는 인수의 내용을 가리키는 포인터로 쓰입니다.
  - 자세한 디버깅 방법은 이전 포스트를 참조 하시기 바랍니다.

6. 참고
  - 유사 문제
Posted by 카켈
이전페이지 1 다음페이지