题
嘿大家。我已经继续学习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;
它的工作原理和正确答案来了,但在完成之后我看了看其他人如何解决了它,他们是不同的。我想知道如果我失去了一些东西。
谢谢,丹。
解决方案
一个关于编程的事情是,有永远只是一种方法做一些事情。事实上,如果我是我下定决心,我也许能拿出一打完全不同的方式来实现这一目标。如果你的代码符合要求,你不会错过任何。
有关您的娱乐,这里的格式化涨分办法:分:Windows下秒(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 /小时/分钟/ 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;
我希望它能帮助!
此致
Stoycho
我觉得是从斯蒂芬·普拉塔的书挑战。我做到了如下所示:
#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);
不隶属于 StackOverflow