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
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 |
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 |
Answer / anu
I don't understand above answer.... can anyone explain in
detail...?? plz.....
| Is This Answer Correct ? | 0 Yes | 2 No |
what are the ways in which a constructors can be called?
The expansion of GNU
What do you mean by overloading?
What do you mean by pure virtual functions?
Why many objects can working together? How objects working togetherM I want to see example code.
Program to read a comment string
what is virtual destructor
What is the example of polymorphism?
any one please tell me the purpose of operator overloading
what is data hiding.
How to calculate the age from the date of birth by using the program?
what is the advantage in software? what is the difference between the software developer and Engineer