Advertisement
Shavit

P. 125 Ex. 12.7

Mar 16th, 2014
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.58 KB | None | 0 0
  1. // Shavit Borisov
  2. // CW
  3.  
  4. import java.util.Scanner;
  5.  
  6. public class Main {
  7.  
  8.     public static void main(String[] args)
  9.     {
  10.         final int SIZE = 3;
  11.        
  12.         Scanner in = new Scanner(System.in);
  13.        
  14.         int value;
  15.        
  16.         System.out.printf("The size of your matrix is %d.\n", SIZE);
  17.         MagicMatrix matrix = new MagicMatrix(SIZE);
  18.        
  19.         System.out.printf("Start entering values into your matrix:\n");
  20.         for(int i = 0; i < SIZE; i++)
  21.             for(int j = 0; j < SIZE; j++)
  22.             {
  23.                 System.out.printf("matrix[%d][%d] = ", i, j);
  24.                 value = in.nextInt();
  25.                 matrix.updateCell(i, j, value);
  26.             }
  27.         System.out.printf("%s", matrix.equalRows() ? "Your matrix has equal rows\n" : "Your matrix doesn't have equal rows\n");
  28.         System.out.printf("%s", matrix.equalCols() ? "Your matrix has equal cols\n" : "Your matrix doesn't have equal cols\n");
  29.         System.out.printf("%s", matrix.magicMatrix() ? "Your matrix is magical" : "Your matrix isn't magical");
  30.        
  31.         in.close();
  32.     }
  33. }
  34.  
  35. // Next class
  36.  
  37. public class MagicMatrix
  38. {
  39.     int[][] matrix;
  40.    
  41.     public MagicMatrix(int size)
  42.     {
  43.         matrix = new int[size][size];
  44.         for(int i = 0; i < size; i++)
  45.             for(int j = 0; j < size; j++)
  46.                 matrix[i][j] = 0;
  47.     }
  48.    
  49.     public void updateCell(int row, int col, int value)
  50.     {
  51.         matrix[row][col] = value;
  52.     }
  53.    
  54.     public boolean equalRows()
  55.     {
  56.         boolean equal = true;
  57.         int[] results = new int[matrix.length];
  58.         for(int i = 0; i < results.length; i++)
  59.             results[i] = 0;
  60.         for(int i = 0; i < matrix.length; i++)
  61.             for(int j = 0; j < matrix[i].length; j++)
  62.                 results[i] += matrix[i][j];
  63.         for(int i = 0; (i < results.length - 1) && (equal); i++)
  64.             if(results[i] != results[i + 1])
  65.                 equal = false;
  66.         return equal;
  67.     }
  68.    
  69.     public boolean equalCols()
  70.     {
  71.         boolean equal = true;
  72.         int[] results = new int[matrix[0].length];
  73.         for(int i = 0; i < results.length; i++)
  74.             results[i] = 0;
  75.         for(int j = 0; j < matrix[0].length; j++)
  76.             for(int i = 0; i < matrix.length; i++)
  77.                 results[j] += matrix[i][j];
  78.         for(int i = 0; (i < results.length - 1) && (equal); i++)
  79.             if(results[i] != results[i + 1])
  80.                 equal = false;
  81.         return equal;
  82.     }
  83.    
  84.     public boolean magicMatrix()
  85.     {
  86.         if(equalRows() && equalCols())
  87.         {
  88.             int sum = 0;
  89.             for(int i = 0; i < matrix.length; i++)
  90.                 sum += matrix[i][i];
  91.             for(int i = 0; i < matrix.length; i++)
  92.                 sum -= matrix[0][matrix.length - i - 1];
  93.             if(sum == 0)
  94.             {
  95.                 for(int i = 0; i < matrix.length; i++)
  96.                     sum += matrix[0][i];
  97.                 for(int i = 0; i < matrix[0].length; i++)
  98.                     sum -= matrix[i][0];
  99.                 if(sum == 0)
  100.                     return true;
  101.             }
  102.         }
  103.         return false;
  104.     }
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement