2013-06-13 67 views
0

就明白的嵌套for循环我写了一个程序,它需要一个输入工作,并显示一个金字塔高达像这样的输入值的方式:嵌套“for”循环C++

1 
22 
333 
4444 

它显示只是高度的金字塔,但它没有显示在第二个循环的书面部分。

下面是代码(修改后,但所需的结果目前还没有)

#include <iostream> 
using namespace std; 

int main(void) 
{ 
    int num; 
    cout << "Enter the number of pyramid" << endl ; 
    cin >> num ; 
    for (int i = 0; i < num ; i++) 
    { 
     int max; 

     for (int j = 0 ; j <= max ; j++) 
     { 
      cout << j ; 
     } 

     cout << endl ; 
     max++ ; 
    } 
    system("PAUSE"); 
    return 0; 
} 
+8

您还没有初始化最大 – Jack

+3

在请求帮助之前,请花时间正确缩进您的代码。 – meagar

+0

@杰克这是一个有效的答案。将它张贴为一个。 – Maroun

回答

2

你应该初始化最大为0

int max = 0; 

另外还有两个更多的错误。

int max ; 
  1. 前应在for循环中声明了我。 (否则,max始终定义为0)

  2. 在内部循环中打印i,而不是j。

+2

这还不够,他在超出范围之前正在增加max,所以需要进行其他更改。 – riv

+0

@riv:谢谢,需要进行两项更改。 – PermanentGuest

+0

我现在理解我的错误,如果我给金字塔的高度为5例如它只是显示高度4,一切都没问题。 –

1

首先,请尽量有一个适当的结构代码:

#include <iostream> 
using namespace std; 

int main(void) 
{ 
    int num; 
    cout << "Enter the number of pyramid" << endl; 
    cin >> num; 

    for(int i = 0; i < num; i++) 
    { 
     int max; 

     for(int j = 0; j <= max; j++) 
     { 
     cout << j; 
     } 

     cout << endl; 
     max++; 
    } 

    system("PAUSE"); 
    return 0; 
} 

而你的错误: 更改int max;int max = 0; 您不能添加1到一个不存在的价值。

+1

您可以将1添加到单位化值,但它是未定义的行为;-) – TemplateRex

3
#include <iostream> 
using namespace std; 

int main(void) 
    { 
    int num ; 
    cout << "Enter the number of pyramid" << endl ; 
    cin >> num ; 
    for (int i = 0; i < num ; i++) 
    { 
     int max = i +1; //change 1 

     for (int j = 0 ; j < max ; j++) 
     { 
     cout << max; //change 2 
     } 

     cout << endl ; 
     //max++ ; //change 3 
    } 
    system("PAUSE") ; 
    return 0; 
} 
+1

+1。第一个正确的答案。 – Maroun

+1

那么'max ++'是无用的,正如@riv – Offirmo

+1

所说的那样'max'会在下一次迭代时超出范围,所以在那里增加它什么也不做。要么在循环外声明'max',要么简单地使用'i + 1'。 – riv

1

正如其他答案中所述,您的最大计数器未初始化。此外,你并不真的需要它,因为你已经有i做同样的任务:

for (int i = 1; i <= num; i++) 
{ 
    for (int j = 0; j < i; j++) 
    { 
     cout << i; 
    } 

    cout << endl;  
} 
+0

我认为他想要打印'i + 1',而不是'j'。 –

+0

@rajraj - 是的,我复制了OP的对面,忘记了改变它。 – Utopia

0

除非你真的想打印出类似这样0 01 012 0123这是你要找的代码:

for (int i = 1; i <= num; i++) 
{ 
    for (int j = 0; j < i; j++) 
    cout << i; 
    cout << endl; 
} 
0

max未设置为初始值。

它在第一个循环中声明,然后在第二个循环中使用。