2016-03-16 266 views
-1

我是学习C++的编程初学者。C++秒钟分钟

我有一些代码,将提供小时分钟和秒输出。 像:

x hours y minutes z seconds 

我要的是,当x, y or z等于0不具有显示出来这样:
30hours 0minutes 5seconds将成为:
30hours 5seconds
我可以通过使用吨的if条件来做到这一点,但它变得非常混乱。 如果有另一种方式请让我知道,因为我真的想学习正确的方式提前

- 编辑 -

由于这是我的实际代码

if (hours == 0 && mins == 0 && secs != 0) { 
    cout << secs << "secs " << endl; 
} 
if (hours == 0 && mins != 0 && secs == 0) { 
    cout << mins << "mins " << endl; 
} 
if (hours != 0 && mins == 0 && secs == 0) { 
    cout << hours << "hours " << endl; 
} 
if (hours == 0 && mins != 0 && secs != 0) { 
    cout << mins << "mins " << secs << "secs " << endl; 
} 
if (hours != 0 && mins == 0 && secs != 0) { 
    cout << hours << "hours " << secs << "secs " << endl; 
} 
if (hours != 0 && mins != 0 && secs == 0) { 
    cout << hours << "hours " << mins << "mins " << endl; 
} 
if (hours != 0 && mins != 0 && secs != 0) { 
    cout << hours << "hours " << mins << "mins " << secs << "secs " << endl; 
} 

这工作,但我不认为这是实际的程序员如何做到这一点。

这里的第二个小时分钟秒转换

void readabletime(const double a){ 

hours = a/3600; 
mins = (a/60 - hours * 60); 
secs = (a - ((hours * 3600) + (mins * 60))); 

---更新---- 我想到了一个更简单的方法有3个条件语句

if (hours != 0) { 
    cout << hours << "hours"; 
} 
if (mins != 0) { 
    cout << mins << "mins" 
} 
if (secs != 0) { 
    cout << secs << "secs" 
} 
+3

没有一个特定的问题和一些代码来备份它,这是无关紧要的。我也不知道你为什么需要很多条件。 –

+1

_“我可以通过使用大量if条件来做到这一点”_我认为两个应该是足够的。 –

+0

是三个实际变量中的时间还是它在tm结构中? –

回答

1

试着这么做这个:

if (hours > 0) 
    cout << hours << "hours "; 

if (minutes > 0) 
    cout << minutes << "minutes "; 

if (seconds > 0) 
    cout << seconds << "seconds "; 

cout << endl; 

该代码应该做你想要的,只有3个条件。如果所有值均为零,则只打印新行。

+0

在这个问题中,他给出的样本是'x小时y分钟和z秒',包括单词和 - 尽管他不知道如何编码,似乎是他以后的样子。考虑到这一点,你将如何做,并会根据哪些值为零来移动? –

+0

这正是我的意思。当你写这个时,我正在更新文本。 –

+0

@JerryJeremiah从他的“将成为”声明中推断出他并不需要在输出中使用“and”这个词。看起来,根据OP最近的编辑,扣除是准确的。 –