2016-03-15 108 views
0

所以我很難弄清楚在for循環完成後如何讓這段代碼執行消息。每次循環後我都會繼續這樣做。我有多個循環檢查函數是否增加/減少/不減少/不增加。我只會發布越來越多的,因爲他們都有同樣的問題。在for循環完成後只打印一行(C++)

我試着這樣說:

for(i=0; i<n; i++) 
    { 
      if(val[i] < val[i+1]) 
      { 
       cout << "Function is increasing!" << endl; 
      } 

    } 

以及與計數器,但我敢肯定,我用計數器錯誤。

+2

其不清楚應該輸出什麼。如果所有'i'都是這種情況,您是否想打印「功能正在增加」? – user463035818

+0

是的,這是它應該做的@ tobi303 –

回答

1

你可以探微創建一個變量來保存功能的狀態:

enum State { 
Increasing, 
Decreasing, 
NonDecreasing, 
NonIncreasing 
} state; 

,並在循環

for(i=0; i<n; i++) 
{ 
     if(val[i] < val[i+1]) 
     { 
      state = State::Increasing; 
     } 

} 

switch(state) { 
    case Increasing: 
    std::cerr << "Increasing" << std::endl; 
    break; 
    case Decreasing: 
    ... 
} 
+1

雖然這個問題並不完全清楚,但我很肯定這不符合要求。我認爲只有在val [i] atkins

+0

如果爲整個算法保存一個狀態,而不是打印最後一個狀態(我同意這可能不正確)。他可以通過檢查舊狀態 ' state = State :: Unknown;' 比在循環中更新當前狀態: 'if(state == State :: Unknown)state = State :: Increasing; else state == State :: Other;' –

2

使用一個簡單的狀態機設置正確:檢查所有點驗證你的狀況。如果他們這樣做,打印一些東西

bool increasing = true; 
for (i=0 ; i<n ; i++) 
{ 
    increasing &= val[i] < val[i+1]; 
} 
if (increasing) 
{ 
    std::cout << "Function is increasing!\n"; 
} 
+0

你應該在for循環中打開或使用'for(i = 0; i Goodies

+1

@Goodies人應該做很多事情來改善答案。回答這個問題的開始:D但是,我同意你的建議。 – 2016-03-15 16:15:56