中央論壇 - CENTER BBS

標題: 巴斯卡三角形的 C++程式設計 [打印本頁]

作者: f66666602    時間: 2007-9-4 09:04
標題: 巴斯卡三角形的 C++程式設計
#include<iostream>
using std::cin;
using std::cout;
using std::endl;

#include <iomanip>
using std::setw;

void nextLevel( int a[], int i ,int level )
{        
        int j;
        int k;
        for( k=(level-i);k>0;k--)//在每一行前面插數空白,空白數與階數成反比
        {
            cout<<"  ";
    }

        for(j=1; j<=i;j++)
        {
                cout << setw (4);//設定一次輸出的字元寬度
                cout<<a[j];//輸出array內容
        }
        
        a[i+1]=1;//這個東西是最外圍的那個1,然後用下面那個迴圈向內逼近!算出巴斯卡

                for( j=i; j>=2; j--)
                {
                        a[j]=a[j-1]+a[j]; // 巴斯卡三角形的定義: 階層 i+1 的a[j] 等於階層 i 的a[j-1]+a[j]
                }
}

void displayPascal( int a[], int level, int i )
{
        int b[100];//這個變數的設定,是用來存放空白數
                for ( int x=level ;x<=i ;x-- )
        {
                cout << b[x]<< " ";//跟上面的計算類似...空白幾個,就會用到幾個array
                cout <<a[1];//排好空白後,輸出第一個數字1
        }
                cout << endl;
}



void pascalTriangle( int level )//這個函數其實沒幹麻,只是中間的舖道,把該設定的值設定好
{
        int a[100];
        
        a[1] = 1;
        
        for ( int i = 1; i < level; i++ )// 印巴斯卡三角形 1~level 層
        {
                nextLevel( a, i, level );

                displayPascal( a, level, i );
        }

                        
}


int main()
{
        int level;
        const int Low = 1;
        const int High = 13;

        do
        {
                cout << "How many levels? (1-13): ";
                cin >> level;
                level = level + 1;
        }
        while ( level < Low || level > High );

        pascalTriangle( level );

        return 0;  
}





歡迎光臨 中央論壇 - CENTER BBS (https://www.centerbbs.com/) Powered by Discuz! X3