Write a program to declare a square matrix M[][] of order (N × N) where ‘N’ 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:
(a) Sort the boundary elements in ascending order using any standard sorting technique and rearrange them in the matrix in clockwise manner.
(b) Calculate the product of the non-boundary elements.
(c) Display the original matrix, rearranged matrix and only the non-boundary elements of the rearranged matrix with their product.
Test your program for the following data and some random data:
Example 1
INPUT: N = 4
11 | 2 | 5 | 7 |
8 | 10 | 9 | 4 |
15 | 5 | 3 | 11 |
1 | 17 | 14 | 8 |
OUTPUT: ORIGINAL MATRIX
11 | 2 | 5 | 7 |
8 | 10 | 9 | 4 |
15 | 5 | 3 | 11 |
1 | 17 | 14 | 8 |
REARRANGED MATRIX
1 | 2 | 4 | 5 |
17 | 10 | 9 | 7 |
15 | 5 | 3 | 8 |
14 | 11 | 11 | 8 |
NON-BOUNDARY ELEMENTS
10 | 9 |
5 | 3 |
PRODUCT OF THE NON-BOUNDARY ELEMENTS = 1350
Example 2
INPUT: N = 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
1 | 1 | 1 | 4 | 5 |
19 | 2 | 6 | 10 | 6 |
17 | 1 | 3 | 5 | 7 |
16 | 0 | 5 | 12 | 8 |
13 | 10 | 9 | 8 | 8 |
NON-BOUNDARY ELEMENTS
2 | 6 | 10 |
1 | 3 | 5 |
0 | 5 | 12 |
PRODUCT OF THE NON-BOUNDARY ELEMENTS = 0
Example 3
INPUT: N = 2
OUTPUT: SIZE OUT OF RANGE
import java.util.Scanner;
class MatrixBoundary{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
System.out.print("N = ");
int n = Integer.parseInt(in.nextLine());
if(n < 4 || n > 9){
System.out.println("SIZE OUT OF RANGE");
return;
}
int m[][] = new int[n][n];
int b[] = new int[n * n - (n - 2) * (n - 2)];
int index = 0;
int p = 1;
System.out.println("ENTER MATRIX ELEMENTS:");
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
m[i][j] = Integer.parseInt(in.nextLine());
if(i == 0 || j == 0 || i == n - 1 || j == n - 1)
b[index++] = m[i][j];
else
p *= m[i][j];
}
}
System.out.println("ORIGINAL MATRIX");
display(m);
for(int i = 0; i < b.length; i++){
for(int j = 0; j < b.length - 1 - i; j++){
if(b[j] > b[j + 1]){
int temp = b[j];
b[j] = b[j + 1];
b[j + 1] = temp;
}
}
}
index = 0;
for(int j = 0; j < n; j++)
m[0][j] = b[index++];
for(int i = 1; i < n; i++)
m[i][n - 1] = b[index++];
for(int j = n - 2; j >= 0; j--)
m[n - 1][j] = b[index++];
for(int i = n - 2; i > 0; i--)
m[i][0] = b[index++];
System.out.println("REARRANGED MATRIX");
display(m);
System.out.println("NON-BOUNDARY ELEMENTS");
for(int i = 1; i < n - 1; i++){
for(int j = 1; j < n - 1; j++){
System.out.print(m[i][j] + "\t");
}
System.out.println();
}
System.out.println("PRODUCT OF THE NON-BOUNDARY ELEMENTS = " + p);
}
public static void display(int a[][]){
for(int i = 0; i < a.length; i++){
for(int j = 0; j < a.length; j++){
System.out.print(a[i][j] + "\t");
}
System.out.println();
}
}
}