[SOLVED] KIT107 Assignment 2

30.00 $

Category:
Click Category Button to View Your Next Assignment | Homework

You will receive the following solution file(s) instantly after successful payment:

zip file icon KIT107-ProgrammingAssignment-2-main-fg95sx.zip (3398.1 KB)
Assignment Instructions Updated Recently? Submit Below and we will provide new Solution!
Submit New Instructions
🔒 Securely Powered by:
Secure Checkout
5/5 - (2 votes)

The AFL runs Australian Rules football. And the best team in the League is the Carlton football team.

A game in Australian rules comprises four quarters and in each quarter there can be a numerous kicks (“shots”) for goal. Goals are worth six points, near misses (“behinds”) are worth one, and shots in which the ball doesn’t cross the goal line are worth 0. A score of 3 goals and 2 behinds is written as follows: 3 2 20.

You’ve been asked to track the score throughout a game, present the score at the end of a nominated quarter, draw a kind of histogram illustrating who has the lead and by how much, and finally, report the winning margin. See the section entitled Program Specification for details.

The data are organised by quarter (and are presented in the order the shot on goal is kicked). Each shot is identified by its team (a 0 or a 1) and the outcome: goal (6), behind (1), nothing (0). You don’t know how many shots on goal will occur during any given game. You should not score shots on goal which don’t register a goal or a behind, and all scoring shots should be stored in the order in which they are presented within their quarter.

A text file exists with the required data in it. I will give you code to read this into your program — and it may be different data to the examples shown here.

1/9

Task

Based only on the information above (and not what is in the text file or after this point in this document):

  1. a  In two–three sentences, explain the functionality required for your model of a collection of shots on goal for each of the quarters. Which kind of abstract data type (binary tree, general tree, array, stack, priority queue, double-ended queue, set, ordered/unordered list, etc.) is most appropriate for that functionality?
  2. b  Which underlying data structure (array or linked-list) will you use as a basis to model the collection of shots on goal for each of the quarters? In two–three sentences, justify your answer.
  3. c  In two–three sentences, explain the functionality required for your model of the game (i.e. a collection of quarters). Which kind of abstract data type (binary tree, general tree, array, stack, priority queue, double-ended queue, set, ordered/unordered list, etc.) is most appropriate for that functionality?
  4. d  Which underlying data structure (array or linked-list) will you use as a basis to model the game (i.e. a collection of quarters)? In two–three sentences, justify your answer.

To implement this you would need to define a type called quarter_format to implement your answer to (b) above to represent the collection of scores for a quarter, and also another type (called game_format) to implement your answer to (d) above to create a collection of quarter_formats.

From this, the whole game could be defined as a global variable as follows:

     game the_game;

Each of these two types (quarter_format and game_format) can be defined as either an array or as a linked-list. Given the linked-list node from lectures:

     struct node_int

{

you would either define quarter_format as a linked-list, i.e. typedef node quarter_format;

struct node_int;
typedef struct node_int *node;

};

void *data;

node next;

2/9

or you would define it as a dynamic array1, i.e. typedef score *quarter_format;

Similarly, you would either define game_format as a linked-list, i.e. typedef node game_format;

or as a dynamic array, i.e.

     typedef quarters *game_format;

Within the given program files, as with node above, each type (score, quarters, and game) is defined as we’ve done in lectures. For example, for a score, the header file, score.h, has:

     struct score_int;
     typedef struct score_int *score;

together with function declarations for the available functions. The source file, score.c, has:

};

together with function definitions for the available functions on a score.

A Visual Studio project is available on MyLO for you to download and use as a starting point. (If you are not using Visual Studio, then just grab the source files and data file from within the folder.) This starting point comprises the following files:

  • node.h and node.c — the Node ADT from lectures as the building blocks for linked lists (should you need them). These files are complete;
  • score.handscore.c—theScoreADTasspecifiedabove. Thesefiles are complete;
  • quarters.h and quarters.c — the Quarters ADT (a collection of scores) as described above. These files are incomplete;
  • game.handgame.c—theGameADT(acollectionofquarters)as described above. These files are incomplete;
  • assig_two122.c — the file which contains the main() function, a function to read the scores in from the text file, some constants, and the the_game global variable. This file is complete.

    1 It would probably be more intuitive to define it as a static array, e.g.

    typedef score quarter_format[200];
    but unfortunately this presents problems when trying to return a quarter_format value from a function — C won’t allow an array to be returned — and so we’ll keep it ‘simple’ and instead define quarter_format as a pointer, and use malloc() to create the array and its elements.

struct score_int {

int quarter;

int team;

int worth;

3/9

e You must complete quarters.h, game.h, quarters.c, and game.c.

Start by adding the quarter_format and game_format type definitions to quarters.h and game.h (respectively) as indicated above according to your choices in (b) and (d).

Then, complete the missing functionality from quarters.c, and game.c. The project also contains the data file. This is just a text file which can be opened and

read with most applications. It contains details of scores.

Program specification

First you must obtain the scores from a text file. The data must be stored in appropriate collections. At the top level there will be a collection of quarters (which comprise the game) and for each quarter there should be a collection of scores (stored in the order they are provided, i.e. first-in-first-out).

As a score is read from the file, the details should be checked. If it is not a goal or a behind, then it should not be included in the collection. Otherwise it should be appended to the data for the quarter in which it occurs.

As the data are read in and stored in the collections, the following should occur:

i. The nature of the score (none, behind, or goal), the team with the shot on goal, and the quarter in which it occurs should be displayed.

Each quarter should have a subtitle when it commences.

The game should have a title indicating the names of the two teams.

Once the data have been read in and stored in the collections, the following should occur:

  1. The user should enter a quarter number (1–4). Values below 1 should default to 1 and values above 4 should default to 4.

    The scores for each team should then be shown, one line for each, for every quarter from 1 up to the quarter number entered (inclusive). The quarter should be shown as a sub-title, and the activity should have its own title.

  2. A kind of horizontal histogram should be shown which demonstrates the magnitude of the lead for the leading team following every score. The histogram should grow from the centre of the screen, to the left when the first team is leading and to the right when the second team is leading.

    Each team’s name should be displayed above the graph and the activity should have its own title.

4/9

You may assume that the screen has a width of 80 characters and that the lead will never exceed 40 points.

iv. The final (winning) margin should be displayed.

For all of these, the formatting of your output should conform to the example shown below (with 4 entered for the score breakdown for ii).

Carlton v Losers
================
Starting Quarter 1
Score received: Quarter 1, a GOAL for Carlton
Score received: Quarter 1, a GOAL for Losers
Score received: Quarter 1, a Behind for Carlton
Score received: Quarter 1, no score for Carlton
Score received: Quarter 1, a GOAL for Carlton
Score received: Quarter 1, no score for Losers
Score received: Quarter 1, no score for Carlton
Score received: Quarter 1, a GOAL for Losers
Score received: Quarter 1, no score for Carlton
Score received: Quarter 1, a Behind for Losers
Score received: Quarter 1, no score for Losers
Score received: Quarter 1, a GOAL for Losers
Score received: Quarter 1, no score for Losers
Score received: Quarter 1, no score for Carlton
Score received: Quarter 1, no score for Carlton
Score received: Quarter 1, no score for Losers
Score received: Quarter 1, a Behind for Losers
Starting Quarter 2
Score received: Quarter 2, no score for Carlton
Score received: Quarter 2, a GOAL for Carlton
Score received: Quarter 2, a Behind for Carlton
Score received: Quarter 2, a GOAL for Carlton
Score received: Quarter 2, no score for Losers
Score received: Quarter 2, no score for Carlton
Score received: Quarter 2, no score for Carlton
Score received: Quarter 2, no score for Losers
Score received: Quarter 2, a Behind for Carlton
Score received: Quarter 2, no score for Losers
Score received: Quarter 2, no score for Losers
Starting Quarter 3
Score received: Quarter 3, no score for Carlton
Score received: Quarter 3, no score for Losers
Score received: Quarter 3, a Behind for Carlton
Score received: Quarter 3, a Behind for Losers
Score received: Quarter 3, a Behind for Losers
Score received: Quarter 3, no score for Carlton
Score received: Quarter 3, a GOAL for Carlton
Score received: Quarter 3, a Behind for Losers
Score received: Quarter 3, a GOAL for Carlton
Score received: Quarter 3, a Behind for Losers
Score received: Quarter 3, a GOAL for Carlton
Score received: Quarter 3, a Behind for Losers
Score received: Quarter 3, no score for Losers
Score received: Quarter 3, no score for Carlton
Score received: Quarter 3, a Behind for Carlton
Score received: Quarter 3, a GOAL for Losers
Score received: Quarter 3, a Behind for Carlton
Score received: Quarter 3, a GOAL for Losers

5/9

Starting Quarter 4
Score received: Quarter 4, no score for Losers
Score received: Quarter 4, a Behind for Losers
Score received: Quarter 4, no score for Carlton
Score received: Quarter 4, no score for Losers
Score received: Quarter 4, a GOAL for Carlton
Score received: Quarter 4, no score for Losers
Score received: Quarter 4, a Behind for Carlton
Score received: Quarter 4, a GOAL for Carlton
Score received: Quarter 4, a Behind for Losers
Score received: Quarter 4, no score for Losers
Score received: Quarter 4, no score for Losers
Score received: Quarter 4, a Behind for Carlton
Score received: Quarter 4, no score for Carlton
Score received: Quarter 4, a Behind for Carlton
Scores up to Selected Quarter
-----------------------------

Enter quarter number #4

Quarter 1
Carlton   2  1 13
Losers    3  2 20
Quarter 2
Carlton   4  3 27
Losers    3  2 20
Quarter 3
Carlton   7  6 48
Losers    5  7 37
Quarter 4
Carlton   9  9 63
Losers    5  9 39
Vertical Worm
-------------
Carlton    ******

Losers

* *******

                      ******
                      *******
                      *
                ******
               *******
              ********
               *******
                ******
          ************
           ***********
     *****************
      ****************
**********************
 *********************
**********************
      ****************

6/9

                       *****************
                             ***********
                              **********
                        ****************
                       *****************
                 ***********************
                  **********************
                 ***********************
                ************************
Final margin
------------
The final margin is 24 points.

Program Style

The program you write for this assignment must be contained in nine files as follows:

  • node.h and node.c — for nodes of linked lists (if relevant);
  • score.h and score.c — for managing a score;
    • quarters.handquarters.c—formanagingquarters;

    • game.handgame.c—formanagingthegame;
    • assig_two122.c—themainalgorithmwhichreadsthedata,and

    controls the management of the collections, the calculation of the results, and the display of the information.

    No function that you write should be longer than about half a screen-full of code.

    Your program should follow the following coding conventions:

  • const variable identifiers should be used as much as possible, should be written all in upper case and should be declared before all other variables;
  • #defined symbols should only be used for constant values if const is inappropriate, for example the size of an array.
  • global variables should be used sparingly with parameter lists used to pass non-global information in and out of functions.
  • local variables should only be defined at the beginning of functions and their identifiers should start with a lower-case letter;
  • every if and if-else statement should have a block of code (i.e. collections of lines surrounded by { and }) for both the if part and the else part (if used)
  • every do, for, and while loop should have a block of code (i.e. {}s)
  • the keyword continue should not be used;
  • the keyword break should only be used as part of a switch statement;
  • opening and closing braces of a block should be aligned;
  • all code within a block should be aligned and indented 1 tab stop (or 4 spaces)

    from the braces marking this block;

  • commenting:

o There should be a block of header comment which includes at least  file name

 student name
 student identity number
 a statement of the purpose of the program  date

7/9

o Each variable declaration should be commented
o There should be a comment identifying groups of statements that do

various parts of the task
o Comments should describe the strategy of the code and should not

simply translate the C into English

 

  • KIT107-ProgrammingAssignment-2-main-fg95sx.zip