在一个循环中并排打印数字

问题描述:

所以我写了我的代码,我必须在不同位置获得直角三角形。这是我下面的代码:在一个循环中并排打印数字

#include <iostream> 
using namespace std; 

int main() 
{ 

    for (int i = 1 ; i <= 10 ; ++i) {      

     for (int j = 1 ; j <= i ; j++) { 

      if (j <= i) 

      cout << "*"; 

     } 

     cout << endl; 
    } 

    cout <<"\n"; 

    for (int i = 10 ; i >= 1 ; --i) { 

     for (int j = 1 ; j <= i ; j++) { 

     cout << "*"; 
     } 
     cout << endl; 
    } 

    cout <<"\n"; 

    int i , j; 

    for ( i = 1 ; i <= 10 ; i++) { 

     for (j = 1 ; j < i ; j++) { 

       cout << " "; 

     } 

      for (j = i ; j <= 10 ; ++j) { 

       cout << "*"; 
     } 

     cout << endl; 

    } 


    cout <<"\n"; 


    int k , l ; 

    for ( k = 1 ; k <= 10 ; k++) { 

     for (l = k ; l < 10 ; l++) { 

       cout << " "; 

     } 

      for (l = 1 ; l <= k ; l++) { 

       cout << "*"; 

      } 

     cout << endl; 

    } 

    system ("pause"); 
    return 0 ; 

} 

而不是被一个低于其他类似的在我的代码,输出应该是并排这样的:

*     ***************  ***************     * 

**    **************  **************    ** 

***    *************   *************    *** 

****    ************   ************    **** 

*****    ***********    ***********    ***** 

******   **********    **********   ****** 

*******   *********     *********   ******* 

********   ********     ********   ******** 

*********   *******      *******   ********* 

**********  ******      ******  ********** 

***********  *****       *****  *********** 

************  ****       ****  ************ 

*************  ***        ***  ************* 

************** **        ** ************** 

*************** *         * *************** 
的方式

,低于这个提示应该帮助我使用循环,因为需要显示形状的问题任何人都可以帮忙?非常感谢。

// needs additional counter for B and C who rely on decremented counting 

    for(int i=1, j=10; i<=10; i++, j--){ 

     // A 

     for(int k=1; k<=10; k++){ 

      std::cout << ((k <= i) ? '*' : ' '); 

     } 

     std::cout << "  "; 

     // B 

     for(int k=1; k<=10; k++){ 

      std::cout << ((k <= j) ? '*' : ' '); 

     } 

     std::cout << "  "; 

     // C 

     for(int k=10; k>=1; k--){ 

      std::cout << ((k <= j) ? '*' : ' '); 

     } 

     std::cout << "  "; 

     // D 

     for(int k=10; k>=1; k--){ 

      std::cout << ((k <= i) ? '*' : ' '); 

     } 

     std::cout << std::endl; 

    } 

} 
+0

在每个可能的单独的2d数组中填充三角形?然后将它们全部连接成一个二维数组,然后将其打印出来。 (或者只是在连接之前打印,但是按行打印) –

+0

我对数组不熟悉。我应该只使用使物体变硬的覆盖材料。我对循环很熟悉,并且嵌套,但没有你进一步看到的地方?问题给了我这个提示,我不知道如何使用它 –

+0

你需要修改你的循环,以便他们打印星星*和*空间 – RPGillespie

您可以将所有内部循环打包在外部循环中。只要确保它们在需要时也产生空间。

对于前两个三角形,这应该是这样的:

#include <iostream> 
using std::cout; 
using std::endl; 

int main(){ 

    for (int i = 0 ; i < 10 ; i++) {  

     for (int j = 0 ; j < 10 ; j++) { 
      if (j <= i){ 
       cout << "*"; 
      } else { 
       cout << " "; 
      } 
     } 

     for (int j = 0 ; j < 10 ; j++) { 
      if (j >= i){ 
       cout << "*"; 
      } else { 
       cout << " "; 
      } 
     } 

     cout << endl; 
    } 
} 

(运行版本:http://www.cpp.sh/5zqei

不过从评论的阵列的事情是更好的方法,你也应该尝试一。如果不是这个练习,那么你自己。

编辑:将循环更改为0..9。习惯这种变体,只是为了与数组之类的容器迭代一致。

+0

谢谢。我会看看它,并尝试做其他2。 –