My friend created this program and the program is infite loop I can't fix it.Code:#include<stdio.h>#include<string.h> #include<conio.h> #include<ctype.h> #include<stdlib.h> #include<math.h> int stack1[100]; int stack2[100]; int top=-1; char queen[100][100]; int empty() { if(top==-1) return 1; //if empty else return 0; //if not empty } void push(int i,int j) //pushes a value to the top of the stack { top+=1; stack1[top]=i; stack2[top]=j; } void pop() { top-=1; } int check(int n) { int i=0,x=0,y=0,j=0; int val1,val2; while(x!=1||top!=-1) { for(i=0;i<top;i++) { if(stack1[i]==stack1[top]||stack2[i]==stack2[top]||(abs(stack1[i]-stack1[top])==abs(stack2[i]-stack2[top]))) { if(stack2[top]==n) { for(j=0;j<=top;j++) pop(); } else stack2[top]=stack2[top]+1; } else if((stack1[i]!=stack1[top])&&(stack2[i]!=stack2[top])&&((abs(stack1[i]-stack1[top]))!=(abs(stack2[i]-stack2[top])))&&(top+1==n)) { x=1; return 0; } else { queen[val1][val2]='Q'; val1=rand()%n; val2=rand()%n; push(val1,val2); } } y++; } } int input(int n) { int i,j; for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(queen[i][j]=='0') {queen[i][j]='Q'; push(i,j); return 0;} } } } void reset(int n) { int i,j; for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(queen[i][j]!='Q') queen[i][j]='.'; } } } void main() { int n; //no of Queens int i=0; //no of row int j=0; //no of column int a=0; //counter clrscr(); printf("Enter the number of Queens: "); scanf("%d",&n); printf("\n"); queen[i][j]='Q'; push(i,j); reset(n); check(n); for(i=0;i<n;i++) { printf("\n"); for(j=0;j<n;j++) { printf(" %c ",queen[i][j]); } } getch(); }
Please help,