Write a program to rotate a matrix by 90 degrees
e.g)Input:- 1 2 3 4 5 6 7 8 9 Output:- 7 4 1 8 5 2 9 6 3
Approach to rotate a matrix by 90 degrees
First we transpose the matrix and swap the columns to rotate the matrix by 90 degrees.
1) Transpose the matrix. 1 4 7 2 5 8 3 6 9 2) Swap the columns. 7 4 1 8 5 2 9 6 3
C++ program to rotate a matrix by 90 degress
#include <iostream> #include <cstdlib> #include <ctime> using namespace std; int main() { srand(time(0)); int m = 3; int n = 3; int** matrix = (int**) calloc(sizeof(int), m); for ( int i = 0; i < m; i++ ) { matrix[i] = (int*) calloc(sizeof(int), n); } // Fill random values in the matrix for ( int i = 0; i < m; i++ ) { for ( int j = 0; j < n; j++ ) { matrix[i][j] = rand() % 100; } } // Print the matrix for ( int i = 0; i < m; i++ ) { for ( int j = 0; j < n; j++ ) { cout << matrix[i][j] << " "; } cout << endl; } cout << endl; // Transpose the matrix for ( int i = 0; i < m; i++ ) { for ( int j = i + 1; j < n; j++ ) { int tmp = matrix[i][j]; matrix[i][j] = matrix[j][i]; matrix[j][i] = tmp; } } // Swap the columns for ( int i = 0; i < m; i++ ) { for ( int j = 0; j < n/2; j++ ) { int tmp = matrix[i][j]; matrix[i][j] = matrix[i][n-1-j]; matrix[i][n-1-j] = tmp; } } // Print the rotated matrix for ( int i = 0; i < m; i++ ) { for ( int j = 0; j < n; j++ ) { cout << matrix[i][j] << " "; } cout << endl; } }Output:-
28 66 73 67 21 63 87 54 59 87 67 28 54 21 66 59 63 73
0 comments:
Post a Comment