Функция мода не работает должным образом для меня

Когда я ввожу 36011, это приводит к тому, что второй вывод (ы) будет 36011 вместо 11, я убедился, что настройки компилятора были установлены правильно и все. Я действительно не знаю, что еще делать, я должен использовать long long int для этого назначения, и он просто не работает для меня, когда я пытаюсь использовать функцию 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

Решение

Вы неверно рассчитываете свои значения. Попробуйте что-то более похожее на это:

#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;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]