Objectives : Define a two dimensional array Understand how to traverse a two dim
ID: 3858557 • Letter: O
Question
Objectives:
Define a two dimensional array
Understand how to traverse a two dimensional array
Code and run a program that processes a two dimensional array
Instructions:
A magic square is a matrix (two dimensional arrays) in which the sum of each row, sum of each column, sum of the main diagonal, and sum of the reverse diagonal are all the same value.
You are to code a program to determine if a given two-dimensional array (that will be read in from a file) is a magic square or not. The functions you will need to code are as follows:
Code a function/method for each of the following:
Read data into the matrix
Print the matrix on the screen
Sum a row given the index for that row
Sum a column given the index for that column
Sum the main diagonal
Sum the reverse diagonal
Determine if the two dimensional array is a magic square
The main method will read the size of the array outside of the while loop. Then inside the while loop it will call all the methods given above to read the data into the matrix, print the matrix, print all the row sums, print all the column sums, and print both diagonals. Then the program will determine if the matrix is a magic square and print an appropriate message. The next size should be read in at the end of the while loop. The main will continue with the next matrix in the data file, until a size of -1 is reached. See the Additional Notes on Two Dimension Arrays for more help with this assignment.
Sample Output:
The first part of the output should look similar to this
=========
= Square 1=
=========
8 1 6
3 5 7
4 9 2
The sum of row 0 is 15
The sum of row 1 is 15
The sum of row 2 is 15
The sum of column 0 is 15
The sum of column 1 is 15
The sum of column 2 is 15
The main diagonal is 15
The other diagonal is 15
This matrix is a magic box!
Data File:
Paste everything below this block of text into a notepad file. Your input file must appear exactly as it below and include all of this data in the same file.
3
8 1 6
3 5 7
4 9 2
7
30 39 48 1 10 19 28
38 47 7 9 18 27 29
46 6 8 17 26 35 37
5 14 16 25 34 36 45
13 15 24 33 42 44 4
21 23 32 41 43 3 12
22 31 40 49 2 11 20
4
48 9 6 39
27 18 21 36
15 30 33 24
12 45 42 3
3
6 2 7
1 5 3
2 9 4
4
3 16 2 13
6 9 7 12
10 5 11 8
15 4 14 1
5
17 24 15 8 1
23 5 16 14 7
4 6 22 13 20
10 12 3 21 19
11 18 9 2 25
7
30 39 48 1 10 28 19
38 47 7 9 18 29 27
46 6 8 17 26 37 35
5 14 16 25 34 45 36
13 15 24 33 42 4 44
21 23 32 41 43 12 3
22 31 40 49 2 20 11
-1
Run:
Run the program to see if your results are correct.
Explanation / Answer
Java Program : All method names and implementations are self explanatory
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
class Sample2 {
static int[][] readData(Scanner obj , int size){
int mat[][] = new int[size][size];
for(int i=0;i<size;i++){
for(int j=0;j<size;j++){
mat[i][j] = obj.nextInt();
}
}
return mat;
}
static void printArray(int mat[][]){
for(int i=0;i<mat.length;i++){
for(int j=0;j<mat[0].length;j++){
System.out.print(mat[i][j]+" ");
}
System.out.println("");
}
}
static int sumRow(int mat[][], int row){
int ans = 0;
for(int i=0;i<mat[0].length;i++){
ans = ans + mat[row][i];
}
return ans;
}
static int sumCol(int mat[][], int col){
int ans = 0;
for(int i=0;i<mat.length;i++){
ans = ans + mat[i][col];
}
return ans;
}
static int sumDiagonal(int mat[][]){
int ans = 0;
for(int i=0;i<mat.length;i++){
ans = ans + mat[i][i];
}
return ans;
}
static int sumAntiDiagonal(int mat[][]){
int ans = 0;
for(int i=0;i<mat.length;i++){
ans = ans + mat[i][mat.length-i-1];
}
return ans;
}
public static void main(String[] args) throws FileNotFoundException {
Scanner obj = new Scanner(new File("P:/input.txt"));
int size = obj.nextInt();
int mat[][] = new int[size][size];
int cnt = 1;
while(size!=-1){
mat = readData(obj, size);
System.out.println("========================");
System.out.println("Square "+(cnt++)+" is ");
System.out.println("========================");
printArray(mat);
int e = sumRow(mat, 0);
boolean magic = true;
for(int i=0;i<size;i++){
int r = sumRow(mat, i);
System.out.println("sum of row "+i+" is "+r);
if(r!=e){
magic = false;
break;
}
}
System.out.println("");
for(int i=0;i<size;i++){
int c = sumCol(mat, i);
System.out.println("sum of column "+i+" is "+c);
if(c!=e){
magic = false;
break;
}
}
System.out.println("");
int d = sumDiagonal(mat);
System.out.println("Tha main diagonal is "+d+" ");
if(d!=e){
magic = false;
}
int ad = sumAntiDiagonal(mat);
if(ad!=e){
magic = false;
}
System.out.println("The other diagonal is "+ad+" ");
if(magic)
System.out.println("This matrix is a magic box!");
else
System.out.println("This matrix is not a magic box");
System.out.println("");
size = obj.nextInt();
}
}
}
OUTPUT :
run:
========================
Square 1 is
========================
8 1 6
3 5 7
4 9 2
sum of row 0 is 15
sum of row 1 is 15
sum of row 2 is 15
sum of column 0 is 15
sum of column 1 is 15
sum of column 2 is 15
Tha main diagonal is 15
The other diagonal is 15
This matrix is a magic box
========================
Square 2 is
========================
30 39 48 1 10 19 28
38 47 7 9 18 27 29
46 6 8 17 26 35 37
5 14 16 25 34 36 45
13 15 24 33 42 44 4
21 23 32 41 43 3 12
22 31 40 49 2 11 20
sum of row 0 is 175
sum of row 1 is 175
sum of row 2 is 175
sum of row 3 is 175
sum of row 4 is 175
sum of row 5 is 175
sum of row 6 is 175
sum of column 0 is 175
sum of column 1 is 175
sum of column 2 is 175
sum of column 3 is 175
sum of column 4 is 175
sum of column 5 is 175
sum of column 6 is 175
Tha main diagonal is 175
The other diagonal is 175
This matrix is a magic box
========================
Square 3 is
========================
48 9 6 39
27 18 21 36
15 30 33 24
12 45 42 3
sum of row 0 is 102
sum of row 1 is 102
sum of row 2 is 102
sum of row 3 is 102
sum of column 0 is 102
sum of column 1 is 102
sum of column 2 is 102
sum of column 3 is 102
Tha main diagonal is 102
The other diagonal is 102
This matrix is a magic box
========================
Square 4 is
========================
6 2 7
1 5 3
2 9 4
sum of row 0 is 15
sum of row 1 is 9
sum of column 0 is 9
Tha main diagonal is 15
The other diagonal is 14
This matrix is not a magic box
========================
Square 5 is
========================
3 16 2 13
6 9 7 12
10 5 11 8
15 4 14 1
sum of row 0 is 34
sum of row 1 is 34
sum of row 2 is 34
sum of row 3 is 34
sum of column 0 is 34
sum of column 1 is 34
sum of column 2 is 34
sum of column 3 is 34
Tha main diagonal is 24
The other diagonal is 40
This matrix is not a magic box
========================
Square 6 is
========================
17 24 15 8 1
23 5 16 14 7
4 6 22 13 20
10 12 3 21 19
11 18 9 2 25
sum of row 0 is 65
sum of row 1 is 65
sum of row 2 is 65
sum of row 3 is 65
sum of row 4 is 65
sum of column 0 is 65
sum of column 1 is 65
sum of column 2 is 65
sum of column 3 is 58
Tha main diagonal is 90
The other diagonal is 60
This matrix is not a magic box
========================
Square 7 is
========================
30 39 48 1 10 28 19
38 47 7 9 18 29 27
46 6 8 17 26 37 35
5 14 16 25 34 45 36
13 15 24 33 42 4 44
21 23 32 41 43 12 3
22 31 40 49 2 20 11
sum of row 0 is 175
sum of row 1 is 175
sum of row 2 is 175
sum of row 3 is 175
sum of row 4 is 175
sum of row 5 is 175
sum of row 6 is 175
sum of column 0 is 175
sum of column 1 is 175
sum of column 2 is 175
sum of column 3 is 175
sum of column 4 is 175
sum of column 5 is 175
sum of column 6 is 175
Tha main diagonal is 175
The other diagonal is 168
This matrix is not a magic box
BUILD SUCCESSFUL (total time: 1 second)
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.