2015-02-12 122 views
0

這是我到目前爲止所。而且它似乎只添加了第一個+最後一個,第二個+最後一個等等。我不知道如何使它添加第二個+倒數第二個等等。 它是一個動態矢量,迭代器不能使用。加入第一+最後一個元素,第二+倒數第二個元素等爲載體

#include iostream 
#include vector 
using namespace std; 

int main() 
{ 
    vector<int> ack; 
    int add; 
    while(cin >> add) 
    { 
     ack.push_back(add); 
    } 

    for(size_t i = 0; i < ack.size(); i++) 
    { 
     cout << ack[i] + ack[ack.back() - 1] << endl; 
    } 
} 

回答

2

你的代碼是雙重錯誤的。 ack.back()只是最後一個元素的值 - 與您嘗試執行的任何操作無關。此外,ack.back() - 1是不是你的循環指數的函數 - 所以ack[ack.back() - 1]只是一些常數,你將在循環添加每次。

既然你想要的「最後 - 第N個」每次元素,其言下之意是,你需要減去從size()東西。所以,你想要做的是:

for(size_t i = 0; i < ack.size(); i++) 
{ 
    cout << ack[i] + ack[ack.size() - i - 1] << endl; 
} 
+0

謝謝!輸出雖然打印兩次。所以,如果我輸入1,2,3,4就會輸出5,5,5,5。 – Webtm 2015-02-12 03:44:26

+1

@ShaunMorgan是的。我們可以做些什麼來解決它? – Barry 2015-02-12 03:45:53

+0

我不知道。我是一名編程初學者。沒有很容易捕捉到。 – Webtm 2015-02-12 03:49:16

相關問題