2017-01-15 93 views
-4

任何人都可以告訴我如何修改我的代碼。尋求此鑽石代碼的幫助

我想僅使用兩個循環打印菱形圖案。 如果我進入5,鑽石應該是這樣的:

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

我一半的方式完成。

這是我到目前爲止。

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 + +鑽石循環」發現了很多關於這種同類事情的現有問題。也許其中一些對你有用。 – TheUndeadFish

+1

[想要在C中使用創建鑽石形狀]的可能的副本(http://stackoverflow.com/questions/22332781/want-to-create-diamond-shape-using-while-in-c) –

+0

什麼是鑽石看起來像是偶數行,比如6? – alhadhrami

回答

0

@Shawn使用我的代碼進行打印。如果你想使用你的代碼,只能編寫單獨的for循環來打印菱形的下行。

#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

我只想知道如何使用兩個循環來打印它。 – Shawn99

+0

最好你可以做的就是反轉代碼。例如,如果您能夠製作半鑽石,那麼可以多次使用「\ n」並倒轉線圈並製作另一半或鑽石。 – yadav22ji