PLEASE HELP WRITE THE CODE IN JAVA LANGUAGUAGE . THANKS. Please also write the m
ID: 3590481 • Letter: P
Question
PLEASE HELP WRITE THE CODE IN JAVA LANGUAGUAGE. THANKS. Please also write the main method. Thanks
In recreational mathematics, a magic square is an arrangement of numbers (usually integers) in a square grid, where the numbers in each row, and in each column, and the numbers that run diagonally in both directions, all add up to the same number. A magic square has the same number of rows as it has columns, and in conventional math notation, "n" stands for the number of rows (and columns) it has. Thus, a magic square always contains n2 numbers, and its size (the number of rows [and columns] it has) is described as being "of order n". A magic square that contains the integers from 1 to n2 is called a normal magic square.
M = (n(n^2 + 1)) / 2
The constant that is the sum of every row, column and diagonal is called the magic constant or magic sum,M. Every normal magic square has a unique constant determined solely by the value of n, which can be calculated using this formula:
In this assignment, you are to write a program that takes a 2-dimensional array of ints as input and determines if it is in fact a normal magic square.
You will need to implement each of the following methods:
public static int magicSum(int[][] array)
public static boolean rowsAreAllEqualToMagicSum(int[][] array)
public static boolean columnsAreAllEqualToMagicSum(int[][] array)
public static boolean diagonalsAreBothEqualToMagicSum(int[][] array)
public static boolean isMagicSquare(int[][] array)
public static boolean isNormalMagicSquare(int[][] array)
public static int getSumOfDownDiagonal(int[][] array)
public static int getSumOfUpDiagonal(int[][] array)
public static int getSumOfRow(int[][] array, int index)
public static int[] getColumn(int[][] array, int index)
public static int getSumOfColumn(int[] array)
You should test your program using a variety of 2-dimensional arrays.
Explanation / Answer
import java.lang.reflect.Array;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("Enter the no of rows/colums of the array");
int n=sc.nextInt();
int[][] magicSquare = new int[n][n];
System.out.println("Enter the entries of the array seprated by space");
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
magicSquare[i][j]=sc.nextInt();
System.out.println("Enter the operation you want to do:");
System.out.println("1. Check if it is a magic square");
System.out.println("2. Check if it is a normal magic square");
System.out.println("3. Get Magic Sum");
int flag=sc.nextInt();
if(flag==1)
{
if(isMagicSquare(magicSquare))
System.out.println("Yes it is a magic square");
else
System.out.println("No it is not a Normal magic square");
}
else if(flag==2)
{
if(isNormalMagicSquare(magicSquare))
System.out.println("Yes it is a magic square");
else
System.out.println("No it is not a magic square");
}
else if(flag==2)
{
System.out.println("Magic Sum ="+magicSum(magicSquare));
}
else
System.out.println("Wrong input");
}
public static int getSumOfRow(int[][] array, int index)
{
int sum=0,n;
n=array[0].length;
for(int i=0;i<n;i++)
sum=sum+array[index][i];
return sum;
}
public static int getSumOfColumn(int[][] array,int index)
{
int sum=0,n;
n=array[0].length;
for(int i=0;i<n;i++)
sum=sum+array[i][index];
return sum;
}
public static int[] getColumn(int[][] array, int index)
{
return array[index];
}
public static int getSumOfUpDiagonal(int[][] array)
{
int sum=0,n,j=0;
n=array[0].length;
for(int i=n-1;i>=0;i--)
sum=sum+array[i][j++];
return sum;
}
public static int getSumOfDownDiagonal(int[][] array)
{
int sum=0,n;
n=array[0].length;
for(int i=0;i<n;i++)
sum=sum+array[i][i];
return sum;
}
public static boolean isNormalMagicSquare(int[][] array)
{
int n;
n=array[0].length;
int[] temp = new int[n*n];
for(int i=0;i<n*n;i++)
temp[i]=0;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
if(array[i][j]>n*n)
return false;
if(temp[array[i][j]]==0)
temp[array[i][j]]=1;
if(temp[array[i][j]]!=0)
return false;
}
return true;
}
public static boolean isMagicSquare(int[][] array)
{
int n,sum=0,i,j;
n=array[0].length;
for(i=0;i<n;i++)
sum=sum+array[0][i];
for(i=0;i<n;i++)
{
if(sum!=getSumOfRow(array,i))
return false;
if(sum!=getSumOfColumn(array,i))
return false;
if(sum!=getSumOfUpDiagonal(array))
return false;
if(sum!=getSumOfDownDiagonal(array))
return false;
}
return true;
}
public static boolean diagonalsAreBothEqualToMagicSum(int[][] array)
{
int n,sum=0,i;
n=array[0].length;
for(i=0;i<n;i++)
sum=sum+array[0][i];
for(i=0;i<n;i++)
{
if(sum!=getSumOfUpDiagonal(array))
return false;
if(sum!=getSumOfDownDiagonal(array))
return false;
}
return true;
}
public static boolean columnsAreAllEqualToMagicSum(int[][] array)
{
int n,sum=0,i;
n=array[0].length;
for(i=0;i<n;i++)
sum=sum+array[0][i];
for(i=0;i<n;i++)
{
if(sum!=getSumOfColumn(array,i))
return false;
}
return true;
}
public static boolean rowsAreAllEqualToMagicSum(int[][] array)
{
int n,sum=0,i;
n=array[0].length;
for(i=0;i<n;i++)
sum=sum+array[0][i];
for(i=0;i<n;i++)
{
if(sum!=getSumOfRow(array,i))
return false;
}
return true;
}
public static int magicSum(int[][] array)
{
int n,sum=0,i;
n=array[0].length;
for(i=0;i<n;i++)
sum=sum+array[0][i];
return sum;
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.