2017-03-16 78 views
0

我想金字塔看起來像這樣如果輸入的是6印刷一半金字塔

 0 
    12 
    345 
    6789 

567890 

這裏是我的代碼

void HalfPyramid(int num) 
{ 
    for (int a=0; a<num; a++) 
    { 
     for (int b=0; b<num-a; b++) 
     { 
     cout << " "; 
     } 
     for (int c=0; c<a; c++) 
     { 
      cout << a; 
     } 
     cout << endl; 
    } 
} 

我越來越

 1 
    22 
    333 
    4444 
55555 

不知道如何以顯示數字不斷增加,我試圖輸出aa+1

+0

不打印出增加的數字 – Zarari

回答

2

您需要另一個變量。該變量需要從0開始並在每次打印時增加。然後,因爲您需要在打印9後回到0,我們將使用模運算符將輸出限制在[0,9]的範圍內。與所有你得到

void HalfPyramid(int num) 
{ 
    int output = 0; 
    for (int a=1; a<num+1; a++) 
    { 
     for (int b=0; b<num-a; b++) 
     { 
      cout << " "; 
     } 
     for (int c=0; c<a; c++) 
     { 
      cout << output++ % 10; 
     } 
     cout << endl; 
    } 
} 
2
void HalfPyramid(int num) 
{ 
    int cur = 0; 
     for (int a=0; a<num; a++) 
     { 
     for (int b = 1; b < num - a ; b++) 
     { 
      cout << " "; 
     } 
     for (int c=0; c < a + 1; c++) 
     { 
      cout << cur; 
      cur = (cur+1)%10; 
     } 
     cout << endl; 
    } 
} 
+0

@RSahu 是的。你說得對。我編輯答案。坦克 –

0

其他答案已經提供HalfPyramid工作版本。希望這個答案能讓你以不同的方式思考邏輯和功能。我喜歡創建捕捉我想要做的事情的小函數,而不是使用語言來實現它。

bool isSpace(int num, int a, int b) 
{ 
    return ((a + b) < (num - 1)); 
} 

int getNextDigit(int in) 
{ 
    return (in+1)%10; 
} 

void HalfPyramid(int num) 
{ 
    int digit = 0; 
    for (int a = 0; a < num; ++a) 
    { 
     for (int b = 0; b < num; ++b) 
     { 
     if (isSpace(num, a, b)) 
     { 
      cout << " "; 
     } 
     else 
     { 
      cout << digit; 
      digit = getNextDigit(digit); 
     } 
     } 
     cout << endl; 
    } 
}