본문 바로가기

프로그래밍/자료구조/알고리즘

커맨드라인 을 통한 시간 초 변환 예제



 

이글은 과제 마감일 2010-03-23 에 공개 됩니다.

현 자료구조 교수님이 첫번째로 내주신 과제 입니다.

시간표현을 입력받아 초로 환산 하는 프로그램
- 입력은 시간,분,초 순서로 3개의 숫자를 커맨드 라인에서 입력 받는다.
- 입력'시간' 은 0~23, '분' 은 0~59, '초'는 0~59 값을 갖는다.
- 함수를 구현할것

실행 예) conv 14 20 55
출력 예) 51655 seconds

cmdtime.c

 

#include 
#include  // atoi를 사용하기 위해 헤더 불러옴 

int convert_to_second(int hour, int minute, int second);

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

 int result;
 int h,m,s;

 /*

  *argv 를 사용할경우 인수를 한개밖에 넘겨받지 못하기 때문에 여러개를 받기위해
  **argv 를 사용한다.

  command line 에서 conv 시간 분 초 를 입력하면
  argc에는 숫자 4,
  argv[0]에는 실행파일 경로가,
  argv[1]에는 시간,
  argv[2]에는 분,
  argv[3]에는 초 가 입력된다. 
  단 이때 argv는 문자열이다.

 */

 if(argc != 4)  //올바른 입력이 아닐때는 프로그램을 종료한다. (넘겨 받은 인수 무조건 4가 아닐때)
 {
  printf("올바르지 않은 입력입니다. conv 시간 분 초 로 입력하세요\n");
  return 0;
 }

 h = atoi(argv[1]); //문자열을 숫자 값으로 변환하기위해 atoi함수를 사용하였다.
 m = atoi(argv[2]);
 s = atoi(argv[3]);

 // 입력‘시간’는0~23, ‘분’은0~59, ‘초’는 0~59의 값을갖음 (제약 조건)
 if (h > 23)
 {
  printf("시간단위가 23시 보다 큽니다.\n");
  return 0;
 }
 else if (m > 59)
 {
  printf("분단위가 59분 보다 큽니다.\n");
  return 0;
 }
 else if (s > 59)
 {
  printf("초단위가 59초 보다 큽니다.\n");
  return 0;
 }

 //함수 호출해서 결과값 result 변수에 담아줌
 result = convert_to_second(h,m,s);

 printf("%d Seconds", result);
}
int convert_to_second(int hour, int minute, int second)
{
 int temp;

 temp = hour*3600 + minute*60 + second; //1시간은 3600초, 1분은 60초이다. (초로 환산해야하니 모두 더해준다)

 return temp; // 반환된 값
 
}