2017-06-20 25 views
-3

私は別の位置で直角三角形を取得する必要があるので、私は自分のコードを書いた。これは、以下の私のコードです:数字をループで並べて表示

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

} 

代わりに私のコードのように、他の下の一つであると、出力は次のように並んで次のようになりますように、このヒントSHOULD以下

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

問題のように必要に応じて図形を表示するように頼まれたループを使用するのに役立ちます誰も助けることができますか?どうもありがとう。

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

多分別々の2次元アレイに三角形を配置しますか?次に、4つすべてを1つの2次元配列に連結し、それを印刷します。 (または連結する前に印刷しますが、行ごとに印刷してください) –

+0

私は配列に精通していません。私は事をより困難にする覆われた材料だけを使うべきです。私はwhile、for、and nestedのようなループに精通していますが、どこから見えますか?私はそれを使用する方法を知らなかったこのヒントを教えてくれました –

+0

*と*の両方の空白を表示するようにループを変更する必要があります – RPGillespie

答えて

0

外部ループ内のすべての内部ループを互いに後でパックすることができます。彼らはまた、必要なときにスペースを生成することを確認してください。最初の二つの三角形の場合

、これは次のようになります(バージョンランニング:http://www.cpp.sh/5zqei)を

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

しかし、コメントから配列のものがよりよいアプローチで、あなたもそれを試してみてください1。あなた自身のために運動のためでなければ。

編集:ループを0..9に変更しました。そのバリアントに慣れるだけで、配列のようなコンテナに対する反復と一貫性があります。

+0

ありがとう。私はそれを見て、もう片方をやろうとします。 –

関連する問題