[C언어-기초실습-8] 시간을 초로 변환거나 초를 시간으로 변환하기

in #kr-dev5 years ago (edited)

[C언어-기초실습-8] 시간을 초로 변환거나 초를 시간으로 변환하기



오늘은 시간을 가지고 놀아보는 시간을 가져 봅시다. 시간, 분, 초의 대한 기본 개념을 가지고 시간을 초로 바꾸거나 초를 시간으로 바꾸는 방법을 실습을 하도록 하죠.

1. 문제의 이해


시간의 형태은 다음과 같습니다.


분 => 60초
시 => 60분 => 60x60 = 3600초
일 => 24시 => 60x60x24 = 86400초

이 수치를 잘 기억 해주세요.

다음으로, 특정 시간을 입력 받을 때 그 시간값을 초로 변환하는 방법을 살펴 보도록 하죠.

시간을 초로 변환


시간(시/분/초) 입력을 다음과 같이 설정합니다.

printf("시 분 초를 입력 하시오? ");
scanf("%d %d %d",&hour, &min, &sec);

hour, min, sec로 시/분/초 값을입력 받습니다. 이 값을 초로 변환을 해야 겠죠.

tmp = hour*3600+min*60+sec;

위 식처럼 간단히 표현이 됩니다. 1시간은 3600초입니다. 시간 곱하기 3600초 하면 시간에 대한 초가 계산이 됩니다. 1분은 60초이기 때문에 분에 60초를 곱하면 분에 대한 초가 계산이 됩니다. 초는 그대로 더하면 됩니다.

초를 시/분/초로 변환


입력 된 초가 정확히 몇시/몇분/몇초의 시간인지 계산하는 방법을 알아보도록 하죠. 방금 시/분/초를 초로 변환하는 방법을 역순으로 하면 초를 시/분/초로 구할 수 있습니다.

전체초 => 전체초%60 => 초
전체초 => 전체초/60 => 전체분
전체분 => 전체분%60 => 분
전체분 => 전체분/60 => 시

이걸 코딩화 하면 아래와 같습니다. 참고로 임시 저장장소 tmp변수를 선언하여 처음 tmp은 전체초를 담고 있습니다.

sec=tmp%60; //전체초 % 60 = 초
tmp=tmp/60; //전체분 tmp에 저장
min=tmp%60; //전체분 % 60 = 분
hour=tmp/60; //전체분 / 60 = 시

이렇게 코딩화 할 수 있습니다. 다른 스타일로 코딩을 할 수 있는데 아래와 같이 표현 했습니다.

hour=tmp/3600; //전체초 / 3600 = 시
tmp=tmp%3600; //전체초 % 3600 = 전체분
min=tmp/60; //전체분 / 60 = 분
sec=tmp%60; //전체분 % 60 =초

이렇게 코딩을 할 수도 있습니다. 또 다른 스타일로도 코딩이 가능하지만 이정도로 마무리 합니다.

그러면 위 코딩이 정상적으로 수행되는지 알아 보아야 겠죠.

2. 코딩


코딩은 우선 시/분/초를 입력을 받아서 초로 변환하고 다시 변환한 초를 가지고 시/분/초로 변환하여 정상적으로 시간 계산이 이루어지는지 알아보도록 하죠. 초도 중간에 입력을 받을 수 있지만 이 부분은 전체소스 상에 코딩이 되어 있지만 주석처리를 해놓았네요. 그냥 다이렉트로 시/분/초를 입력 받아 초로 변환하고 변환 초를 다시 시/분/초를 변환하여 정상적인 실행 결과가 나오는지 확인하는 소스로 만들었습니다.

[전체소스]

#include <stdio.h>
#include <Windows.h>

int main(int argc, char *argv[]) {
    
    int hour, min, sec;
    long tmp;
    
    printf("시 분 초를 입력 하시오? ");
    scanf("%d %d %d",&hour, &min, &sec);
    
    tmp = hour*3600+min*60+sec;
    
    printf("%02d:%02d:%02d => %d \n",hour,min,sec, tmp);
    
    
    //printf("초를 입력 하시오? ");
    //scanf("%d",&tmp);
    
    printf("%d => ",tmp);
    
    hour=tmp/3600;
    tmp=tmp%3600;
    min=tmp/60;
    sec=tmp%60;
    
    /*
    sec=tmp%60;
    tmp=tmp/60;
    min=tmp%60;
    hour=tmp/60;
    */
    
    printf("%02d:%02d:%02d \n",hour,min,sec);
    
    system("pause");
    return 0;
    
}

[결과]
a1.jpg

마무리


오늘은 간단히 시/분/초 변환이라는 주제로 실습을 해보았습니다. 시간을 컨트롤 할 수 있게 되면 시간에 관련 된 다양한 분야에 적용 할 수 있는 능력이 생기게 되는 것이 됩니다. 시간에 관련 계산이 필요 할 때 이 원리가 활용되기 때문에 잘 이해하시기 바랍니다.


Sponsored ( Powered by dclick )

dclick-imagead

Coin Marketplace

STEEM 0.24
TRX 0.11
JST 0.031
BTC 61243.73
ETH 2974.21
USDT 1.00
SBD 3.69