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 new operator in c++

1 Answers  


write a program in c++ to overload the function add (s1,s2) where s1 and s2 are integers and floating point values.

4 Answers  


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

2 Answers   CTS,


How to improve object oriented design skills?

0 Answers  


What is abstraction in oops?

0 Answers  






What is this interview room ? Is it a class or an object.

3 Answers   CybAge, NSN, Wipro,


There are 2 classes defined as below public class A { class B b; } public class B { class A a; } compiler gives error. How to fix it?

3 Answers   Microsoft,


#include <stdio.h> #include <alloc.h> #include <stdlib.h> #include <conio.h> void insert(struct btreenode **, int); void inorder(struct btreenode *); struct btreenode { struct btreenode *leftchild; struct btreenode *rightchild; int data; }; main() { struct btreenode *bt; bt=(struct btreenode *)NULL; int req,i=1,num; clrscr(); printf("Enter number of nodes"); scanf("%d",&req); while(i<=req) { printf("Enter element"); scanf("%d",&num); insert(&bt,num); i++; } inorder(bt); } void insert(struct btreenode **sr, int num) { if(*sr==NULL) { *sr=(struct btreenode *)malloc (sizeof(struct btreenode)); (*sr)->leftchild=(struct btreenode *)NULL; (*sr)->rightchild=(struct btreenode *)NULL; (*sr)->data=num; return; } else { if(num < (*sr)->data) insert(&(*sr)->leftchild,num); else insert(&(*sr)->rightchild,num); } return; } void inorder(struct btreenode *sr) { if(sr!=(struct btreenode *)NULL) { inorder(sr->leftchild); printf("\n %d",sr->data); inorder(sr->rightchild); } else return; } please Modify the given program and add two methods for post order and pre order traversals.

0 Answers  


Program to read a comment string

1 Answers   IBM,


What is meant by multiple inheritance?

0 Answers  


what is difference between objects and function

3 Answers  


write a program to find 2^n+1 ?

0 Answers   CTS,


Categories