[c++]輸出金字塔

輸出:code

1
   2 2
  3 3 3
 4 4 4 4
5 5 5 5 5

代碼:co

void printArr(int* arr, int n){
    for(int i=1;i<n;i++){
        if(arr[i]==0){
            cout<<" ";
        }else{
            cout<<arr[i];
        }
    }
    cout<<endl;
}

int main()
{
    int max = 5; //能夠爲10如下的數, 10以上能夠本身試一下,^-^
    int len = max + max -1 ; //要存儲的數目,是奇數
    int mid = len/2 + 1;  //5
    for(int i=1;i<=max;i++){
        if(i%2==0){
            //計算出位置
            int *line = new int[len+1](); //多申請一個, 在[1:len] 上操做, 避免差一錯誤
            for(int j=0;j<i/2;j++){ //兩邊鋪開
                line[mid+1+j*2] = i;
                line[mid-1-j*2] = i;
            }
            printArr(line,len+1);
            delete[] line;
        }else{
            //計算出位置
            int *line = new int[len+1]();
            line[mid] = i; //先填中間
            for(int j=1;j<=i/2;j++){ //兩邊鋪開 j的範圍儘可能要方便操做
                line[mid+j*2] = i;
                line[mid-j*2] = i;
            }
            printArr(line,len+1);
            delete[] line;

        }
    }
}
相關文章
相關標籤/搜索