소프트웨어/C

[2004년 기말 2번] 초 계산 - 나눗셈 / 나머지

카켈 2007. 2. 11. 04:08



1. 목적
  - 나눗셈과 나머지를 이해한다.
  - 시간에 대한 계산을 이해한다.

2. 문제 (점수 : 20 점)
  - 초를 입력 받아 일/시간/분/초 로 분리하여 출력하는 프로그램을 작성하여라.
  - 출력 화면
시간을 초단위로만 입력하세요 : 123456
123456초는 1일 10시간 17분 36초 입니다.
Press any key to continue


3. 이해
  - 시간을 원하는 단위로 맞출수 있는가?
  - 나머지와 나눗셈 연산자를 이해 했는가?

4. 코드
#include <stdio.h>

int main()
{
 long in = 0;
 printf("시간을 초단위로만 입력하세요 : ");
 scanf("%d", &in);

 printf("%d초는 %d일 %d시간 %d분 %d초 입니다.\n", in, in / (3600*24), in % (3600*24) / 3600, in % 3600 / 60  , in % 60);
 
 return 0;
}


5. 해설

  - 기본적인 원리는 하루는 60 초 (=1분) / 3600 초 (=1시간) / 3600 * 24 초 (= 1일)  입니다. 따라서 원하는 시간 단위값을 얻고 싶으면 일수일 경우는 1일에 해당하는 초를 나눈 몫을 쓰면 되고 시간일 경우 초를 일수 로 나눈 나머지를 시간에 해당하는 초로 나누면 됩니다. 마찬가지로 분을 구하고자 한다면 시간에 해당하는 초를 나눈 나머지를 분에 해당하는 초의 크기로 나누면 되며, 초인 경우 같은 방법으로 해도 되나 위의 경우 그 밑 단위가 없으므로 60을 나눈 나머지로 썼습니다.
  - 기초적인 계산이지만 천천히 이해하지 않으면 구현에 애로사항이 있습니다.

6. 참고
 - http://www.winapi.co.kr/clec/cpp1/5-1-1.htm : 연산자