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

时间:2017-06-20 19:24:03

标签: c++

所以我写了我的代码,我必须在不同的位置得到正确的三角形。这是我的代码:

#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 ;

}

而不是像我的代码一样低于另一个,输出应该像这样并排:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

在某种程度上,下面的这个提示应该帮助我使用for循环,因为问题要求显示所需的形状任何人都可以帮助?非常感谢。

// 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;

    }

}

1 个答案:

答案 0 :(得分:0)

您可以将外循环中的所有内循环包装在一起。只需确保它们在需要时也能产生空间。

对于前两个三角形,这将如下所示:

#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。习惯这个变体,只是为了与像数组这样的容器上的迭代一致。