Question: Starting with v.1, write Routes.2.cpp, to design and test a class that represents a route between two cities along a path made up of adjacent








Starting with v.1, write Routes.2.cpp, to design and test a class that represents a route between two cities along a path made up of adjacent Leg objects. Here are the specifications for the Route class: 1. Two Private Data Members Write two private data members: a bag to hold the Leg objects that make up the route, and a numeric member for the total distance -- the sum of all the Leg objects making up the path. The distance should be constant. Since the bag will hold only Leg objects, there's no need for generic pointers (that require type casting). So use a vector of readonly Leg pointers instead of read-only generic pointers -- it saves a step. 2. Two Route Constructor Functions Include two constructors -- one to create a Route object consisting of only one Leg, and another to create a new Route object by appending a Leg object to the end of an existing Route object. (Our solution in the next lab assignment generates new routes by adding Leg objects one-at-a-time to a growing collection of existing Route objects.) Throw an exception from the second constructor if the start city of the appended Leg object does not match the end city of the last Leg in the bag. Use any data type you like for the exception handling. You'll have to figure out how to set the constant "total distance" data member in these constructors. Use the Q\&A section of this module to share ideas with classmates. (** add the distance of new leg into the total distance of Route after the match of the end city of the last Leg in the bag.) 3. Two Getter Functions Write two getters in class Route -- one to return the distance and another to produce nicely formatted output. The output getter should have one parameter -- an ostream reference, so that output can be directed to any stream-oriented source. The "nicely formatted output" should look something like this: "Route: San Francisco to Sacramento to Las Vegas to Salt Lake City to Denver to Oakley to Kansas City to Springfield to Columbus to Washington to New York City, 3502 miles". You decide on the exact appearance, but do not repeat any city name, and do include the start city of the first Leg and the end city of Hint: the Route class will need access to the Leg class' private data members, and no getter function was specified for city names. There's another way to make this happen... Use the Q&A section of this module to share ideas with classmates. Route class and Leg class declarations: 4. An Array Of Route Objects In the main program declare an array of at least 10 Route objects. At index zero, create a Route object using a Leg object of your choice. At index one, create an object using the zeroth Route and a Leg that starts where the zeroth Route ends. At index 2 , create an object using the Route object at index 1 and a Leg that starts where the index 1 Route ends, and so on. Make sure to test the exception handling by adding the new leg not match the end city of last leg in the bag. Hint: this is actually really easy, so don't overthink it. Each time you create a Route object at an index of the array, that Route becomes available for use in creating the Route object at the next index. But do this before sorting the Leg objects by distance. If you correctly throw the exception and handled in the second Route constructor function with one existing Route and one new Leg, you may simply create the Route array by adding each Leg object from the previous Route object as: (you may need to modify the Leg objects array from Part 1 if no connections between any two Legs) The Leg array in Part 1 doesn't need to be identical as the Leg array in Part 2. ** It is important to test the program correctly handle the exception. Route r[]={ Route (1[]), Route (r[],1[1]), Route(r[1], 1[2]), Route(r[2], 1[3]), Route(r[3], 1[4]), oute (r[37],1[38]), Route(r[38], 1[39]) \} 5. Sort By Distance In the main program write a nested-for-loop sorting code block, sorting the Route objects in their array from longest distance to shortest. This will require swapping of objects, which will require an assignment operator function in the Route class. Because there is a constant data member, you should write an assignment operator function -- not just because it's good programming practice, but in this case it's required because of the swapping. 6. Output In a loop in the main program, call the output getter on each object in the Route array. Do so after sorting the Route objects from longest to shortest. Refer to sample output from Files, Assignment6Part2.pdf If you correctly throw the exception and handled in the second Route constructor function with one existing Route and one new Leg, you may simply create the Route array by adding each Leg object from the previous Route object as: (you may need to modify. the Leg objects array from Part 1 if no connections between any two Legs ) The Leg array in Part 1 doesn't need to be identical as the Leg array in Part 2. ** It is important to test the program correctly handle the exception. Route r[]={ Route (1[]), Route (r[],1[1]), Route (r[1],1[2]), Route (r[2],1[3]), Route (r[3],1[4]), .. Route (r[37],1[38]), Route (r[38],1[39]) F; 5. Sort By Distance In the main program write a nested-for-loop sorting code block, sorting the Route objects in their array from longest distance to shortest. This will require swapping of objects, which will require an assignment operator function in the Route class. Because there is a constant data member, you should write an assignment operator function -- not just because it's good programming practice, but in this case it's required because of the swapping. 6. Output In a loop in the main program, call the output getter on each object in the Route array. Do so after sorting the Route objects from longest to shortest. Refer to sample output from Files, Assignment6Part2.pdf 7. Submit Routes.2.cpp Output should include the Routes sorted by distance (longest to shortest). You may optionally include the Legs sorted by distance (shortest to longest, appearing before or after the Routes per your choice. But if you do, think about it first! If you do reorder your legs, do so AFTER you create your route object array! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! ******There are total 40 routes***** Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel, 154.7 Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel, 154.7 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey, 146.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey, 146.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz, 116.7 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz, 116.7 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy, 106.5 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy, 106.5 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino, 89.3 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale, 72.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale, 72.9 miles Starting with v.1, write Routes.2.cpp, to design and test a class that represents a route between two cities along a path made up of adjacent Leg objects. Here are the specifications for the Route class: 1. Two Private Data Members Write two private data members: a bag to hold the Leg objects that make up the route, and a numeric member for the total distance -- the sum of all the Leg objects making up the path. The distance should be constant. Since the bag will hold only Leg objects, there's no need for generic pointers (that require type casting). So use a vector of readonly Leg pointers instead of read-only generic pointers -- it saves a step. 2. Two Route Constructor Functions Include two constructors -- one to create a Route object consisting of only one Leg, and another to create a new Route object by appending a Leg object to the end of an existing Route object. (Our solution in the next lab assignment generates new routes by adding Leg objects one-at-a-time to a growing collection of existing Route objects.) Throw an exception from the second constructor if the start city of the appended Leg object does not match the end city of the last Leg in the bag. Use any data type you like for the exception handling. You'll have to figure out how to set the constant "total distance" data member in these constructors. Use the Q\&A section of this module to share ideas with classmates. (** add the distance of new leg into the total distance of Route after the match of the end city of the last Leg in the bag.) 3. Two Getter Functions Write two getters in class Route -- one to return the distance and another to produce nicely formatted output. The output getter should have one parameter -- an ostream reference, so that output can be directed to any stream-oriented source. The "nicely formatted output" should look something like this: "Route: San Francisco to Sacramento to Las Vegas to Salt Lake City to Denver to Oakley to Kansas City to Springfield to Columbus to Washington to New York City, 3502 miles". You decide on the exact appearance, but do not repeat any city name, and do include the start city of the first Leg and the end city of Hint: the Route class will need access to the Leg class' private data members, and no getter function was specified for city names. There's another way to make this happen... Use the Q&A section of this module to share ideas with classmates. Route class and Leg class declarations: 4. An Array Of Route Objects In the main program declare an array of at least 10 Route objects. At index zero, create a Route object using a Leg object of your choice. At index one, create an object using the zeroth Route and a Leg that starts where the zeroth Route ends. At index 2 , create an object using the Route object at index 1 and a Leg that starts where the index 1 Route ends, and so on. Make sure to test the exception handling by adding the new leg not match the end city of last leg in the bag. Hint: this is actually really easy, so don't overthink it. Each time you create a Route object at an index of the array, that Route becomes available for use in creating the Route object at the next index. But do this before sorting the Leg objects by distance. If you correctly throw the exception and handled in the second Route constructor function with one existing Route and one new Leg, you may simply create the Route array by adding each Leg object from the previous Route object as: (you may need to modify the Leg objects array from Part 1 if no connections between any two Legs) The Leg array in Part 1 doesn't need to be identical as the Leg array in Part 2. ** It is important to test the program correctly handle the exception. Route r[]={ Route (1[]), Route (r[],1[1]), Route(r[1], 1[2]), Route(r[2], 1[3]), Route(r[3], 1[4]), oute (r[37],1[38]), Route(r[38], 1[39]) \} 5. Sort By Distance In the main program write a nested-for-loop sorting code block, sorting the Route objects in their array from longest distance to shortest. This will require swapping of objects, which will require an assignment operator function in the Route class. Because there is a constant data member, you should write an assignment operator function -- not just because it's good programming practice, but in this case it's required because of the swapping. 6. Output In a loop in the main program, call the output getter on each object in the Route array. Do so after sorting the Route objects from longest to shortest. Refer to sample output from Files, Assignment6Part2.pdf If you correctly throw the exception and handled in the second Route constructor function with one existing Route and one new Leg, you may simply create the Route array by adding each Leg object from the previous Route object as: (you may need to modify. the Leg objects array from Part 1 if no connections between any two Legs ) The Leg array in Part 1 doesn't need to be identical as the Leg array in Part 2. ** It is important to test the program correctly handle the exception. Route r[]={ Route (1[]), Route (r[],1[1]), Route (r[1],1[2]), Route (r[2],1[3]), Route (r[3],1[4]), .. Route (r[37],1[38]), Route (r[38],1[39]) F; 5. Sort By Distance In the main program write a nested-for-loop sorting code block, sorting the Route objects in their array from longest distance to shortest. This will require swapping of objects, which will require an assignment operator function in the Route class. Because there is a constant data member, you should write an assignment operator function -- not just because it's good programming practice, but in this case it's required because of the swapping. 6. Output In a loop in the main program, call the output getter on each object in the Route array. Do so after sorting the Route objects from longest to shortest. Refer to sample output from Files, Assignment6Part2.pdf 7. Submit Routes.2.cpp Output should include the Routes sorted by distance (longest to shortest). You may optionally include the Legs sorted by distance (shortest to longest, appearing before or after the Routes per your choice. But if you do, think about it first! If you do reorder your legs, do so AFTER you create your route object array! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! Cities don't match! ******There are total 40 routes***** Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel, 154.7 Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel to Big Sur, 175.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey to Carmel, 154.7 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey, 146.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz to Monterey, 146.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz, 116.7 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy to Santa Cruz, 116.7 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy, 106.5 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino to Gilroy, 106.5 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale to Cupertino, 89.3 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale, 72.9 miles Leg: Pleasant Hill to Concord to Walnut Creek to Danville to San Ramon to Pleasanton to Fremont to Milpitas to Sunnyvale, 72.9 miles
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
