Your Questions my Answers

[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:



Check out this stream