2014-10-16 183 views
0

我一直在試圖做這個程序,但我卡住了,我仍然是初學者,任何幫助將不勝感激。 我需要的程序做嵌套for循環中的C++計算

  1. 打印10×10表,其中表中的每個條目的行數和列數
  2. 的總和包括蓄電池,將計算所有表的總和條目。

我遇到的問題是當我嘗試計算每個條目的行和列以及總和時。

每次我在嵌套for循環中進行任何計算時,它都會混亂起來。這裏是沒有計算:

No Calculations

這裏與計算的:

With Calculations

代碼:

#include <iostream> 
#include <iomanip> 
using namespace std; 
int main() 
{ 
    // r= row, c= column, s= sum(row+column), ts= sum of all entries 
    int r, c, s = 0, ts = 0; 
    for (r = 1; r <= 10; r++) 
    { 
     for (c = 1; c <= 10; c++) 
     s = r + c; ** This one 
     ts = ts + s; ** and this 

     cout << setw(3) << c; 
     cout << endl; 

    } 
    cout << "the total sum of all table entries is " << ts << endl; 
    system("pause"); 
    return 0; 
} 
+1

你想在表格的每個單元格中出現什麼?列值或行和列的總和? – 2014-10-16 23:41:45

回答

2

注意,一個循環將重複下一條語句。當你這樣做「沒有計算」,我假定你的意思

for (c = 1; c <= 10; c++) 
    cout << setw(3) << c; 
cout << endl; 

在這裏,第一cout語句在你的第一張截圖重複打印出的表格。 (注意這裏的縮進這表明什麼樣的代碼是「內部」的循環。)

現在,當您添加的計算,你有

for (c = 1; c <= 10; c++) 
    s = r + c; ** This one 
    ts = ts + s; ** and this 
    cout << setw(3) << c; 

cout << endl; 

即使你縮進顯示你打算到重複,程序將只在for循環標題後立即重複該語句。在這種情況下,您一遍又一遍地重複計算s = r + c;。 (由於這個結果從來沒有使用過,所以編譯器很可能會拋棄它。)

爲了重複多個語句,你需要用他們的「複合聲明」,這意味着使用大括號:

for (c = 1; c <= 10; c++) 
{ 
    s = r + c; ** This one 
    ts = ts + s; ** and this 
    cout << setw(3) << s; 
} 

cout << endl; 

我還以爲你要打印出該行的總和和列。

我強烈建議你總是使用花括號,即使當你重複一個單一的陳述。這使得在循環中添加更多語句變得更容易,因爲您不必記住稍後添加花括號。

2

我認爲你需要用花括號內循環像這樣:

for (r = 1; r <= 10; r++) 
{ 
    for (c = 1; c <= 10; c++) 
    { 
    s = r + c; 
    ts = ts + s; 

    cout << setw(3) << c; 
    cout << endl; 
    } 
} 

否則你將只能運行在內部循環的

s = r + c; 

線。

+2

...還有,正確縮進。無論在何處放置花括號的理念是*(與for/if/while,下一行相同,用內部代碼縮進,用外部代碼縮進)* ......您不希望包含的代碼位於與控制結構相同的縮進級別。 – HostileFork 2014-10-16 23:30:36

1

你需要一對大括號中爲你的for循環

#include <iostream> 
#include <iomanip> 
using namespace std; 
int main() 
{ 
    int r, c, s = 0, ts = 0; // r= row, c= column, s= sum(row+column), ts= sum of all entries 
    for (r = 1; r <= 10; r++) 
    { 
     for (c = 1; c <= 10; c++) { // <- was missing 
     s = r + c; ** This one 
     ts = ts + s; ** and this 

     cout << setw(3) << c; 
     cout << endl; 
     } // <- was missing 

    } 
    cout << "the total sum of all table entries is " << ts << endl; 
    system("pause"); 
    return 0; 
} 

沒有{},只有s = r + c將考慮循環的一部分。

順便說一句,這是轉到事業失敗錯誤:http://martinfowler.com/articles/testing-culture.html