#include #include #include typedef struct Golfer { char fName[80]; char lName[80]; int handicap; } Golfer; void printRoster(Golfer roster[], int rosterSize); int findBestGolfer(Golfer roster[], int rosterSize); void sortGolfersByHandicap(Golfer roster[], int rosterSize); int main (int argc, char *argv[]) { const int MAX_GOLFERS = 250; Golfer g; strcpy(g.fName, "Roger"); strcpy(g.lName, "Priebe"); g.handicap = 18; printf("not in data%s, %s - %d\n", g.lName, g.fName, g.handicap); Golfer golfers[MAX_GOLFERS]; int numGolfers = 0; FILE *fptr; fptr = fopen("golfers.dat", "r"); if (fptr == NULL) { printf("not open!!\n"); exit(-1); } else { char fName[80]; char lName[80]; int handicap; while (fscanf(fptr, "%s %s %d", fName, lName, &handicap) != EOF) { golfers[numGolfers].handicap = handicap; strcpy(golfers[numGolfers].fName, fName); strcpy(golfers[numGolfers].lName, lName); numGolfers++; } } printRoster(golfers, numGolfers); int best = findBestGolfer(golfers, numGolfers); printf("The best golfer is %s.\n", golfers[best].fName); sortGolfersByHandicap(golfers, numGolfers); printRoster(golfers, numGolfers); return 0; } void printRoster(Golfer roster[], int rosterSize) { for (int i = 0; i < rosterSize; i++) { printf("%s, %s - %d\n",roster[i].lName, roster[i].fName, roster[i].handicap); } } int findBestGolfer(Golfer roster[], int rosterSize) { int best = 0; for (int i = 1; i < rosterSize; i++) { if (roster[i].handicap < roster[best].handicap) { best = i; } } return best; } void sortGolfersByHandicap(Golfer roster[], int rosterSize) { for (int i = 0; i < rosterSize - 1; i++) { int best = i; for (int j = i+1; j < rosterSize; j++) { if (roster[best].handicap > roster[j].handicap) { best = j; } } Golfer temp = roster[i]; roster[i] = roster[best]; roster[best] = temp; } }