Ad

Wednesday, July 11, 2007

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:

No comments:

Post a Comment

You are free to comment anything, although you can comment as 'Anonymous' it is strongly recommended that you supply your name. Thank You.

Please don't use abusive language.