The primary diagonal is formed by the elements a00, a11, a22, a33 (red). The row-column condition is row=column.
The secondary diagonal is formed by the elements a03, a12, a21, 30 (blue). The row-column condition is row=numberOfRows - column -1.
We shall define and implement two functions: one for printing the primary diagonal and one for printing the secondary diagonal:
/* * Description: * Prints the primary diagonal of a square matrix * Parameters: * mat - a pointer to the the matrix * rows - the number of rows * columns - the number of columns * Returns: * Nothing */ void PrintPrimaryDiagonal(int mat[][COLUMNS], int rows, int columns) { int i; /*Checks if the matrix is square*/ if(rows==columns) { /*Prints only the elements who are on the primary diagonal*/ for(i=0; i<rows; i++) { printf("%d ",mat[i][i]); } } else { puts("Matrix is not square"); } } /* * Description: * Prints the secondary diagonal of a square matrix * Parameters: * mat - a pointer to the the matrix * rows - the number of rows * columns - the number of columns * Returns: * Nothing */ void PrintSecondaryDiagonal(int mat[][COLUMNS], int rows, int columns) { int i; /*Checks if the matrix is square*/ if(rows==columns) { /*Prints only the elements who are on the secondary diagonal*/ for(i=0; i<columns; i++) { printf("%d ",mat[i][rows-i-1]); } } else { puts("Matrix is not square"); } }Here's an example on how to use this functions:
#include<stdio.h> #define ROWS 4 #define COLUMNS 4 void PrintPrimaryDiagonal(int mat[][COLUMNS], int rows, int columns); void PrintSecondaryDiagonal(int mat[][COLUMNS], int rows, int columns); int main(void) { int matrix[ROWS][COLUMNS] = { {1,2,3,4}, {4,5,6,8}, {9,7,2,1}, {3,2,5,9} }; puts("The primary diagonal is: "); PrintPrimaryDiagonal(matrix, ROWS,COLUMNS); puts("\nThe secondary diagonal is: "); PrintSecondaryDiagonal(matrix,ROWS,COLUMNS); return 0; } /*Output The primary diagonal is: 1 5 2 9 The secondary diagonal is: 4 6 7 3 */
No comments:
Post a Comment
Got a question regarding something in the article? Leave me a comment and I will get back at you as soon as I can!