Solved

Printing Odd Magic Square

Posted on 2008-06-23
4
702 Views
Last Modified: 2010-05-19
I have coded a two-diminsional array set up to place one at the top row, middle column and follow conditions to place each number in the right row and column to equal a magic sqaure. The program runs successfully but somewhere has logical errors. When my program compiles, the printed square shows what appears to be zeros or -858993460. Please advise any corrections. Thank You.

#include "stdafx.h"
void MagicAlg(int   magic[20][20], int n);
void PrintMagic(int  magic[20][20], int n);



int main()
{      
      int n;
      printf("Enter an odd number >= 3\n" );
      scanf("%d", &n);
      
      int magic[20][20];
      PrintMagic(magic, n);
      
      return (0);

}
      void MagicAlg(int magic[20][20], int n)
{
      int  a;
      int i=0;
      int j=n/2;

      for (a=1; a<=n*n; ++a)
      {
            magic[i][j] = a;      //1 is placed at row/column 01 with following conditions filling in square.
            i--;
            j++;

            if (a%n == 0)            //If number is divisible by index, row down 1, column same.
            {
              i += 2;
              j--;
            }
            else
            {
              if (j==n)                  //If column = index, column = column - index.
                  j -= n;
              else if (i<0)            //If row < 0, row = row + index.
                  i += n;
            }
        }

}

void PrintMagic(int magic[20][20], int n)
{
  for (int i=0; i<n; i++)
  {
    for (int j=0; j<n; j++)
      printf(" %d", magic[i][j]);

    printf("\n");
  }
}
0
Comment
Question by:geminibabie05
  • 2
4 Comments
 
LVL 10

Expert Comment

by:margajet24
ID: 21852330
void MagicAlg(int magic[20][20], int n) -> void MagicAlg(int magic[][], int n)

void PrintMagic(int magic[20][20], int n) -> void PrintMagic(int magic[][], int n)
0
 
LVL 45

Accepted Solution

by:
sunnycoder earned 500 total points
ID: 21852366
Hello geminibabie05,

You do not call MagicAlg!!!

      int magic[20][20];
      MagicAlg(magic,n);
      PrintMagic(magic, n);

Also, you would probably like to add checks for input verification.

Regards,
sunnycoder
0
 

Author Comment

by:geminibabie05
ID: 21852394
When I do >>void PrintMagic(int magic[][], int n), the function header and definition have errors of magic missing subscribt. And, the print function cannot convert parameter 1 'int [20][20]' to 'int [][1]'
0
 

Author Closing Comment

by:geminibabie05
ID: 31470041
Thank you, Sunnycoder.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Unlike C#, C++ doesn't have native support for sealing classes (so they cannot be sub-classed). At the cost of a virtual base class pointer it is possible to implement a pseudo sealing mechanism The trick is to virtually inherit from a base class…
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…
The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.

929 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now