Programming Assignment #3 - Commands, Sorted Array, Binary Search, Separate C file(40 pts)
This assignment is similar to #2 except
· You must sort the Team Array. Print it before sorting, after sorting, and after all of the teams have been processed.
· You must use a binary search to find a team id.
· Instead of an game file, we will have a command file.
· You will be provided with a driver program (cs1713p3Driver.c) (see below)
· Your code must be created in a separate C file (p3abc123.c). I provided a file named p3abc123.c. Rename it using your abc123 ID. (see below)
· There is a new include file, cs1713p3.h
· The output is different due to the driver printing the commands as they are encountered. Please see the sample output.
Input:
Team same as Programming Assignment #2 although there may be different data.
Command This is different from the previous assignment. The file contains text in the form of commands:
GAME RESULT szTeamId1 szTeamId2 iScore1 iScore2
This should use processGame to process this
GAME FIX szTeamId1 szTeamId2 iOldScoreTeam1 iOldScoreTeam2 iNewScore1 iNewScore2
if the winner changes:
- decrement the old winner's iWin the old loser's iLoss
- increment the new winner's iWin the new loser's iLoss
Otherwise, don't change the wins and losses.
This functionality should be placed in the processGameFix function.
If a team doesn't exist, show a warning.
TEAM PAID szTeamId dAmount
Add the amount to this team's dPaidAmount. If the team doesn't exist,
show a warning.
TEAM SHOW szTeamId
Show all the team information for this one team. If the team doesn't exist,
show a warning.
Larry provided:
cs1713p3_h.txt - include file for program #3; please rename it to cs1713p3.h
cs1713p3Driver_c.txt - driver C file which will invoke some of your functions; please rename to cs1713p3Driver.c
p3abc123_c.txt - skeletal code which you must modify; please rename to p3abc123.c using your abc123 ID.
p3Command.txt - command input file
p3Team.txt - team data input file
Driver program (cs1713p3Driver.c):
You will be provided with a driver program, cs1713p3Driver.c, which
1. invokes the driver's processCommandSwitches
2. invokes your getTeams (in p3abc123.c) to read the original team information.
3. invokes printTeams (in p3abc123.c) to print the original team information
4. invokes your sortTeams (in p3abc123.c) to sort the original team information
5. invokes printTeams to print the sorted team information
6. invokes a driver-provided processCommands which
o reads input lines from the command file until eof:
§ prints the input line
§ determines command and subcommand
§ invokes either
· your processGameCommand to process a GAME subcommand (you should be able to reuse some of your program 2 code, although you must change it) Note that your sscanf will use pzRemainingInput instead of szInputBuffer.
· your processTeamCommand to process a TEAM subcommand. Note that your sscanf will use pzRemainingInput.
7. invokes printTeams to print the resulting team information
Your p3abc123.c code:
· You have been furnished with skeletal code p3abc123.c (rename it from p3abc123_c.txt). Your code will be in the file p3abc123.c. You must not place it in the cs1713p3Driver.c file.
· p3abc123.c already has code for many useful functions including printTeams.
· It does the following includes:
#include <stdio.h>
#include <string.h>
#include "cs1713p3.h"
· It must not include cs1713p3Driver.c within your p3abc123.c file. Look at the notes below on compiling. The "link" step is where the functions you call in the driver and the functions the driver calls in your code get resolved.
· You must create/complete the following routines (see the include file):
o getTeams- reads and returns the teams and returns a count of teams (most of this is in program #2)
o sortTeams - sorts the team information using a bubble sort (see your course notes)
o searchTeams - find a team ID in the sorted team array using a binary search algorithm. You will use this in your routines.
o processTeamCommand - processes the various TEAM commands
o processGameCommand - processes the various GAME commands (most of this is in program #2; however, use pszRemainingInput instead of szInputBuffer). Skeletal code is provided.
o processGame - processes a game using mostly your code from program #2. You must change it to invoke searchteams.
o processGameFix - processes a GAME FIX command.
Please review the cs1713p3.h include file.
Compiling
· (Before doing these steps, make a copy of your code called p3Saved.c in case you incorrectly type them and wipe out your .c file.)
· Compile the driver using
gcc -g -c -o cs1713p3Driver.o cs1713p3Driver.c
(you can do this instead: gcc -g -c cs1713p3Driver.c
causing it to automatically create the cs1713p3Driver.o)
· Compile your code using
gcc -g -c -o p3abc123.o p3abc123.c
(you can do this instead: gcc -g -c p3abc123.c
causing it to automatically create the p3abc123.o)
· Link them together using:
gcc -g -o p3 cs1713p3Driver.o p3abc123.o
· You only have to compile code that changes. Since the driver shouldn't change, you only have to compile it once.
Executing the p3 executable:
./p3 -c p3Command.txt -t p3Team.txt
Turn in:
Your C code (p3abc123.c)
Your output based on the data provided.
Sample Output (partial):
Initial Teams
Id Team Name Wins Loss Fee Amt Paid Amt
Contact Name Phone Email
UTSA01 Armadillos 8 0 150.00 80.00
Jean E Us (210)555-1111
COM001 Comm Eagles 7 1 150.00 75.00
Mae King (210)555-2222
SOUTH1 Slam Dunk 5 3 120.00 75.00
Jerry Tall (210)555-3333
ALHGHT Cake Eaters 4 4 175.00 100.00
E Z Street (210)555-6666
UNKN01 Org New Blk 1 7 150.00 50.00
Bob Wire (210)555-1234
NEWB01 River Rats 0 8 120.00 75.00
Rock D Boat (210)555-4444
UNKN02 Hackers 3 5 150.00 75.00
Tom E Gunn (210)555-5555
Sorted Teams
Id Team Name Wins Loss Fee Amt Paid Amt
Contact Name Phone Email
ALHGHT Cake Eaters 4 4 175.00 100.00
E Z Street (210)555-6666
COM001 Comm Eagles 7 1 150.00 75.00
Mae King (210)555-2222
NEWB01 River Rats 0 8 120.00 75.00
Rock D Boat (210)555-4444
SOUTH1 Slam Dunk 5 3 120.00 75.00
Jerry Tall (210)555-3333
UNKN01 Org New Blk 1 7 150.00 50.00
Bob Wire (210)555-1234
UNKN02 Hackers 3 5 150.00 75.00
Tom E Gunn (210)555-5555
UTSA01 Armadillos 8 0 150.00 80.00
Jean E Us (210)555-1111
GAME RESULT UTSA01 NEWB01 55 12
GAME RESULT COMM01 SOUTH1 17 15
*** team (COMM01) not found
GAME RESULT SOUTH1 ALHGHT 66 3
GAME RESULT UTSA01 SOUTH1 44 45
GAME RESULT UNKN01 UNKN02 33 39
GAME RESULT COM001 UNKN02 43 37
GAME RESULT ALHGHT UNKN02 20 20
*** game was a tie
GAME RESULT NEWB01 NEWB01 30 20
*** same team
TEAM SHOW UTSA01
UTSA01 Armadillos 9 1 150.00 80.00
Jean E Us (210)555-1111
TEAM PAID UTSA01 50.00
TEAM SHOW UTSA01
UTSA01 Armadillos 9 1 150.00 130.00
Jean E Us (210)555-1111
TEAM SHOW UNKN01
UNKN01 Org New Blk 1 8 150.00 50.00
Bob Wire (210)555-1234
TEAM PAID UNKN01 30.00
TEAM PAID UNKN01 30.00
TEAM SHOW UNKN01
UNKN01 Org New Blk 1 8 150.00 110.00
Bob Wire (210)555-1234
TEAM PAID YYYY01 50.00
*** team (YYYY01) not found
TEAM SHOW YYYY01
*** team (YYYY01) not found
TEAM SHOW NEWB01
NEWB01 River Rats 0 9 120.00 75.00
Rock D Boat (210)555-4444
GAME FIX UTSA01 NEWB01 55 12 55 2
TEAM SHOW UTSA01
UTSA01 Armadillos 9 1 150.00 130.00
Jean E Us (210)555-1111
TEAM SHOW NEWB01
NEWB01 River Rats 0 9 120.00 75.00
Rock D Boat (210)555-4444