[2 days left] What’s wrong with your cloud strategy? Learn why multicloud solutions matter with Nimble Storage.Register Now

x
Solved

Printing Odd Magic Square

Posted on 2008-06-23
Medium Priority
709 Views
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
Question by:geminibabie05
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 2

LVL 10

Expert Comment

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

sunnycoder earned 2000 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

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

ID: 31470041
Thank you, Sunnycoder.
0

Featured Post

Question has a verified solution.

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

In days of old, returning something by value from a function in C++ was necessarily avoided because it would, invariably, involve one or even two copies of the object being created and potentially costly calls to a copy-constructor and destructor. A…
Many modern programming languages support the concept of a property -- a class member that combines characteristics of both a data member and a method.  These are sometimes called "smart fields" because you can add logic that is applied automaticall…
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…
The viewer will learn how to clear a vector as well as how to detect empty vectors in C++.
Suggested Courses
Course of the Month13 days, 22 hours left to enroll