2014-03-31 43 views
0

我發現的所有其他問題都是使用不同的語言,對於像我這樣的初學者來說有點太複雜。計算特定日期範圍與** for循環**之間的天數? (C++)

我的代碼有什麼問題,我無法得到我的兩個輸入日期之間的確切天數?

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循環

對於提出愚蠢的問題,我很抱歉。我剛剛開始學習C++,很多東西對我來說仍然是新的。

謝謝你的回答! :)

p.s此外,如果有人想拋出一個想法如何排除週末例如,這將是非常好的。儘管,我的直覺告訴我,它需要比我有能力做的更多的編碼。從

std::cin >> dateStart; 

的一部分,你循環是沒用的:

+0

該代碼無法編譯。你想要做什麼? – Shoe

+0

簡單的方法,不排除任何,是'返回dateStops - dateStart;' –

+0

是的,忘記了從std :: cin在帖子..它在我的代碼,但。我的目標是獲得中間的確切天數,即7天和10天,即3天。 – user3476851

回答

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

這正是我所期待的。我不得不說,其實我有我的代碼設置這樣的一個點,但由於某些原因,我不喜歡運行它..愚蠢的我:)非常感謝你爲這個解決方案! :) – user3476851

0

您的代碼應該不是因爲這一行的編譯:

std::cin dateStart; 

這應該是。你顯然想要的是nrDays等於dateStop - 1

int nrDays = dateStop - 1; 

或者更確切地說:

int nrDays = std::max(dateStop - 1, dateStart); 

是:dateStartdateStop - 1之間的最大。

1

你的循環的問題是你假設迭代變量是一個計數器。事實證明,在許多環路中都是如此,但事實並非如此。您的變量nrDays實際上不是幾天,而是一個日期(從dateStart開始,到dateStops)。你真的想要更像這樣的東西:

int nrDays = 0; 

for(int date = dateStart; date < dateStops; date++) 
{ 
    if (isWeekday(date)) nrDays++; 
} 

return nrDays; 

請注意,你不能檢測到從一個月的一天的平日。你需要知道月份和年份,或者某種程度上得到一週中的某一天。

+0

啊,我明白了爲什麼我現在錯了!簡單的錯誤和邏輯問題會讓你感到非常愚蠢! p.s似乎它會花費更多的高級編碼來實現某些功能,這些功能可以讓我從Windows日曆等等中獲得日期。但是我會及時到達那裏:)謝謝您的回答! – user3476851