2013-05-30 69 views
-3

所以我試圖用for循環來填充數字1-8的數組。然後添加:For循環和加法

1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 +麻木= X

然後將其保存到稱爲X的變量。我已經完成了數組填充,但我不知道如何計算數組的總和+您輸入的數字。希望有一些幫助很多。

#include <iostream> 

using namespace std; 

int main() 
{ 

int array[8]; 
int numb; 
int x; // x = summary of array + numb; 

cin >> numb; // insert an number 

for (int i = 0; i <= 8; i++) 
{ 
    array[i]=i+1; 

} 
for (int i = 0; i < 8; i++) 
{ 
    cout << array[i] << " + "; 
    } 

} 
+2

拿筆記'的std :: iota'的。沒有必要重塑它。你也在訪問'array [8]',並查看'std :: accumulate'來求和它。 – chris

回答

3

更改最後部分:

x = numb; 
for (int i = 0; i < 8; i++) 
{ 
    x = x + array[i]; 
} 

cout<<x<<endl; 

現實不過,如果你想添加的前n個整數,有一個公式:

(n*(n+1))/2; 

讓你整個計劃將是:

#include <iostream> 

using namespace std; 

int main() 
{ 
int n = 8; 
int numb; 
cin >> numb; // insert an number 

int x = n*(n+1)/2+numb; 
cout<<x<<endl; 
} 
+0

+1簡化公式 –

1

對於初始循環,取出=:

for (int i=0; i<8; i++) { array[i]=i+1; } 

對於將所有的元件的陣列的,然後加入麻木:

var x=0; 
for (int i=0; i<8; i++) { x += array[i]; } 
x+=numb; 

然後就可以清點你X變量。

+0

+1,但爲了將來的參考,您應該考慮解釋*爲什麼*他應該將'<='更改爲'<'。如果你只是告訴他需要解決什麼,它並沒有幫助他。重要的是他要**瞭解需要修復的東西。 –

0

除非你需要使用for循環和數組(例如,這是家庭作業),你可能要考慮的代碼更喜歡:

std::vector<int> array(8); 

// fill array: 
std::iota(begin(array), end(array), 1); 

int numb;  
std::cin >> numb; 

int total = std::accumulate(begin(array), end(array), numb); 

std::cout << "Result: " << total;