Row-wise Shift of Matrix Elements using C++
Our task is to shift the elements of the matrix row-wise in C++ programming. That means, we shift the elements of the matrix row by row by a certain value and display the result.
We have the square matrix of size N*N, whose elements are to be shifted row-wise. And we have a shift_value, by which we shift the elements of the matrix, in each row.
A key point which has to be remembered here is: The matrix should be a square matrix always.
For example:
- Input : matrix[N][N] = { {1, 2, 3},
{4, 5, 6},
{7, 8, 9} };
shift_value = 2
Output : 3 1 2
6 4 5
9 7 8
- Input : matrix[N][N] = { {1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}};
shift_value = 2
Output : 3 4 1 2
7 8 5 6
11 12 9 10
15 16 13 14
C++ code for Row-wise Shifting of elements in a matrix
#include <bits/stdc++.h> using namespace std; #define N 4 //function to row wise shift elements of each row of the matrix void shift_matrix_elements(int matrix[N][N], int shift_value) { //variables used int i, j=0; //condition to check if shift value is greater then size if(shift_value>N) { cout<<"\nRow wise element shift is not possible."; cout<<"\nTry again with a lower number."<<endl; return; } //row wise shifting of elements cout<<"\nThe new row wise shifted matrix is: "<<endl; while(j<N) { //printing matrix elements from shift_value index for(i=shift_value ; i<N ; i++) cout<<matrix[j][i]<<" "; //printing elements before shift_value index for(i=0 ; i<shift_value ; i++) cout<<matrix[j][i]<<" "; cout<<endl; j++; } } //int main/driver code int main() { //variables used int i,j; //stores value by which row wise matrix elements are shifted int shift_value; //creating a 4*4 matrix to rotate int matrix[N][N]= { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16} }; //print the original matrix cout<<"The matrix before the row-wise shift is:"<<endl; for(i=0 ; i<N ; i++) { for(j=0 ; j<N ; j++) cout<<matrix[i][j]<<" "; cout<<endl; } //taking the row wise shift value from the user cout<<"\nEnter the value the row-wise shift the matrix by: "; cin>>shift_value; //calling the function to row wise shift the matrix elements shift_matrix_elements(matrix, shift_value); return 0; }
Output for Row-wise Shift
- CASE 1 – when shift_value is greater than the size of the array
The matrix before the row-wise shift is: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Enter the value the row-wise shift the matrix by: 7 Row wise element shift is not possible. Try again with a lower number.
- CASE 2 – when shift_value is less than or equal to the size of the array
The matrix before the row-wise shift is: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Enter the value the row-wise shift the matrix by: 2 The new row wise shifted matrix is: 3 4 1 2 7 8 5 6 11 12 9 10 15 16 13 14
NOTE
- The array has to be square.
- The shift by a value equal to the size of the array results in the original array itself.
Hope this helps!
You could check out the following too!
Leave a Reply