左神基础课-‘之’字型打印二维数组

宏观上:主要函数是打印对角线函数,其中有个bool控制是从上往下打印 还是从下往上打印

另外一个函数控制是 : 现在打印那条对角线

#include<iostream>
using namespace std;

void zhi_print(int matrix[][3], int row,int col);
void line_print(int matrix[][3],int row1, int col1,
    int row2, int col2, bool flag);
int main(){
    int matrix[][3]={{1,3,4},{2,5,9},{6,8,10},{7,11,12}};
    // int matrix[][4]={{1,3,4,10},{2,5,9,11},{6,8,12,15},{7,13,14,16}};
    // zhi_print(matrix,4,4);
    zhi_print(matrix,4,3);
    return 0;
}
void zhi_print(int matrix[][3], int row,int col){
    int col1 = 0;
    int row1 = 0;
    int row2 = 0;
    int col2 = 0;
    bool flag = false;
    //先打印左上角的点
    line_print(matrix,row1,col1,row2,col2,flag);
    //接着一个指针往右走再往下走,另外一个指标先往下走,然后往右走。最终在右下角两个指针汇合 ,打印结束
    while(row1 <=row-1 && row2 <= row-1 && col1 <=col-1 && col2 <= col-1){
        //反转打印的朝向
        flag = flag ? false:true;
        //第一个指针移动
        if(col1 <col-1){
            col1++;
        }else{
            row1++;
        }
        //第二个指针移动
        if(row2 <row-1){
            row2++;
        }else{
            col2++;
        }
        //打印一条线
        line_print(matrix,row1,col1,
            row2,col2,flag);	
    }
}	
//flag = true:从下到上
//这个函数打印一条东北朝向的对角线,有从上往下,有从下往上
void line_print(int matrix[][3],int row1, int col1,
    int row2, int col2, bool flag){
    int rowC;
    int colC;
    if(flag){
        rowC = row2;
        colC = col2;
        while(rowC>=row1 && colC<=col1){
            cout << matrix[rowC--][colC++] << endl;
        }
    }else{
        rowC = row1;
        colC = col1;
        while(rowC<=row2 && colC>=col2){
            cout << matrix[rowC++][colC--] << endl;
        }
    }
}

 

    原文作者:Z字形编排问题
    原文地址: https://blog.csdn.net/a3765421/article/details/88683387
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞