kaiyuan941014 于 2014.12.12 08:52 提问

In this exercise you will design a structure in C that models a Major League Baseball stadium. You
will also write several supporting functions and methods that process and act on that data. Additional
details are provided in the stadium.h file.
The first step will be to design your structure(s). You will need to decide what fields and data types
should be included in this structure. At a minimum, you should support the following pieces of data:
• Team name
• City
• State
• Year Built
• Latitude (scale: ["180, 180], negative is southern hemisphere)
• Longitude (scale: ["180, 180], negative is western hemisphere)
For completeness, we repeat how to compute the air distance between two latitude/longitude points
using the Spherical Law of Cosines:
d = arccos (sin('1) sin('2) + cos('1) cos('2) cos(")) • R
where
• '1 is the latitude of location A, '2 is the latitude of location B
• " is the di↵erence between location B’s longitude and location A’s longitude
• R is the (average) radius of the earth, 6,371 kilometers
Note: the formula above assumes that latitude and longitude are measured in radians r, "⇡  r  ⇡.
To convert from degrees deg ("180 < deg <180) to radians r, you can use the simple formula:
r = (deg /180)*PI

/**

• Structure that models a Major League Baseball Stadium */ typedef struct { //TODO } Stadium;![]

typedef enum {
NAME,
TEAM,
AGE,
STATE_CITY,
LATITUDE,
LONGITUDE,
} Order;

/**

• A builder function to create an instance of a Stadium with
• the provided values.
*/ Stadium * createStadium(const char *name, const char *teamName, const char *city, const char *state, int yearBuilt, double latitude, double longitude);

/**

/**

• Returns the air distance (using the Spherical Law of Cosines
• between the two stadiums based on their latitude/longitude. */ double getAirDistance(const Stadium *s1, const Stadium *s2);

/**

• Returns the total air distance between each contiguous

/**

• Comaprator function that orders stadiums by their name (alphabetic order) */ int cmpStadiumByName(const void *s1, const void *s2);

/**

• Comaprator function that orders stadiums by their team name (alphabetic order) */ int cmpStadiumByTeamName(const void*s1, const void*s2);

/**

• Comaprator function that orders stadiums by their age (oldest first) */ int cmpStadiumByAge(const void*s1, const void*s2);

/**

/**

• Comaprator function that orders stadiums by first by their state
• then by their city (alphabetic order) */ int cmpStadiumByStateCity(const void*s1, const void*s2);

/**

• Comaprator function that orders stadiums by their name latitude, (south to north) */ int cmpStadiumByLatitude(const void*s1, const void*s2);

/**

• Comaprator function that orders stadiums by their name longitude (west to east) */ int cmpStadiumByLongitude(const void*s1, const void*s2);

/**

• A function that sorts the given array of stadiums (containing n elements) according
• to the specified order.

2个回答

lxq_xsyu   2014.12.15 18:23

wangyaninglm      2015.01.02 17:09