``````#include <iostream> //Using for input and output
#include <iomanip>  //To set each number a determined place in the print function

/*
This program will try to move a knight
around a chess board to each space
exactly one time.
How I will do that?
I will first create the board by a determined size.
I will fill the board with 0s.
I will define whether a move is in bounds,
and I will define whether a move is already taken
I will define if there is a next move to be made
from a given space.

If a space is determined to be in bounds, free, and a next move
is possible. Then I want to write that space.

Knight Moves
Row    Col
+1      +2
-1      +2
+1      -2
-1      -2
+2      +1
-2      +1
+2      -1
-2      -1

*/
void createboard();     //Creates the Board and fills its contents with 0s
int board[8][8];             //array
int rm[]= {-2,+2,+2,-2,-1,+1,-1,+1},        //how the knight movs
cm[] ={+1,+1,-1,-1,+2,+2,-2,-2};

void write(int,int,int);   //IN: are the Row, Col, and Move
bool inbounds(int,int);    //IN: are the Row, Col OUT: Is it in Bounds?
bool free(int,int);        //IN:are the Row, Col OUT: Is the space free?
bool move(int,int,int);    //IN: The Starting Coordinates, and Move to begin at
void printboard();         //Prints The Board
using namespace std;       //used to set the variable scope
int main()
{
createboard();         //Creates the 8x8 Board
move(0,0,1);           //Sends 5 5 as the Starting Spot, and 1 is the move
printboard();          //Prints the Board

system("pause");       //Pause the System
return 1;
}//end of Main
void createboard()         //This will create the board
{                                 //Size 8 x 8
int r = 0;                 //  Filled with 0s
int c = 0;

while (r < 8)
{
while (c < 8)
{
board[r][c] = 0;
c++;        //New Colomn
}
r++;                       //New Space
c = 0;                          //Back to the beginning of the column
} } //End of While and end of CreateBoard

void write(int r, int c, int m)           //Will set the move number
//to the given coordinates
{ board[r][c] = m; }

bool inbounds(int r,int c)               //Are the coordinates on the board?
{
if (r >=0 && c >=0 && r<8 && c<8)  //if 0 or more for Rows and Cols
{return true;}                  //and less than 8, then its fine
else {return false;}                     //other wise, No!
}                                      // end of inbounds

bool free(int r, int c)                //Is this space free?
{
if (board[r][c] == 0)             //If its a 0, then its free
{ return true; }
else { return false;}             //Otherwise its taken
}                                      //end of free

//end of nextmove

bool move(int r, int c, int m)              //move the horse from the
{

for (int i=0; i<8;++i)                    //loop designed to try each of
{                                           //the 8 possible moves
write(r,c,m);                               //Writes the number on the table
int currentRow = r + rm[i];
int currentCol= c + cm[i];
cout <<i<<endl;
if (free(r,c) && inbounds(r,c) && move(currentRow,currentCol,m+1)  )

return true;
}
write(r,c,0);
return false;
}//end of move

void printboard()                  //Print the board on the screen
{
int r = 0; //set the first row to 0 ---r for row
int c = 0; //set the column to to 0 ---m for column
cout << endl;

while (r < 8)
{
while (c < 8)
{
cout << setw(3) << board[r][c] <<" "; //write board number in the right place
c++;            //next space
}//end of c while
r++;                     //next row after the columns have been filled
cout <<endl;                    //new line
c = 0;                   //back to the first line
}//end of r while
}//end of print board``````

I am just getting 0s as an output. I thought this would work. Someone can tell me what Im doing wrong?

Hey nevermind all I figured it out. Thanks!

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.