2013-10-09 417 views
1

好吧,所以我試圖做一個代碼,將讀取一個正的奇數整數,並輸出一個逆金字塔開始與該數字,並下降到1,並切斷下一行的第一個和最後一個數字等等。所以,如果我進入7它將顯示:C++反數字金字塔

7654321 
65432 
    543 
    4 

第i個行包含N-(21-2),但我不知道如何使用它。

感謝您的幫助。

這是我到目前爲止有:

#include <iostream> 
using namespace std; 

int main() 
{ 
    int n,i,j; 

    cout << "Enter a positive odd number: " << endl; 
    cin >> n ; 

    i=n; 
    while(n%2 ==0) 
    { 
     cout<< "Invalid number." << endl; 
     cout<< "Enter a positive odd number: " << endl; 
     cin >> n ; 
    } 

    for(i=n; i<=n && i>0 ; i--) 
    { 
     for(j=i; j<=i; j--) 
     { 
      cout<< i%10 ; 
     } 
     cout<<endl; 
    } 

    return(0); 
} 
+0

對那個for-loop有趣的測試條件。 – WhozCraig

+0

你應該學習遞歸作爲這個練習的一部分嗎? –

+0

我想是這樣,因爲嵌套for循環必須工作,使整個代碼正常工作。 – user2840960

回答

5

號碼在屏幕上字符的位置是這樣的:

+----+----+----+----+----+----+----+ 
| 0 0| 0 1| 0 2| 0 3| 0 4| 0 5| 0 6| 
+----+----+----+----+----+----+----+ 
| 1 0| 1 1| 1 2| 1 3| 1 4| 1 5| 1 6| 
+----+----+----+----+----+----+----+ 
| 2 0| 2 1| 2 2| 2 3| 2 4| 2 5| 2 6| 
+----+----+----+----+----+----+----+ 
| 3 0| 3 1| 3 2| 3 3| 3 4| 3 5| 3 6| 
+----+----+----+----+----+----+----+ 

,並檢查在那裏

+----+----+----+----+----+----+----+ 
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 
+----+----+----+----+----+----+----+ 
| | 6 | 5 | 4 | 3 | 2 | | 
+----+----+----+----+----+----+----+ 
| | | 5 | 4 | 3 | | | 
+----+----+----+----+----+----+----+ 
| | | | 4 | | | | 
+----+----+----+----+----+----+----+ 

現在找到善有善報x,y,要打印的值和初始數量之間的關係。