Write a program to declare a square matrix A[][] of order (M x M) where â€˜Mâ€™ must be greater than 3 and less than 10. Allow the ...

Write a program to declare a square matrix A[][] of order (M x M) where â€˜Mâ€™ must be greater than 3 and less than 10. Allow the user to input positive integers into this matrix. Perform the following tasks on the matrix:

1. Sort the non-boundary elements in ascending order using any standard sorting technique and rearrange them in the matrix.
2. Calculate the sum of both the diagonals.
3. Display the original matrix, rearranged matrix and only the diagonal elements of the rearranged matrix with their sum.

Test your program with the sample data and some random data:

Example 1

``````INPUT :M = 4

9   2   1   5
8   13  8   4
15  6   3   11
7   12  23  8

OUTPUT:

ORIGINAL MATRIX

9   2   1   5
8   13  8   4
15  6   3   11
7   12  23  8

REARRANGED MATRIX

9   2   1   5
8   3   6   4
15  8   13  11
7   12  23  8

DIAGONAL ELEMENTS

9           5
3   6
8   13
7           8
SUM OF THE DIAGONAL ELEMENTS = 59
``````

Example 2

``````INPUT :M = 5

7    4    1     9    5
8    2    6    10   19
13   1    3     5    1
10   0    5    12   16
1     8    17    6    8

OUTPUT:

ORIGINAL MATRIX

7     4     1      9       5
8     2     6      10     19
13    1     3      5       1
10    0     5      12     16
1     8     17     6       8

REARRANGED MATRIX

7     4     1      9      5
8     0     1      2     19
13    3     5      5      1
10    6     10     12    16
1     8     17     6      8

DIAGONAL ELEMENTS

7             5
0     2
5
6       12
1               8

SUM OF THE DIAGONAL ELEMENTS = 46
``````

Example 3

``````INPUT:  M = 3
OUTPUT: THE MATRIX SIZE IS OUT OF RANGE.
``````
``````import java.util.*;

class ISCprac2016Q02
{
public static void main(String arg[])throws InputMismatchException
{

Scanner sc = new Scanner(System.in);
System.out.println("Enter the number of rows for a square matrix (between 3 and 10): ");
int M = sc.nextInt();

if(M <=3 || M >=10){

System.out.println("THE MATRIX SIZE IS OUT OF RANGE.");

}else{

int a[][] = new int[M][M];
int b[] = new int[M*M];
int i, j, c, t;

System.out.println("Enter " + (M*M) + " elements");

for(i = 0; i < M; i++){

for(j = 0; j < M; j++){

a[i][j] = sc.nextInt();

}//loop j
}//loop i

System.out.println("\nORIGINAL MATRIX: ");
c = 0;
for(i = 0; i < M; i++){

for(j = 0; j < M; j++){

//print the elements of the original matrix
System.out.print(a[i][j]+ "   ");

//store the non-boundary elements in an array
if(i != 0 && j != 0 && i != M-1 && j != M - 1)
b[c++] = a[i][j];

}//loop j
System.out.println();
}//loop i

//sort the non-boundary elements in ascending order
for(i = 0; i < c; i++){
for(j = i+1; j < c; j++){

if(b[i] > b[j]){
t = b[i];
b[i] = b[j];
b[j] = t;
}
}//loop j
}//loop i

c = 0;
for(i = 0; i < M; i++){

for(j = 0; j < M; j++){

//store the sorted elements at the non-boundary indeces
if(i != 0 && j != 0 && i != M-1 && j != M - 1)
a[i][j] = b[c++];

}//loop j
}//loop i

System.out.println("\nREARRANGED MATRIX: ");
//Display the rearranged matrix
for(i = 0; i < M; i++){

for(j = 0; j < M; j++){

System.out.print(a[i][j]+ "   ");

}//loop j
System.out.println();
}//loop i

System.out.println("\nDIAGONAL ELEMENTS: ");
//Display the rearranged matrix's diagonal elements
for(i = 0; i < M; i++){

for(j = 0; j < M; j++){

if( i == j || i+j == M-1)
System.out.print(a[i][j]+ "   ");
else
System.out.print("   ");

}//loop j
System.out.println();
}//loop i

}

}//end of main

}//end of class
``````