Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void LabMagicBox();
- void ReadMatrixFromFile(int **& matrix, int size, ifstream & fin);
- void PrintMatrix(int **& matrix, int size);
- bool DetermineIsMagic(int **& matrix, int size);
- int SumRow(int **& matrix, int size, int index);
- int SumCol(int **& matrix, int size, int index);
- int SumMainDiag(int **& matrix, int size);
- int SumRevDiag(int **& matrix, int size);
- int main(int argc, char ** argv)
- {
- //cout << "Testing AC_Array: " << (TestAC_Array() ? "Success." : "Failed.") << endl;
- LabMagicBox();
- system("pause");
- return 0;
- }
- void LabMagicBox()
- {
- int ** magic_box = nullptr;
- int n = 0;
- ifstream fin("numbers.txt");
- do
- {
- fin >> n;
- if (n != -1)
- {
- ReadMatrixFromFile(magic_box, n, fin);
- PrintMatrix(magic_box, n);
- cout << (DetermineIsMagic(magic_box, n) ? "This is a magix box." : "This is not a magix box.") << endl << endl;
- //clear data from array
- delete[] magic_box;
- magic_box = nullptr;
- }
- } while (n != -1);
- }
- void ReadMatrixFromFile(int **& matrix, int size, ifstream & fin)
- {
- //Allocate array memory based on sizes
- matrix = new int * [size];
- for (int i = 0; i < size; ++i)
- {
- matrix[i] = new int[size];
- }
- //read in values
- for (int x = 0; x < size; ++x)
- {
- for (int y = 0; y < size; ++y)
- {
- fin >> matrix[x][y];
- }
- }
- }
- void PrintMatrix(int **& matrix, int size)
- {
- for (int x = 0; x < size; ++x)
- {
- for (int y = 0; y < size; ++y)
- {
- cout << matrix[x][y] << " ";
- }
- cout << endl;
- }
- }
- bool DetermineIsMagic(int **& matrix, int size)
- {
- //assume it's a magic square
- bool isMagic = true;
- //priming read to get first row sum
- int sumdiag1 = SumMainDiag(matrix, size);
- int sumdiag2 = SumRevDiag(matrix, size);
- if (sumdiag1 == sumdiag2)
- {
- for (int x = 0; x < size; ++x)
- {
- if (sumdiag1 != SumRow(matrix, size, x) || sumdiag1 != SumCol(matrix, size, x))
- {
- //failed, this is not a magic square
- isMagic = false;
- }
- }
- }
- else
- {
- isMagic = false;
- }
- return isMagic;
- }
- int SumRow(int **& matrix, int size, int index)
- {
- int sum = 0;
- for (int i = 0; i < size; ++i)
- {
- sum += matrix[index][i];
- }
- return sum;
- }
- int SumCol(int **& matrix, int size, int index)
- {
- int sum = 0;
- for (int i = 0; i < size; ++i)
- {
- sum += matrix[i][index];
- }
- return sum;
- }
- int SumMainDiag(int **& matrix, int size)
- {
- int sum = 0;
- for (int i = 0; i < size; ++i)
- {
- for (int j = 0; j < size; ++j)
- {
- if (i == j)
- {
- sum += matrix[i][j];
- }
- }
- }
- return sum;
- }
- int SumRevDiag(int **& matrix, int size)
- {
- int sum = 0;
- for (int i = size-1; i >= 0; --i)
- {
- for (int j = size - 1; j >= 0; --j)
- {
- if (i == j)
- {
- sum += matrix[i][j];
- }
- }
- }
- return sum;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement