문제

안녕 모두들. 나는 C ++를 계속 배우고 있으며, 초를 날, 몇 분, 초로 형식으로 변환하는 '도전'을 설정했습니다.

예 : 31600000 = 365 일, 46 분, 40 초.

using namespace std;
const int hours_in_day = 24;
const int mins_in_hour = 60;
const int secs_to_min = 60;

long input_seconds;
cin >> input_seconds;

long seconds = input_seconds % secs_to_min;
long minutes = input_seconds / secs_to_min % mins_in_hour;
long days = input_seconds / secs_to_min / mins_in_hour / hours_in_day;

cout << input_seconds << " seconds = "
     << days << " days, "
     << minutes << " minutes, "
     << seconds << " seconds ";

return 0;

그것은 작동하고 정답을 제시했지만 완료 한 후에는 다른 사람들이 어떻게 다루었고 그들의 사람들이 어떻게 달랐는지 살펴 보았습니다. 내가 뭔가 빠진지 궁금합니다.

감사합니다, 댄.

도움이 되었습니까?

해결책

프로그래밍의 것 중 하나는 무언가를하는 방법이 하나만 없다는 것입니다. 사실 내가 그것에 마음을 정리한다면, 나는 이것을 달성하기 위해 완전히 다른 방법을 만들 수있을 것입니다. 코드가 요구 사항을 충족하는 경우 아무것도 누락되지 않습니다.

즐거움을 위해 다음은 몇 시간을 포맷하는 방법이 있습니다 : 분 : 창 아래에서 초elapsed 이중이며 그 이후로 경과 한 초의 수를 나타냅니다 ... 뭔가)

sprintf_s<bufSize>(buf, "%01.0f:%02.0f:%02.2f", floor(elapsed/3600.0), floor(fmod(elapsed,3600.0)/60.0), fmod(elapsed,60.0));

다른 팁

이것은 몇 초를 DD/HH/MM/SS로 변환하는 가장 쉬운 방법 인 것 같습니다.

#include <time.h>
#include <iostream>
using namespace std;    

time_t seconds(1641); // you have to convert your input_seconds into time_t
tm *p = gmtime(&seconds); // convert to broken down time

cout << "days = " << p->tm_yday << endl;
cout << "hours = " << p->tm_hour << endl;
cout << "minutes = " << p->tm_min  << endl;
cout << "seconds = " << p->tm_sec << endl;

도움이되기를 바랍니다!

문안 인사,

스토 초

나는 Stephen Prata의 책의 도전이라고 생각합니다. 나는 다음과 같이했다 :

#include <iostream>

using namespace std;

int main()
{
    long input_seconds = 31600000;

    const int cseconds_in_day = 86400;
    const int cseconds_in_hour = 3600;
    const int cseconds_in_minute = 60;
    const int cseconds = 1;

    long long days = input_seconds / cseconds_in_day;
    long hours = (input_seconds % cseconds_in_day) / cseconds_in_hour;
    long minutes = ((input_seconds % cseconds_in_day) % cseconds_in_hour) / cseconds_in_minute;
    long seconds = (((input_seconds % cseconds_in_day) % cseconds_in_hour) % cseconds_in_minute) / cseconds;
    cout << input_seconds << " seconds is " << days << " days, " << hours << " hours, " << minutes << " minutes, and " << seconds << " seconds.";

    cin.get();
    return 0;
}

예 : 31600000 = 365 일, 46 분, 40 초.

진짜?

$ bc
365*24*60*60 + 46*60 + 40
31538800

365*24*60*60 + 1066*60 + 40
31600000

입력을 "며칠, 시간, 몇 분 및 초로 변환 한 다음 시간을 버린 다음"입력을 며칠로 변환, 하루 (예 : 60 개 이상일 수 있음) 및 초로 변환 "을 의미합니까?

두 번째 경우에는 몇 분 동안 지침을 교체해야한다고 생각합니다.

long minutes = input_seconds / secs_to_min % (mins_in_hour * hours_in_day);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top