Megazord, why don't you post up the start of your program, and put 3 functions in it:
1) markRows
2) markCols
3) markDiagonals or markDiag
These will be void return functions for now.
Although it's not usually recommended, since every function will need the board[] to do anything, make it a global array for now.
Take the board array and set every sqr to 1. That will indicate a good square for the next queen, when we're done removing the unlawful squares.
Include anything else you think would be helpful.
Here's an untested bit of what I'm thinking of.
Code:
status: just starting, not tested.
*/
#include <stdio.h>
void markRow(int, int *); //function prototypes
void markCol(int);
void markDiag(int);
void printIt(void);
void saveAnswers(char answers[92][]);
board[64];
int main() {
char answers[92][65];
int i, j, sqr, index;
int lowRows[] = { 0,8,16,24,32,40,48,56 };
for(i = 0; i < 64; i++)
board[i] = 1;
for(i = 0; i < 64; i += 8) //marks queenside edge of our board
board[i] = -1;
for(i = 0; i < 92; i++) {
for(j = 0; j < 64; j++) {
answers[i][j] = '0';
}
answers[i][j] = '\0'; //set EOS at the end of every answer
}
printf("\n\n Enter the number of the solution you want to see [1-92]:");
sqr = 26; //assignment for now
markRow(sqr, lowRows);
printf("\n Rows are marked. Sqr is %d\n", sqr);
printIt();
j = getchar();
printf("\n");
markCol(sqr);
printf("\n Columns are marked. Sqr is %d\n", sqr);
printIt();
j = getchar();
printf("\n");
markDiag(sqr);
printf("\n Diagonals are marked. Sqr is %d\n", sqr);
printIt();
/*
saveAnswer(answers[92][]);
*/
printf("\n\n\t\t\t press enter when ready");
i = getchar();
return 0;
}
void markDiag(int sqr) {
int i, low; // vector;
for(i = sqr; i < 64; i += 9) { //4 o'clock vector
if(board[i] < 0)
break;
else
board[i] = 0;
}
}
void markRow(int sqr, int lowRows[8]) {
int i, low, hi;
i = sqr/8;
low = lowRows[i];
hi = low + 8;
for(i = low; i < hi; i++) {
board[i] = 0;
}
}
void markCol(int sqr) {
int i, low;
low = sqr % 8;
for(i = low; i < 64; i+= 8) {
board[i] = 0;
}
}
void printIt(void) {
int i;
printf("\n");
for(i = 0; i < 64; i++) {
if(i && i % 8 == 0)
printf("\n");
printf("%2d ", board[i]);
}
}
Diagonal checking for the queens is coded up for only 1 direction, and this is very much unchecked and impromptu. The tricky part is getting all the solutions, of course.