Advertisement
Guest User

Untitled

a guest
Apr 29th, 2016
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.75 KB | None | 0 0
  1. void LabMagicBox();
  2. void ReadMatrixFromFile(int **& matrix, int size, ifstream & fin);
  3. void PrintMatrix(int **& matrix, int size);
  4. bool DetermineIsMagic(int **& matrix, int size);
  5. int SumRow(int **& matrix, int size, int index);
  6. int SumCol(int **& matrix, int size, int index);
  7. int SumMainDiag(int **& matrix, int size);
  8. int SumRevDiag(int **& matrix, int size);
  9.  
  10. int main(int argc, char ** argv)
  11. {
  12.     //cout << "Testing AC_Array: " << (TestAC_Array() ? "Success." : "Failed.") << endl;
  13.  
  14.     LabMagicBox();
  15.  
  16.     system("pause");
  17.     return 0;
  18. }
  19.  
  20. void LabMagicBox()
  21. {
  22.     int ** magic_box = nullptr;
  23.     int n = 0;
  24.     ifstream fin("numbers.txt");
  25.  
  26.     do
  27.     {
  28.         fin >> n;
  29.  
  30.         if (n != -1)
  31.         {
  32.             ReadMatrixFromFile(magic_box, n, fin);
  33.             PrintMatrix(magic_box, n);
  34.             cout << (DetermineIsMagic(magic_box, n) ? "This is a magix box." : "This is not a magix box.") << endl << endl;
  35.  
  36.             //clear data from array
  37.             delete[] magic_box;
  38.             magic_box = nullptr;
  39.         }
  40.     } while (n != -1);
  41.  
  42.    
  43.  
  44. }
  45.  
  46. void ReadMatrixFromFile(int **& matrix, int size, ifstream & fin)
  47. {
  48.     //Allocate array memory based on sizes
  49.     matrix = new int * [size];
  50.     for (int i = 0; i < size; ++i)
  51.     {
  52.         matrix[i] = new int[size];
  53.     }
  54.  
  55.     //read in values
  56.     for (int x = 0; x < size; ++x)
  57.     {
  58.         for (int y = 0; y < size; ++y)
  59.         {
  60.             fin >> matrix[x][y];
  61.         }
  62.     }
  63. }
  64.  
  65. void PrintMatrix(int **& matrix, int size)
  66. {
  67.     for (int x = 0; x < size; ++x)
  68.     {
  69.         for (int y = 0; y < size; ++y)
  70.         {
  71.             cout << matrix[x][y] << " ";
  72.         }
  73.         cout << endl;
  74.     }
  75. }
  76. bool DetermineIsMagic(int **& matrix, int size)
  77. {
  78.     //assume it's a magic square
  79.     bool isMagic = true;
  80.  
  81.     //priming read to get first row sum
  82.     int sumdiag1 = SumMainDiag(matrix, size);
  83.     int sumdiag2 = SumRevDiag(matrix, size);
  84.  
  85.     if (sumdiag1 == sumdiag2)
  86.     {
  87.         for (int x = 0; x < size; ++x)
  88.         {
  89.             if (sumdiag1 != SumRow(matrix, size, x) || sumdiag1 != SumCol(matrix, size, x))
  90.             {
  91.                 //failed, this is not a magic square
  92.                 isMagic = false;
  93.             }
  94.         }
  95.     }
  96.     else
  97.     {
  98.         isMagic = false;
  99.     }
  100.    
  101.     return isMagic;
  102. }
  103.  
  104. int SumRow(int **& matrix, int size, int index)
  105. {
  106.     int sum = 0;
  107.     for (int i = 0; i < size; ++i)
  108.     {
  109.         sum += matrix[index][i];
  110.     }
  111.     return sum;
  112. }
  113. int SumCol(int **& matrix, int size, int index)
  114. {
  115.     int sum = 0;
  116.     for (int i = 0; i < size; ++i)
  117.     {
  118.         sum += matrix[i][index];
  119.     }
  120.     return sum;
  121. }
  122. int SumMainDiag(int **& matrix, int size)
  123. {
  124.     int sum = 0;
  125.     for (int i = 0; i < size; ++i)
  126.     {
  127.         for (int j = 0; j < size; ++j)
  128.         {
  129.             if (i == j)
  130.             {
  131.                 sum += matrix[i][j];
  132.             }
  133.         }
  134.     }
  135.     return sum;
  136. }
  137. int SumRevDiag(int **& matrix, int size)
  138. {
  139.     int sum = 0;
  140.     for (int i = size-1; i >= 0; --i)
  141.     {
  142.         for (int j = size - 1; j >= 0; --j)
  143.         {
  144.             if (i == j)
  145.             {
  146.                 sum += matrix[i][j];
  147.             }
  148.         }
  149.     }
  150.     return sum;
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement