Assignment 10: Structs, File I/O and Memory Allocation
Learning Outcomes:
When you have completed this assignment, you should understand:
How to design functions that read/write formatted input/output from/to files
How to hand it in:
Submit your file named assignment10.c through the Assignment 10 link on the CSC111 conneX site.
Grading:
Late submissions will be given a zero grade.
You must use the file c provided to write your solution. Changing the filename or any of the code given in the file will result in a zero grade.
Your function names must match exactly as specified in this document or you will be given a zero grade.
We will do spot-check grading in this course. That is, all assignments are graded BUT only a subset of your code might be graded. You will not know which portions of the code will be graded, so all of your code must be complete and adhere to specifications to receive
Your code must run without errors on the ECS Lab machines or a zero grade will be
It is the responsibility of the student to submit any and all correct files. Only submitted files will be marked. Submitting an incorrect file is not grounds for a
If the assignment requires the submission of multiple files, then all files must be
Marks will be given for…
your code producing the correct output
your code following good coding conventions
Proper indentation
Documentation above each function
Names of variables should have meaning relevant to what they are storing
Appropriate use of named constants
Use of whitespace to improve readability
Proper use of variables to store intermediate computation results
Appropriate use of helper functions
Get started:
Download c from conneX and save it to your computer
Create a CLion project with c as the source
Below are 4 function specifications. For each specification
The c file contains the function prototypes.
Implement and test the incomplete functions
We suggest you write a helper methods to print out the contents of an array of Team pointers and to print an array of Player pointers to help with testing of the read_file
You may and are encouraged to add additional helper functions to your program, but you must not change the signature of those
You may define your own constants but do not change those provided for
We have provided you with two sample input and corresponding output files to help with your understanding and testing of the problem. Download the input files to the directory to allow your program to read them and compare your results to the given output
These files can be opened using a spreadsheet program (ie. Excel) to make them easier to read.
Background Information:
This assignment will do some simple statistical analysis of some NBA (National Basketball Association) data from 2016/17 season.
This data has been downloaded (and edited slightly) from: www.nbastuffer.com Each file has exactly 13 columns where each column has the following information:
RANK – an integer representing the rank of the player
FULL NAME –player name with no spaces between any letters, with at most MAX_WORD_LEN characters ie. LeBron James is written as one word: LeBronJames
TEAM – a 3 letter word representing a team’s name. There are at most 30 unique team
POS – position the player plays with no spaces between any letters, with at most MAX_WORD_LEN number of characters
AGE – an integer representing the age of the player
GP Games Played – an integer representing the number of games they have played Reminder: an integer can be stored in a double variable and not lose precision
MPG Minutes Per Game – an integer representing the player’s average number of minutes played per
PPG Points per game – a floating point number representing the player’s average number of points per game.
RPG Rebounds per game – a floating point number representing the player’s average number of rebounds per game.
APG Assists per game – a floating point number representing the player’s average number of assists per game.
SPG Steals per game – a floating point number representing the player’s average number of steals per
BPG Blocks per game – a floating point number representing the player’s average number of blocks per game.
TOPG Turnovers per game – a floating point number representing the player’s average number of turnovers per game.
For this assignment you will not be interested in all of the data but you will write a function to help you extract the data that you want to analyze.
We have also given you two input files for testing purposes (2017Small.txt and 2017.txt)
We have provided you with expected output files for the two input files provided (2017SmallOut.csv and 2017Out.csv) Your file output should match these.
You can assume that if the filename refers to a file that exists, that file will be in expected format. We will test your solutions with other input files but they will always be in the expected format.
Function and Data Specifications:
In the assignment file you are provided with two struct definitions for Player and Team. You must not change these structs or any of the defined constants provided.
typedef struct {
char name[CHAR_ARRAY_WIDTH]; char pos[CHAR_ARRAY_WIDTH]; double stats[NUM_STATS];
} Player;
typedef struct {
int num_players;
char name[CHAR_ARRAY_WIDTH]; Player* players[MAX_PLAYERS];
} Team;
find_team
This function takes the following three arguments:
name - the name of a team as a null terminated string
teams - an array of Team pointers
num_teams – the number of valid Team pointers in teams
The function should search through the teams array for a Team instance with a name matching the given
name. If name is found it should return the index it was found at, otherwise -1 if it is not found.
DescriptionIn this final assignment, the students will demonstrate their ability to apply two ma
Path finding involves finding a path from A to B. Typically we want the path to have certain properties,such as being the shortest or to avoid going t
Develop a program to emulate a purchase transaction at a retail store. Thisprogram will have two classes, a LineItem class and a Transaction class. Th
1 Project 1 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of
1 Project 2 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of