2016-11-03 7 views
-3

こんにちは、私はC++に新しいです。私はあなたの助けをお願いします。 は、ここに私のパターンです:ループ内のC++ヘルプ印刷札

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

が、私はこのためのコードを書いてみましたが、それは望ましい結果を与えるものではありません。 誰も私を助けることができますか?

#include<bits/stdc++.h>; 
using namespace std; 
int main() 
{ 
    int n=5,j,k; 
    bool o=false,t=false; 
    for(int i=((2*n) - 1); i >= -((2*n)-1); i -=2) 
    { 
     for(j=10-abs(i); j >0;j-=2) 
     { 
      cout << " "; 
     } 
     for(k=abs(i);k>0;k--) 
     { 
      cout << "*"; 
     } 
     cout << endl; 
    } 
    return 0; 
} 

私の出力である:

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

: はここに私のコードであり、所望の出力が1 *有する唯一のラインを有しているのに対し、1 *を持つ2つの行があります。

+0

具体的には何を目指していますか?ここに出力をテキストとして直接投稿します。 – Carcigenicate

+0

@Danhいいえ、出力には1つではなく2つの '*'行があります。 –

+0

あなたは正しいです編集する – Hikikomori

答えて

1

つまり、外側のforループにif (i == 1) continue;ステートメントを追加します。

ここに修正コードがあります:http://ideone.com/t96XO6

0

これは、毎回星を2ずつ減算してからabsを減算するためです。というのは。この例を取る:

*** abs(3) = 3 stars 
* abs(3-2) = abs(1) = 1 star 

その後、何も印刷されませんように、その反復をスキップし、あなたがもう一度2を減算し、i1に到達するたびに結果が-1 ..だから

* abs(3-2-2) = abs(3-4) = abs(-1) = 1 star 
*** abs(3-2-2-2) = 3 stars