To rotate the matrix elements using c
Question:
Write a c program to rotate the matrix elements for any length of matrix.
Logic:
- Get the array elements from the user.
- Then pick the second row first element.
- And swap all elements in boundary sequentially to make rotation.
- Then repeat the process for all other elements.
- When we goes to middle of the matrix shows no rotation is left.
- Al last we get rotated matrix.
Program:
#include<stdio.h> void main() { int a[20][20],r,c,i,j,cr,pr,m=0,n=0,x,y; clrscr(); printf("enter the row size:"); scanf("%d",&r); printf("enter the column size:"); scanf("%d",&c); x=r;y=c; printf("enter the elements:"); for(i=0;i<r;i++) { for(j=0;j<c;j++) { scanf("%d",&a[i][j]); } } printf("Before rotation:\n"); for(i=0;i<x;i++) { for(j=0;j<y;j++) { printf("%d ",a[i][j]); } printf("\n"); } while(r>m&&c>n) { if(m+1==r||n+1==c)//exits when no other rotation is available { break; } pr=a[m+1][n];//previous element to swap for(i=m;i<c;i++)//rotates the top row { cr=a[m][i]; a[m][i]=pr; pr=cr; } for(i=m+1;i<r;i++)//rotates the right column { cr=a[i][c-1]; a[i][c-1]=pr; pr=cr; } for(i=c-2;i>=m;i--)//rotates the bottom row { cr=a[r-1][i]; a[r-1][i]=pr; pr=cr; } for(i=r-2;i>m;i--)//rotates the left column { cr=a[i][n]; a[i][n]=pr; pr=cr; } r--;c--;//decrements row and column for another rotation m++;n++; } printf("After rotation:\n"); for(i=0;i<x;i++) { for(j=0;j<y;j++) { printf("%d ",a[i][j]); } printf("\n"); } getch(); }