how can we design a magic square in c++?or suggest me the
basic idea of it.

Answers were Sorted based on User's Feedback



how can we design a magic square in c++?or suggest me the basic idea of it...

Answer / ganesh kundapur

Detail about the magic square
http://en.wikipedia.org/wiki/Magic_square.

To design a matrix sqaure, consider a 3X3 matrix.

n = 3;

* Fill the matrix with 0 or X. Start from the middle of the
first row ( i = 0, j = n/2)
+--+--+--+
|X_|1_|X_|
|X_|X_|X_|
|X_|X_|X_|

*. From 1, Go up rt corner(no row, and last column)(-1, 2),
and come down. and fill the next number at (2, 2)

X 1 X
X X X
X X 2

*. From 2, go right up corner( No column, 2nd row)(1, -1)
and if not any column, take a left and fill the next number
at (1, 0)

X 1 X
3 X X
X X 2

* From 3, go right up(0,1), It's already accupied, so come
down(2, 0) and fill the next number at (2,0)
X 1 X
3 X X
4 X 2.

* From node 4(2,0), up right up (1, 1), Its not accupied,
fill the next number at (1, 1)

X 1 X
3 5 X
4 X 2.

* From 5(1,1), Go right up(0,2) and its not accupied, fill
the next number at (0, 2)
X 1 6
3 5 X
4 X 2

* From x(0,2), go right up(No row, no column), so come down
from 6(1, 2), Its not accupied fill with the next number 7
at (1, 2)

X 1 6
3 5 7
4 X 2

* From 7(1, 2), Go up rt(1st row, no column), so take a left
and fill the unfilled node (0, 0)

8 1 6
3 5 7
4 X 2

* From 8(0,0), take up rt( No row, 1st column), come down
and fill the unfilled node at ( 2, 1)

8 1 6 sum = 15
3 5 7 sum = 15
4 9 2 sum = 15

sum 15 15 15

Diagonal sum = 15

Fallow the same procedure for 5X5, 7X7 square.

Is This Answer Correct ?    8 Yes 3 No

how can we design a magic square in c++?or suggest me the basic idea of it...

Answer / ganesh kundapur

void check(int *i,int *j,int n)
{
if(*i<0 && *j>=n) {
*i=*i+2;
*j=*j-1;
}
if(*i<=0 && *j<n)
*i=n-1;
if(*i>=0 && *j>=n)
*j=0;
}

/* n is the order of matrix 1, 3, 5... */
void DrawMagicTriangle(int n)
{
int **m;
int i, j, t, k = 0;

m=(int **)malloc(n*sizeof(int));
for(i=0; i<n; i++)
*(m+i)=(int *)malloc(n*sizeof(int));

for(i=0; i<n; i++)
for(j=0; j<n; j++)
m[i][j]=0;
i=0;
j=n/2;
for(t=0; t<n*n; t++) {
m[i][j]=++k;
i--;
j++;

if(i>=0 && j<n && m[i][j]!=0) {
i+=2;
j--;
}
else if(i>=0 && j<n && m[i][j]==0) {
i=i;
j=j;
}
else check(&i,&j,n);
}
for(i=0; i<n; i++) {
for(j=0; j<n; j++)
printf(" %d",m[i][j]);
printf("\n");
}
}

Is This Answer Correct ?    3 Yes 0 No

how can we design a magic square in c++?or suggest me the basic idea of it...

Answer / anu

I don't understand above answer.... can anyone explain in
detail...?? plz.....

Is This Answer Correct ?    0 Yes 2 No

Post New Answer

More OOPS Interview Questions

What is object-oriented programming? Webopedia definition

0 Answers  


What is the point of oop?

0 Answers  


Which is the parameter that is added to every non-static member function when it is called?

3 Answers   Accenture,


why the argument is passed by reference to a copy constructor?example?

2 Answers  


Why do we use class?

0 Answers  






just right the logic of it 1--> If few people are electing then every time ur candidate should win 2--> arrange books in box, if box carry weight == books weight then take another box..... find the no of box required.

0 Answers  


what is difference between objects and function

3 Answers  


Prepare me a program for the animation of train

0 Answers  


i have to create a view in SQL as like in ORACLE DATA EXPRESS EDITION

2 Answers   CTS,


What is the different between Applet and Application?

2 Answers  


what is the difference between ERROR and EXCEPTION?

14 Answers   NIIT, nvidia,


why reinterpret cast is considered dangerous?

0 Answers   TCS,


Categories