// Chapter 5 of C++ How to Program// tortoiseandhare.cpp#include <iostream> using std::cout;using std::endl; #include <cstdlib> #include <ctime> #include <iomanip> using std::setw; const int RACE_END = 70; /* Write prototype for moveTortoise here */void moveTortoise(int &);/* Write prototype for moveHare here */void moveHare(int &);/* Write prototype for printCurrentPositions here */void printCurrentPositions(int &,int &); int main(){ int tortoise = 1, hare = 1, timer = 0; srand( time( 0 ) ); cout<<"A program to show the match between the tortoise and the hare!"<<endl<<endl; cout << "ON YOUR MARK, GET SET\nBANG !!!!" <<endl << "\nAND THEY’RE OFF !!!!\n\n"; while ( tortoise != RACE_END && hare != RACE_END ) { /* Write call for moveTortoise here */ moveTortoise(tortoise); /* Write call for moveHare here */ moveHare(hare); /* Write call for printCurrentPositions here */ printCurrentPositions(tortoise,hare); ++timer; } if ( tortoise >= hare ) cout << "\nTORTOISE WINS!!! YAY!!!\n"; else cout << "Hare wins. Yuch.\n"; cout << "TIME ELAPSED = " << timer << " seconds" << endl; return 0;} /* Write function definition for moveTortoise here */void moveTortoise(int & turtlePtr){ int x = 1 + rand() % 10; if ( x >= 1 && x <= 5 ) // fast plod turtlePtr += 3; else if ( x == 6 || x == 7 ) // slip turtlePtr -= 6; else // slow plod` ++( turtlePtr ); if ( turtlePtr < 1 ) turtlePtr = 1; else if ( turtlePtr > RACE_END ) turtlePtr = RACE_END;} /* Write function definition for moveHare here */void moveHare(int &rabbitPtr){ int y = 1 + rand() % 10; /* Write statements that move rabbit */ if( y>= 1 &&y<=2) rabbitPtr=rabbitPtr; else if(y>=3&&y<=4) rabbitPtr+=9; else if(y==5) rabbitPtr-=12; else if(y>=6&&y<=8) rabbitPtr+=1; else rabbitPtr-=2; if(rabbitPtr<1) rabbitPtr=1; else if(rabbitPtr> RACE_END) rabbitPtr= RACE_END; /* Write statements that test if rabbit is before the starting point or has finished the race */} /* Write function definition for printCurrentPositions here */void printCurrentPositions(int &bunnyPtr,int &snapperPtr){ if ( bunnyPtr == snapperPtr ) cout << setw( bunnyPtr ) << "OUCH!!!"; else if ( bunnyPtr < snapperPtr ) cout << setw( bunnyPtr ) << "H" << setw( snapperPtr - bunnyPtr ) << "T"; else cout << setw( snapperPtr ) << "T" << setw( bunnyPtr - snapperPtr ) << "H"; cout << "\n";}

评论