0

Hi, I've posted m code below and cant get it to work because of fatal error c1004 unexpected end-of-file found.
Appreciate any help.

#include <iostream>
using namespace std;

/*
//what i addedint q[8][8];
void printSolution();//int q[]);
void hereQueen(int q[], int n1, int n2);
*/

class Queens
{
    bool canGo;
    int squares, norm;
    int *locationRow;
    bool *column;

    bool *lDiag;
    bool *rDiag;

public:
    int Nqueens;
    Queens(int n)

    {
        canGo = true;
        squares=n;
        norm=squares -1;
        locationRow = new int[squares];
        column = new bool[squares];
        lDiag = new bool[squares*2 - 1];
        rDiag = new bool[squares*2 -1];
        Nqueens = 0;

        for(int i = 0; i < squares; i++)

        {
            locationRow[i] = -1;
            column[i] = canGo;
        };

        for(int i = 0; i < squares*2 -1; i++)
            lDiag[i] = rDiag[i] = canGo;
    };


    void hereQueen(int row)
    {
        char respond;
        for(int col = 0; col < squares; col++)
            if(column[col] == canGo &&
                lDiag[row+col] == canGo &&
                rDiag[row-col+norm] == canGo)
            {
                locationRow[row] = col;
                column[col] = !canGo;
                lDiag[row+col] = !canGo;
                rDiag[row-col+norm] = !canGo;
                if(row < squares - 1)
                    hereQueen(row+1);
                else 
                {printSolution(); };

                column[col] = canGo;
                lDiag[row+col] = canGo;
                rDiag[row-col+norm] = canGo;
            };

    };

void main()
{
    int boardSize;
    cout << "Starting Queens Problem..." << endl;
    cout << "Enter the board size (2-12) -->";
    cin >> boardSize;
    Queens queens(boardSize);

    queens.hereQueen(0);
    cout << "Number of solution is" << queens.Nqueens << endl;
}

void printSolution() //int q[])
{
    Nqueens++;
    cout << "Solution for the " << squares << " Queens problem" << endl;
    for(int i = 0; i < squares; i++) 

    {
        for(int j = 0; j < squares; j++)
            if(locationRow[i] == j)
                cout << "Q";
            else
                cout << "*";
        cout << endl;
    };

};

}
3
Contributors
6
Replies
7
Views
5 Years
Discussion Span
Last Post by harris24
1

Oh. They deleted the thread with the response in and kept this one? That wasn't very smart.

Votes + Comments
Then don't post in BOTH threads.
0

Took main() out of class and declared it as int instead of void. Have new errors now:

error LNK1120: 1 unresolved externals
error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup

#include <iostream>
using namespace std;

/*
//what i addedint q[8][8];
void printSolution();//int q[]);
void hereQueen(int q[], int n1, int n2);
*/


class Queens
{
    bool canGo;
    int squares, norm;
    int *locationRow;
    bool *column;

    bool *lDiag;
    bool *rDiag;

public:
    int Nqueens;
    Queens(int n)

    {
        canGo = true;
        squares=n;
        norm=squares -1;
        locationRow = new int[squares];
        column = new bool[squares];
        lDiag = new bool[squares*2 - 1];
        rDiag = new bool[squares*2 -1];
        Nqueens = 0;

        for(int i = 0; i < squares; i++)

        {
            locationRow[i] = -1;
            column[i] = canGo;
        };

        for(int i = 0; i < squares*2 -1; i++)
            lDiag[i] = rDiag[i] = canGo;
    };


    void hereQueen(int row)
    {
        char respond;
        for(int col = 0; col < squares; col++)
            if(column[col] == canGo &&
                lDiag[row+col] == canGo &&
                rDiag[row-col+norm] == canGo)
            {
                locationRow[row] = col;
                column[col] = !canGo;
                lDiag[row+col] = !canGo;
                rDiag[row-col+norm] = !canGo;
                if(row < squares - 1)
                    hereQueen(row+1);
                else 
                {
                    printSolution(); 
                };

                column[col] = canGo;
                lDiag[row+col] = canGo;
                rDiag[row-col+norm] = canGo;
            };

    };

void printSolution() //int q[])
{
    Nqueens++;
    cout << "Solution for the " << squares << " Queens problem" << endl;
    for(int i = 0; i < squares; i++) 
    {
        for(int j = 0; j < squares; j++)
            if(locationRow[i] == j)
                cout << "Q";
            else
                cout << "*";
        cout << endl;
    };

};
};

int main()
{
    int boardSize;
    cout << "Starting Queens Problem..." << endl;
    cout << "Enter the board size (2-12) -->";
    cin >> boardSize;
    Queens queens(boardSize);

    queens.hereQueen(0);
    cout << "Number of solution is" << queens.Nqueens << endl;
}
0

Hey, thanks!

IKept main() out of class but changd int main() to void main()
Got no errors.
Appreciate the help.

#include <iostream>
using namespace std;

/*
//what i addedint q[8][8];
void printSolution();//int q[]);
void hereQueen(int q[], int n1, int n2);
*/


class Queens
{
    bool canGo;
    int squares, norm;
    int *locationRow;
    bool *column;

    bool *lDiag;
    bool *rDiag;

public:
    int Nqueens;
    Queens(int n)

    {
        canGo = true;
        squares=n;
        norm=squares -1;
        locationRow = new int[squares];
        column = new bool[squares];
        lDiag = new bool[squares*2 - 1];
        rDiag = new bool[squares*2 -1];
        Nqueens = 0;

        for(int i = 0; i < squares; i++)

        {
            locationRow[i] = -1;
            column[i] = canGo;
        };

        for(int i = 0; i < squares*2 -1; i++)
            lDiag[i] = rDiag[i] = canGo;
    };


    void hereQueen(int row)
    {
        char respond;
        for(int col = 0; col < squares; col++)
            if(column[col] == canGo &&
                lDiag[row+col] == canGo &&
                rDiag[row-col+norm] == canGo)
            {
                locationRow[row] = col;
                column[col] = !canGo;
                lDiag[row+col] = !canGo;
                rDiag[row-col+norm] = !canGo;
                if(row < squares - 1)
                    hereQueen(row+1);
                else 
                {
                    printSolution(); 
                };

                column[col] = canGo;
                lDiag[row+col] = canGo;
                rDiag[row-col+norm] = canGo;
            };

    };

void printSolution() //int q[])
{
    Nqueens++;
    cout << "Solution for the " << squares << " Queens problem" << endl;
    for(int i = 0; i < squares; i++) 
    {
        for(int j = 0; j < squares; j++)
            if(locationRow[i] == j)
                cout << "Q";
            else
                cout << "*";
        cout << endl;
    };

};
};

void main()
{
    int boardSize;
    cout << "Starting Queens Problem..." << endl;
    cout << "Enter the board size (2-12) -->";
    cin >> boardSize;
    Queens queens(boardSize);

    queens.hereQueen(0);
    cout << "Number of solution is" << queens.Nqueens << endl;
}
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.