2017-10-08 19 views
-1

私は36011を入力すると2番目の出力が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; 
} 
関連する問題