2016-03-29 97 views
-6

私はあなたの助けが必要です。 4つのアスタリスクの三角形を持つプログラムを作成する必要があります。私は3番目の三角形に問題があります。 10行の逆三角形は、次のように表示されます。C++ Forループ、アスタリスク逆三角形

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

誰でも手伝ってもらえますか?

#include <iostream> 

    using namespace std; 

    int main() 
    { 
    cout << "\nAsterisk Triangluar Patterns:\n"; 
    cout << "\nPattern (a).\n\n"; 
    int i,j,rows; 
    int ROWS = 10; 
    //initiates the max limit of rows and/ columns the triangle may have 
    int k = 11; 

    for(i=1;i<=rows;i++) 
     { 
      for(j=1;j<=i;j++) 
       { 
        cout << "*"; 
       } 
       cout << endl; 
     } 
    cout << "\nPattern (b).\n\n"; 
    for (i = 10; i >= 1; i = i-1) 
    { 
    // begin second loop from 1 to i 
    for (j = 1; j <= i; j = j+1) 
    { 
     cout << "*"; 
    } 
    cout << endl; 
    }   

    cout << "\nPattern (c).\n\n"; 
    for (int i = 0; i < 10; i++) 
    { 
    for(int j = 0; j < i; j++) 
    { 
     cout <<"*"; 
    } 
    cout << endl; 
    } 
    cout << "\nPattern (d).\n\n"; 
    for (i=1;i<=rows;i++) 
     { 
      for(j=1;j<=i;j++) 
       { 
        cout << "*"; 
       } 
       cout << endl; 
     } 


    cin.get(); 

    cin.get(); 

     return 0; 
    } 
+4

さて、どうやって(あなたはすでに 'for'ループを言及したのですか)あなたのアイデアは何ですか?あなたはまた、あなたの教科書でカバーされているいくつかの基本的なものがあります。 –

+2

Xcodeはこれと関係がなく、逆インデックスもありません。このサイトの "[cpp]逆三角形"を検索すると、他の人のコードを盗もうとするならば、*十数個の質問が得られます。しかし、もしあなたが少なくとも*自分でそれをやろうとしないならば、あなたは自分自身に不利益を与えているでしょう*最初の*、あなたが問題に遭遇した場合は*あなたのコードをここに投稿してください。 – WhozCraig

+0

@Cyber​​_Loこれら4つの三角形は何ですか?見せる。 –

答えて

1

タスクを実行する方法は数多くあります。

#include <iostream> 
#include <iomanip> 

int main() 
{ 
    const size_t N = 10; 

    for (size_t i = 0; i < N; i++) 
    { 
     std::cout << std::setw(i + 1) << std::setfill(' ') << '*' 
        << std::setw(N - i) << std::setfill('*') << '\n'; 
    }   
}  

ためのプログラムの出力は、上記のように出力が同じになり

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

または標準的なアルゴリズムを用い

#include <iostream> 
#include <algorithm> 
#include <iterator> 

int main() 
{ 
    const size_t N = 10; 

    for (size_t i = 0; i < N; i++) 
    { 
     auto out = std::ostream_iterator<char>(std::cout); 
     *std::fill_n(std::fill_n(out, i, ' '), N - i, '*') = '\n'; 
    }    
}  

によるものです。

実際に必要なのは、3つのループ、1つの外側ループと2つの内側ループを作成することです。私が考えることができる

0

最も単純な方法:

#include <iostream> 
#include <string> 
#include <iomanip> 

int main() { 

    for (int i = 10; i >= 0; --i) 
     std::cout << std::setfill(' ') << std::setw(10) << std::string(i, '*') << std::endl; 
     // or std::cout << std::string(10 - i, ' ') << std::string(i, '*') << std::endl; 

    return 0; 
} 

はしかし、これはあなたを混乱させる場合。

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

あなたのコードに近いです:あなたは、このようにそれを行うことができます。