2016-10-09 2 views
-3

은 PC의 현재 시간을 가져 와서 트래픽이 있는지 여부를 표시하는 C 프로그램을 만들어야합니다.c에서 비교를 위해 무엇을 사용할 것인가?

교통 모든 : 오전 7시에서 오전 10시까지 & & 17pm - 19pm

시간 비교에 도움이 필요합니다. 메신저 경우 다른 사용합니다.

경우 ((MYTIME> 7 & & MYTIME < 10) & & (MYTIME> 17 & & MYTIME < 19))

+0

글쎄, 그건 아마해야한다에 " 또는 "최상위 레벨 (중간 운영자)에서. 현재 시간이 오전 * 또는 * 저녁인지 확인해야합니다. 분명히 현재 시간은 결코 아침에 *와 * 저녁에 동시에있을 수 없습니다. 또한,'mytime' 변수의 타입이 무엇인지 불분명합니다. – unwind

답변

0

사용 || (OR) 대신 && (AND). 아니면 결코 작동하지 않을 것입니다.

그리고, 시간을 얻을처럼 뭔가 할 :

#include <stdio.h> 
#include <time.h> 

int main() { 
    time_t now = time(NULL); 
    struct tm *now_tm = localtime(&now); 
    int hour = now_tm->tm_hour; 

    if ((hour > 7 && hour < 10) || (hour > 17 && hour < 19)) 
     printf("traffic\n"); 
    else 
     printf("smooth\n"); 

    return 0; 
} 
+0

오오. 그것을 시도했다. 아침 8시 46 분에 인쇄하지만 인쇄는 부드럽습니다. 그것은 트래픽이어야합니다 –

+0

당신이 트래픽을 인쇄하는 경우와 그렇지 않은 경우 원활하게 인쇄하고 있습니까? –

+0

@Nina_Jenner 시간을 어떻게 표현합니까? 위의 코드는 'mytime'에 시간이 포함되어 있다고 가정합니다. – Barmar

0

심지어 초 (출처 : http://www.cplusplus.com/reference/ctime/difftime/)를 사용할 수 있습니다,이 같은 :

#include <stdio.h> 
#include <time.h> 

int main() 
{ 
    time_t now; 
    struct tm newyear; 
    struct tm _7am; 
    struct tm _10am; 
    struct tm _5pm; 
    struct tm _7pm; 
    double mytime; 
    double s_7am, s_10am, s_5pm, s_7pm; 

    time(&now); 

    newyear = *localtime(&now); 
    newyear.tm_hour = 0; newyear.tm_min = 0; newyear.tm_sec = 0; 
    newyear.tm_mon = 0; newyear.tm_mday = 1; 

    _7am = *localtime(&now); 
    _7am.tm_hour = 7; _7am.tm_min = 0; _7am.tm_sec = 0; 
    s_7am = difftime(mktime(&_7am),mktime(&newyear)); 

    _10am = *localtime(&now); 
    _10am.tm_hour = 10; _10am.tm_min = 0; _10am.tm_sec = 0; 
    s_10am = difftime(mktime(&_10am),mktime(&newyear)); 

    _5pm = *localtime(&now); 
    _5pm.tm_hour = 17; _5pm.tm_min = 0; _5pm.tm_sec = 0; 
    s_5pm = difftime(mktime(&_5pm),mktime(&newyear)); 

    _7pm = *localtime(&now); 
    _7pm.tm_hour = 19; _7pm.tm_min = 0; _7pm.tm_sec = 0; 
    s_7pm = difftime(mktime(&_7pm),mktime(&newyear)); 

    mytime = difftime(now,mktime(&newyear)); 

    if ((mytime > s_7am && mytime < s_10am) || (mytime > s_5pm && mytime < s_7pm)){ 
    printf("Traffic!"); 
    }else{ 
    printf("Smooth..."); 
    } 


    return 0; 
} 
관련 문제