2017-01-15 8 views
-4

誰でも私のコードを変更する方法を教えてもらえますか?このダイヤモンドコードのヘルプを依頼する

2つのループだけを使用してダイヤモンドパターンを印刷したいとします。私は5を入力した場合 、ダイヤモンドは次のようにする必要があります:

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

私は半分の方法が行われています。

これは私がこれまでに得たものです。

#include <iostream> 
using namespace std; 
// print diamond. Instead of finding * pattern, just find " " 's pattern. 
int main() 
{ 
    int size; 
    cin >> size; 
    int m = size/2; 

    for (int row = 0; row < size; row++) { 
     for (int col = 0; col < size; col++) { // Before || is the left part. After || is right part 
      if ((row < m && (col < m - row || col > m + row)) || (row > m && col < row - m)) 
       cout << " "; 

      else 
       cout << "*"; 
     } 
     cout << endl; 
    } 
    return 0; 
} 
+0

「stackoverflow C++ diamond loops」では、この同じ種類のものについて多くの既存の質問が見つかりました。たぶんそれらのいくつかはあなたに役立つでしょう。 – TheUndeadFish

+1

[C中に菱形を作成したい]の複製があります(http://stackoverflow.com/questions/22332781/want-to-create-diamond-shape-using-while-in-c) –

+0

ダイヤモンドは、行の偶数のように見える、6と言う? – alhadhrami

答えて

0

は、印刷のための私のコードを使用し@Shawn:

5 
    * 
*** 
***** 
**** 
    *** 

以下は私のコードです。あなたのコードを使用したい場合は、ダイヤモンドの下側に印刷するためのループのための個別の書き込みを作成します。

#include <iostream> 
    using namespace std; 
    int main() 
    {//code 
     int n, c, k, space = 1; 
     cout<<"\n\nEnter number of rows: "; 
     cin>>n; 
     space = n - 1; 
     for (k = 1; k<=n; k++) 
     { 
      for (c = 1; c<=space; c++) 
       cout<<" "; 
      space--; 
      for (c = 1; c<= 2*k-1; c++) 
       cout<<"*"; 
      cout<<"\n"; 
     } 
     space = 1; 
     for (k = 1; k<= n - 1; k++) 
     { 
      for (c = 1; c<= space; c++) 
       cout<<" "; 
      space++; 

      for (c = 1 ; c<= 2*(n-k)-1; c++) 
       cout<<"*"; 

      cout<<"\n"; 
     } 
     return 0; 
    } 
+0

2ループだけで印刷する方法を知りたいだけです。 – Shawn99

+0

あなたができることは、コードを逆にすることです。例えば、ハーフダイヤモンドを作ることができたら、何度も "\ n"を使い、ループを逆にして残りの半分またはダイヤモンドを作ることができます。 – yadav22ji

関連する問題