2014-10-16 133 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