7.9 Find a route |
This program will use scanf
(fscanf
) to input data
and a number of arrays to process the data.
The program will first input a data set that the first part is composed of records that have four data elements. The first two are zip codes, the third is the distance, in miles, between the two zip codes. The last field is a comment. These records represent a rode between two cities. A route, in this case can be traveled either direction. All three values will be integers.
This section of the data is terminated by a record with all three values set to zero.
The next section in the data file is a set of records that have two zip codes. For each pair of zip codes find a route between the zip codes. There is a third field that has a comment.
Be able to get your data both from the standard input or a specified file name.
The data set is "guaranteed" to have less than 500 roads and less than 250 zip codes.
But, use #define
pre-processor statements to define these limits (if you need
limits).
For extra credit, find multiple routes and select the shortest (and longest?) route.
At the start of your program print out:
Then for each route requested print out:
At the end of your program print the following summary:
Given the following example input.
85716 95949 820 Tucson-GrassValley 99801 95949 1400 GrassValley-Alaska 00000 00000 00 85716 99801 Tucson-Alaska 85716 34562 Tucson-? 00000 00000
This output should be in (about) the following format:
Your name CIS265 Louis Taber Lab: 7.7: Find a route 3 roads read in. 1. Route from 85716 to 99801 85716 to 95949 820 miles 95949 to 99801 400 miles ** 85716 to 99801 1240 miles 2. Route from 85716 to 34562 ** No route available: zip 34562 not found. Summary: 1 route(s) found. Total 1240 miles. Total 2 roads. 1 route not found
Test your program with the following sample data set.
It is available by anonymous FTP at
ftp://lt.tucson.az.us/pub/c/route.dat.
Study areas:
scanf()
. Hanly & Koffman pages 35, 51-53, 88, and 461.
Kernighan p157.
Harbison p357-364.
rand()
& srand()
.
Hanly & Koffman page AP9.
Kernighan p252. (Perhaps p46 too.)
Harbison p393.
Hints:
rand()
.
Keep track of the best current route
while looking for a shorter path.
Turn in a copy of your program and its output when used with the above test data marked with:
Please turn your lab in to me, Louis Taber, during class, or slide it under the door of Santa Rita Building room A-115 (my office).
7.9 Find a route |