Rotate a matrix by 90 degree in clockwise direction
C program to rotate a matrix by 90 degree in clockwise direction.
Program
#include<stdio.h>
#include<conio.h>
#define MAX 10
void read_matrix(int mat[MAX][MAX], int row, int col)
{
int i, j;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("Element [%d][%d]\t:",i,j);
scanf("%d",&mat[i][j]);
}
}
}
void print_matrix(int mat[MAX][MAX], int row, int col)
{
int i, j;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("%d\t",mat[i][j]);
}
printf("\n");
}
}
void transpose(int mat[MAX][MAX], int rotate_mat[MAX][MAX], int row, int col)
{
int i, j;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
rotate_mat[j][i] = mat[i][j];
}
}
}
void rev_row(int rotate_mat[MAX][MAX], int col, int row)
{
int i, j, k, temp;
for(i=0;i<col;i++)
{
for(j=0,k=row-1;j<k;j++,k--)
{
temp = rotate_mat[i][j];
rotate_mat[i][j] = rotate_mat[i][k];
rotate_mat[i][k] = temp;
}
}
}
void rotate90clock(int mat[MAX][MAX], int rotate_mat[MAX][MAX], int row, int col)
{
transpose(mat, rotate_mat, row, col);
rev_row(rotate_mat, col, row);
}
void main()
{
int mat[MAX][MAX], rotate_mat[MAX][MAX];
int row, col;
printf("Enter the number of rows\t:");
scanf("%d",&row);
printf("Enter the number of columns\t:");
scanf("%d",&col);
printf("Enter the elements of the matrix\n");
read_matrix(mat, row, col);
printf("\nMatrix entered is\n");
print_matrix(mat, row, col);
rotate90clock(mat, rotate_mat, row, col);
printf("\nMatrix after rotating clockwise 90 degree is\n");
print_matrix(rotate_mat, col, row);
getch();
}
Output
Enter the number of rows :4
Enter the number of columns :3
Enter the elements of the matrix
Element [0][0] :1
Element [0][1] :2
Element [0][2] :3
Element [1][0] :4
Element [1][1] :5
Element [1][2] :6
Element [2][0] :7
Element [2][1] :8
Element [2][2] :9
Element [3][0] :10
Element [3][1] :11
Element [3][2] :12
Matrix entered is
1 2 3
4 5 6
7 8 9
10 11 12
Matrix after rotating clockwise 90 degree is
10 7 4 1
11 8 5 2
12 9 6 3