我发现的所有其他问题都使用不同的语言,对于像我这样的初学者来说有点太复杂了。
我的代码有什么问题,我无法获得两个输入日期之间的确切天数?
int getDate()
{
std::cout << "Begins from: i.e 7th";
int dateStart;
std::cin >> dateStart;
std::cout << "Ends: i.e 22nd";
int dateStops;
std::cin >> dateStops;
int nrDays = dateStart;
for(nrDays; nrDays < dateStops; nrDays++)
{
}
return nrDays;
}
这可以使用 for loop 吗?
我很抱歉提出愚蠢的问题。我刚刚开始学习C ++,很多东西对我来说还是新的。
感谢您的回答! :)
p.s另外,如果有人想提出如何排除周末的想法,那将是非常好的。虽然,我的直觉告诉我,它需要比我有能力做的更多的编码。
答案 0 :(得分:2)
您必须使用单独的变量来计算天数。
尝试这个。
int getDate()
{
std::cout << "Begins from: i.e 7th";
int dateStart;
std::cin >> dateStart;
std::cout << "Ends: i.e 22nd";
int dateStops;
std::cin >> dateStops;
int nrDays = dateStart;
int daysCount=0;
for(nrDays; nrDays < dateStops; nrDays++)
{
daysCount++;
}
return daysCount;
}
答案 1 :(得分:1)
你的循环问题在于你假设迭代变量是一个计数器。事实证明在许多循环中都是如此,但在这里它并非如此。您的变量nrDays
实际上不是几天,而是一个日期(从dateStart
开始并转到dateStops
)。你真的想要更像这样的东西:
int nrDays = 0;
for( int date = dateStart; date < dateStops; date++)
{
if (isWeekday(date)) nrDays++;
}
return nrDays;
请注意,您无法从该月的某一天开始检测工作日。你需要知道哪个月和哪一年,或者其他什么方式得到一周中的那一天。
答案 2 :(得分:0)
由于这一行,你的代码不应该编译:
std::cin dateStart;
应该是:
std::cin >> dateStart;
一部分,你循环是没用的。您显然希望nrDays
等于dateStop - 1
:
int nrDays = dateStop - 1;
或更确切地说:
int nrDays = std::max(dateStop - 1, dateStart);
是:dateStart
和dateStop - 1
之间的最大值。