[I have started this new section in which I will answer your questions publicly.
Therefore, if you are having any confusions or problems, you can e-mails me at
one.arvind@gmail.com. Please note that…
read
more]
Problem: I want to sort each row of a matrix in ascending order, after which I need to display another matrix whose elements are the column indices of the elements of the original matrix with respect to the corresponding elements of the sorted matrix. Please give a program to do so. eg.
Original matrix={ {9,4,2}, {7,3,8} };
Sorted Matrix= { {2,4,9}, {3,7,8} };
Column Index= { {2,1,0}, {1,0,2} };
Dominic [*], Student, Nigeria
[* Last Name Deleted on Request]
Solution: Nice question Dominic, here is the solution. I will not discuss anything here as I have included enough comments in the program itself.
// C++ program to sort a matrix // row-wise and then calculate // column index of the sorted matrix // w.r.t the original matrix #include<iostream.h> #define ROW 2 #define COL 3 void main(void) { int i,j,k,temp; // declare two-dimensional arrays int matrix[ROW][COL]; int sorted_matrix[ROW][COL]; int col_index[ROW][COL]; // input data from the user for(i=0;i<ROW;i++) for(j=0;j<COL;j++) cin>>matrix[i][j]; // copy the matrix to another // matrix on which sorting will be done // because we don't want to change the // original matrix for(i=0;i<ROW;i++) for(j=0;j<COL;j++) sorted_matrix[i][j]=matrix[i][j]; // bubble sorting is done here // row-wise. the first loop is to // sekect the row for(i=0;i<ROW;i++) for(j=0;j<COL;j++) for(k=0;k<(COL-1);k++) if (sorted_matrix[i][k]>sorted_matrix[i][k+1]) { temp=sorted_matrix[i][k]; sorted_matrix[i][k]=sorted_matrix[i][k+1]; sorted_matrix[i][k+1]=temp; } // sorting complete // calculate the column index and store // to another matrix for(i=0;i<ROW;i++) for(j=0;j<COL;j++) for(k=0;k<COL;k++) { if(matrix[i][j]==sorted_matrix[i][k]) col_index[i][j]=k; } // column index calulated cout<<endl; // display the sorted matrix cout<<"\n\nSorted Array:\n"; for(i=0;i<ROW;i++) { for(j=0;j<COL;j++) cout<<" "<<sorted_matrix[i][j]; cout<<endl; } cout<<endl; // display the column index cout<<"\n\nColumn Index:\n"; for(i=0;i<ROW;i++) { for(j=0;j<COL;j++) cout<<" "<<col_index[i][j]; cout<<endl; } }
Hope this helps!
Good-Bye!
Related Articles: