C Programs Tutorials | IT Developer
IT Developer

Java Programs - Advanced



Share with a Friend

Sort Matrix Boundary Elements Program - Java Program

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(); } } }

Output

 
    
OUTPUT 1:
N = 4
ENTER MATRIX ELEMENTS:
11
2
5
7
8
10
9
4
15
5
3
11
1
17
14
8
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

OUTPUT 2:

N = 5
ENTER MATRIX ELEMENTS:
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
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


OUTPUT 3:

N = 2
SIZE OUT OF RANGE