// 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;void moveTortoise(int &);void moveHare(int &);void printCurrentPositions(int,int);/* Write prototype for moveTortoise here *//* Write prototype for moveHare here *//* Write prototype for printCurrentPositions here */int main(){ int tortoise = 1; int hare = 1; int timer = 0; srand( time( 0 ) ); cout << "ON YOUR MARK, GET SET\nBANG !!!!" << "\nAND THEY扲E OFF !!!!\n"; // controls race while ( tortoise != RACE_END && hare != RACE_END ) { moveTortoise (tortoise); moveHare(hare); printCurrentPositions(tortoise,hare); /* Write call for moveTortoise here */ /* Write call for moveHare here */ /* Write call for printCurrentPositions here */ ++timer; } // end while // determine winner if ( tortoise >= hare ) cout << "\nTORTOISE WINS!!! YAY!!!\n"; else cout << "Hare wins. Yuch.\n"; cout << "TIME ELAPSED = " << timer << " seconds" << endl; return 0; } // end main// move tortoise/* Write function definition header for moveTortoise here */void moveTortoise(int &turtlePtr ){ int x = 1 + rand() % 10; // determine which move to make if ( x >= 1 && x <= 5 ) // fast plod turtlePtr += 3; else if ( x == 6 || x == 7 ) // slip turtlePtr -= 6; else // slow plod ++( turtlePtr ); // ensure that tortoise remains within subscript range if ( turtlePtr < 1 ) turtlePtr = 1; else if ( turtlePtr > RACE_END ) turtlePtr = RACE_END;} // end function moveTortoise// move hare/* Write function definition for moveHare here */void moveHare(int &hare){ int y = 1 + rand() % 10;if(y==1||y==2)hare=hare;else if(y==3||y==4)hare+=9;else if(y==5)hare-=12;else if(y==6||y==8)hare+=1;else (hare-=2);if (hare < 1 ) hare = 1; else if (hare> RACE_END ) hare = RACE_END; /* Write statements that move hare */ /* Write statements that test if hare is before the starting point or has finished the race */} // end function moveHare// output positions of animals/* 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";} // end function printCurrentPositions

评论