#include "si204.h"
int main() {
// Get target density from the user
double target;
fputs("Desired population density (people per sq mile): ", stdout);
target = readnum(stdin);
// variables for the best state and its density.
cstring best_state;
double best_density;
strcpy(best_state, "ERROR");
best_density = 0.0;
// Open data file pop.txt
stream popin = fopen("pop.txt", "r");
// Read in (and ignore!) the beginning with the header line
// and overall USA population data
{ // start a block so we can declare variables locally!
cstring garbage; // this will be used to read over unwanted data
// count how many words need to be ignored in the header
int initial_ignore = (3+11) + 2 + (1+11) + (4+11);
for (int i=0; i < initial_ignore; ++i) {
readstring(garbage, popin);
}
}
// Loop over each state
// there are 50 states + DC and PR
for (int statenum=0; statenum < 52; ++statenum) {
/*****************************/
/* Process that state's info */
/*****************************/
cstring state;
double density;
cstring garbage; // this will be used to read over unwanted data
readstring(state, popin);
// add to state name until we see the word "Population"
readstring(garbage, popin);
while (strcmp(garbage, "Population") != 0) {
strcat(state, " ");
strcat(state, garbage);
readstring(garbage, popin);
}
// second line: 11 values
for (int i=0; i<11; ++i) {
readstring(garbage, popin);
}
// third line: 4 words, 10 unwanted values, then the density
for (int i=0; i<14; ++i) {
readstring(garbage, popin);
}
density = readnum(popin);
// fourth line: 2 words, 11 values
for (int i=0; i<13; ++i) {
readstring(garbage, popin);
}
// Determine if each state is closest
// (in this version, just copy this state's info as the "best")
strcpy(best_state, state);
best_density = density;
}
// Close the data file
fclose(popin);
// print out the name of the closest state
fputs("You should live in ", stdout);
fputs(best_state, stdout);
fputs(" with ", stdout);
writenum(best_density, stdout);
fputs(" people per square mile.\n", stdout);
return 0;
}