#include using namespace std; // Define your classes here class Squirrel { string name; float ground_speed, tree_speed; public: Squirrel(string n, float gs, float ts) : name(n), ground_speed(gs), tree_speed(ts) {} string getName() const { return name; } float travelTime(float groundDist, float treeDist) const { return groundDist / ground_speed + treeDist / tree_speed; } }; class RaceCourse { string name; float groundDist, treeDist; public: RaceCourse(string n, float gd, float td) : name(n), groundDist(gd), treeDist(td) {} string getName(){ return name; } string raceSquirrels(const Squirrel &a, const Squirrel &b); }; // Don't change anything from here down int main(){ Squirrel speedy("Speedy", 12, 5); Squirrel climby("Climby", 3, 10); Squirrel skrat("Skrat", 10, 8); RaceCourse treetrack("Tree Track", 1, 10); RaceCourse field("Field", 10, 1); RaceCourse mix("Mix", 10, 10); Squirrel squirrels[] = {speedy, climby, skrat}; RaceCourse tracks[] = {treetrack, field, mix}; int sqlen = sizeof(squirrels) / sizeof(Squirrel); for(auto rc : tracks){ for(int i = 0; i < sqlen; i++){ int opp = (i+1) % sqlen; cout << squirrels[i].getName() << " vs " << squirrels[opp].getName() << " on track " << rc.getName() << ": "; cout << rc.raceSquirrels(squirrels[i], squirrels[opp]) << " wins!\n"; } } return 0; } // "Don't change" includes this. You'll need a matching prototype in your definition of class RaceCourse string RaceCourse::raceSquirrels(const Squirrel &a, const Squirrel &b){ float time_a = a.travelTime(groundDist, treeDist); float time_b = b.travelTime(groundDist, treeDist); return (time_a > time_b)? b.getName() : a.getName(); }