-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathquestion6.java
146 lines (145 loc) · 4.2 KB
/
question6.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
import java.util.Scanner;
public class question6 {
public int acceptNo(){
Scanner in = new Scanner(System.in);
int n=0;
boolean flag = false;
try {
n = in.nextInt();
} catch (Exception e) {
flag=true;
n=-1;
}
return flag?acceptNo():n;
}
public int menu(){
System.out.println("Choose your option:");
System.out.println("1. Fill the matrix with prime numbers \n" +
"2. Display the input matrix\n" +
"3. Store the numbers on either side of the Left Diagonal (principal diagonal) in another\n" +
"matrix and display the same as shown below.\n" +
"4. Display the numbers above the right diagonal, the numbers on the top lefthand corner.\n" +
"5. Transpose the matrix");
System.out.println("6. Exit");
System.out.println("Enter choice number to proceed");
int n=acceptNo();
if(n<1||n>6){
System.out.println("Invalid Option!");
return menu();
}else{
return n;
}
}
public boolean isPrime(int num){
if(num==1){
return false;
}
for(int i=2;i<=num/2;i++){
if(num%i==0){
return false;
}
}
return true;
}
public static void main(String[] args) {
question6 qn = new question6();
System.out.println("Enter m:");
int m=0;
while(m<1){
m=qn.acceptNo();
}
System.out.println("Enter n:");
int n=0;
while(n<2||n>21){
n=qn.acceptNo();
}
int[][] matrix = new int[m][n];
boolean transpose=false;
while (true) {
int in = qn.menu();
if(in==6){
break;
}else if(in==1){
qn.fillMatrix(matrix);
}else if(in==2){
qn.printMatrix(matrix);
}else if(in==3){
qn.createDiag(matrix);
}else if(in==4){
qn.rightDiag(matrix);
}else if(in==5){
int rows = matrix.length;
int cols = matrix[0].length;
matrix=new int[cols][rows];
if(!transpose){
qn.verticalFill(matrix);
transpose=!transpose;
}else{
qn.fillMatrix(matrix);
transpose=!transpose;
}
}
}
}
private void verticalFill(int[][] matrix){
int num=2;
for(int i=0;i<matrix[0].length;i++){
for(int j=0;j<matrix.length;j++){
while(true){
if(isPrime(num)){
matrix[j][i]=num;
num++;
break;
}
num++;
}
}
}
}
private void rightDiag(int[][] matrix) {
int i=0;
int j=matrix[i].length-1;
int it=1;
while(j>=0&&it<matrix.length){
matrix[i][j]=0;
i++;
if(i==matrix.length){
i=it;
it++;
j--;
}
}
}
private void createDiag(int[][] matrix) {
int i=0;
int j=0;
while(i<matrix.length&&j<matrix[i].length){
matrix[i][j]=0;
i++;
j++;
}
}
private void printMatrix(int[][] matrix) {
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[i].length;j++){
System.out.print((matrix[i][j]<10?" ":matrix[i][j]<100?" ":matrix[i][j]<1000?" ":"")+matrix[i][j]+" ");
}
System.out.println();
}
}
private void fillMatrix(int[][] matrix) {
int num=2;
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[i].length;j++){
while(true){
if(isPrime(num)){
matrix[i][j]=num;
num++;
break;
}
num++;
}
}
}
}
}