2017-10-08 4 views
-1

입력 할 때 36011 결과는 11 대신 36011 두 번째 출력 결과, 컴파일러 설정이 올바르게 설정되었는지 확인했습니다. 나는 진정으로 다른 것을 알지 못한다. 나는 long int를이 임무에 사용해야하고, 내 코드에서 mod 함수를 사용하려고하면 나를 위해 일하지 않는다.mod 함수가 제대로 작동하지 않습니다

#include <iostream> 

using namespace std; 

int main() 
{ 
long long int seconds; 

cin >> seconds; 

long long int minutes = seconds/60; 
long long int hours = minutes/60; 
long long int days = hours/24; 

cout << "Total seconds: " << seconds << endl; 

if(seconds <= 0) 
{ 
    cout << "\nTotal seconds must be greater than zero"; 
} 

else 
{ 
    if(days > 0) 
    { 
     hours %= 24; 
     cout << "\n" << days << " day(s)"; 
    } 
    if(hours > 0) 
    { 
     minutes %= 60; 
     cout << "\n" << hours << " hour(s)"; 
    } 
    if(minutes > 0) 
    { 
     seconds %= 60; 
     cout << "\n" << minutes << " minute(s)"; 
    } 
    if(seconds > 0) 
    { 
     cout << "\n" << seconds << " second(s)"; 
    } 
} 
cout << endl; 

return 0;} 
+1

'36011'을'seconds'로 입력하면'minutes' 변수는'600'을 유지합니다. 따라서'minutes % = 60'을 할 때'minutes'는'0'의 값을 갖습니다. 그러므로'if (minutes> 0) {...}'는 실행되지 않고'seconds'에 대한 모듈러스 연산자를 수행하지 않습니다. 디버거를 사용하여 쉽게 발견 할 수 있으므로, 어떻게 그렇게하는지 배우는 것이 좋습니다. – Fureeish

답변

0

값을 잘못 계산했습니다. 다음과 같이 좀 더 시도하십시오 :

#include <iostream> 

using namespace std; 

int main() 
{ 
    long long int seconds; 
    cin >> seconds; 

    if (seconds <= 0) 
    { 
     cout << "Total seconds must be greater than zero" << endl; 
    } 
    else 
    { 
     cout << "Total seconds: " << seconds << endl; 

     long long int minutes = seconds/60; seconds %= 60; 
     long long int hours = minutes/60; minutes %= 60; 
     long long int days = hours/24; hours %= 24; 

     /* alternatively: 
     long long int days = seconds/86400; seconds %= 86400; 
     long long int hours = seconds/3600; seconds %= 3600; 
     long long int minutes = seconds/60; seconds %= 60; 
     */ 

     if (days > 0) { 
      cout << days << " day(s)" << endl; 
     } 
     if (hours > 0) { 
      cout << hours << " hour(s)" << endl; 
     } 
     if (minutes > 0) { 
      cout << minutes << " minute(s)" << endl; 
     } 
     if (seconds > 0) { 
      cout << seconds << " second(s)" << endl; 
     } 
    } 

    return 0; 
} 
관련 문제