QUEEN puzzle

Sharky Forums


Results 1 to 1 of 1

Thread: QUEEN puzzle

Threaded View

  1. #1
    Catfish f15e's Avatar
    Join Date
    Mar 2002
    Location
    I live in the south.
    Posts
    114

    QUEEN puzzle

    Using C++

    I have a small problem with the while loops w/in main().
    Here is the code:

    #include<iostream>
    #include<fstream>
    #include<string>

    using namespace std;

    const int numCols = 8;
    const int numRows = 8;
    const string line = "+---+---+---+---+---+---+---+---+";

    void LoadArray(char grid[numRows][numCols], int& x, int& y);
    void BoardDisp(char grid[numRows][numCols], int& i, int& j );

    int main()
    {
    char grid[numRows][numCols] = {0};
    int x, y;
    int c;
    ifstream inFile;
    inFile.open("solutions.txt");

    if(!inFile)
    {
    cout << " No File Found!!\n\n";
    return -1;
    }

    cout << "\n Will QUEENS Live or Die?\n";
    cout << " ------------------------\n";

    inFile >> x >> y;
    while(inFile)
    {
    c = 0;
    while(c < numCols)
    {
    LoadArray(grid, x, y); //I think the second time through,
    c++; //after reading the 1st 8 pairs and
    inFile >> x >> y; //processing them, it has no input file
    } // values to put in LoadArray, causing my
    // problem, but inFiling from diff. areas
    cout << endl; //hasn't helped me unless I have overlooked
    BoardDisp(grid, x, y); // something which is very possible.
    }

    inFile.close();
    return 0;
    }

    /************************************************************ ************************/

    void LoadArray(char grid[][numCols], int& x, int& y)
    {

    cout << x << y << ' ';
    grid[x-1][y-1] = 'Q';


    }

    /************************************************************ ************************/

    void BoardDisp(char grid[][numCols], int& x, int& y)
    {
    cout << line << endl;
    for (x = 0; x < numRows; x++)
    {
    cout << "|";
    for(y = 0; y < numCols; y++)
    {
    if(grid[x][y] == 'Q')
    cout << ' ' << grid[x][y] << ' ' << '|';

    else if(grid[x][y] == 0)
    cout << " |";
    }
    cout << endl << line << endl;
    }

    for (x = 0; x < numRows; x++)
    for (y = 0; y < numCols; y++)
    grid[x][y] = 0;

    }

    /************************************************************ ***********************/

    Here is what is in my in my input file(inFile:
    8 5 7 7 7 4 6 1 5 3 3 6 1 6 2 2
    5 3 3 6 2 4 4 8 1 2 6 1 8 5 7 7
    1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8
    8 1 7 2 6 3 5 4 4 5 3 6 2 7 1 8

    And here is the output: The board grid is correct on the output, which here it looks out of line. Guess it has to do with the editor in here.

    Will QUEENS Live or Die?
    ------------------------
    85 77 74 61 53 36 16 22
    +---+---+---+---+---+---+---+---+
    | | | | | | Q | | |
    +---+---+---+---+---+---+---+---+
    | | Q | | | | | | |
    +---+---+---+---+---+---+---+---+
    | | | | | | Q | | |
    +---+---+---+---+---+---+---+---+
    | | | | | | | | |
    +---+---+---+---+---+---+---+---+
    | | | Q | | | | | |
    +---+---+---+---+---+---+---+---+
    | Q | | | | | | | |
    +---+---+---+---+---+---+---+---+
    | | | | Q | | | Q | |
    +---+---+---+---+---+---+---+---+
    | | | | | Q | | | |
    +---+---+---+---+---+---+---+---+
    88 36 24 48 12 61 85 77
    +---+---+---+---+---+---+---+---+
    | | Q | | | | | | |
    +---+---+---+---+---+---+---+---+
    | | | | Q | | | | |
    +---+---+---+---+---+---+---+---+
    | | | | | | Q | | |
    +---+---+---+---+---+---+---+---+
    | | | | | | | | Q |
    +---+---+---+---+---+---+---+---+
    | | | | | | | | |
    +---+---+---+---+---+---+---+---+
    | Q | | | | | | | |
    +---+---+---+---+---+---+---+---+
    | | | | | | | Q | |
    +---+---+---+---+---+---+---+---+
    | | | | | Q | | | Q |
    +---+---+---+---+---+---+---+---+
    88 22 33 44 55 66 77 88
    +---+---+---+---+---+---+---+---+
    | | | | | | | | |
    +---+---+---+---+---+---+---+---+
    | | Q | | | | | | |
    +---+---+---+---+---+---+---+---+
    | | | Q | | | | | |
    +---+---+---+---+---+---+---+---+
    | | | | Q | | | | |
    +---+---+---+---+---+---+---+---+
    | | | | | Q | | | |
    +---+---+---+---+---+---+---+---+
    | | | | | | Q | | |
    +---+---+---+---+---+---+---+---+
    | | | | | | | Q | |
    +---+---+---+---+---+---+---+---+
    | | | | | | | | Q |
    +---+---+---+---+---+---+---+---+
    88 72 63 54 45 36 27 18
    +---+---+---+---+---+---+---+---+
    | | | | | | | | Q |
    +---+---+---+---+---+---+---+---+
    | | | | | | | Q | |
    +---+---+---+---+---+---+---+---+
    | | | | | | Q | | |
    +---+---+---+---+---+---+---+---+
    | | | | | Q | | | |
    +---+---+---+---+---+---+---+---+
    | | | | Q | | | | |
    +---+---+---+---+---+---+---+---+
    | | | Q | | | | | |
    +---+---+---+---+---+---+---+---+
    | | Q | | | | | | |
    +---+---+---+---+---+---+---+---+
    | | | | | | | | Q |
    +---+---+---+---+---+---+---+---+
    Press any key to continue


    As you can see, I am not getting the correct output for the 1st pairs in the 2nd, 3rd, and 4th chess boards. I know the above code is incorrect, but I tried placing the inFile>>x>>y; in many diff. places w/ no luck. After the first 8 pairs are read in, it processes the data correctly, but when it gets the next 8 pairs, the first pair in each group is not correct. Like I said, I've tried many different ways to fix this with no luck. This is the closest I've gotten to the actual output.
    Any help would be appreciated. THANKS!!
    Last edited by f15e; 09-05-2002 at 10:16 AM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •