ITD121 Programming Principles 代写
100%原创包过,高质量代写&免费提供Turnitin报告--24小时客服QQ&微信:273427
ITD121 Programming Principles 代写
QUTIC 2017 TP1
1
ITD121 Programming Principles
Second Assignment – Problem Solving Task
Annual Rainfall
Weighting 10% - Due date: Week 7, Thursday 13 th April 2017 before midnight
Trivia: The highest annual rainfall recorded in Australia
was at Bellenden Ker in North Queensland in 2000 with
over 12 metres of rain!
[http://www.ga.gov.au/scientific-topics/national-
location-information/dimensions/climatic-extremes]
Specifications
In this assignment you are to implement a program which will report on some simple aspects
of (fictional) rainfall data. The main goal of this assignment is to demonstrate the
manipulation of values stored in an array of arrays, and to use enumeration and Random
variables competently.
Each value stored will represent one day's rainfall (in mm) in a particular month. An array of
arrays (a "jaggered" array) is used (instead of a 2D array) because months don't all have the
same number of days.
Functionality
Your program is to:
randomly generate fictional rainfall data in millimetres (mm) for each day of the year,
according to the following rules:
o the probability of rain falling on any day is 25% (i.e., 1 in 4); and
o on any day when it does rain, less than 28mm will fall;
store that data in the supplied 'jaggered' array representing 12 months, with each month
to be as big as its number of days; (An array populated with the number of days in each
month has been supplied. )
output every day's rainfall total for each month;
on input of a month by the user, output a rainfall report for that month which will consist
of:
o the number of days with no rain, and the number of days with rain;
o the amount of the highest rainfall recorded (on a day) in that month;
o the day of the month that the highest rainfall fell; and
QUTIC 2017 TP1
2
o the average daily rainfall for rainy days for that month (i.e. excluding days with no
rain). This value must be displayed to two (2) decimal places.
See sample screenshots at the end of this document.
Logistics
You are to create a VS project called "Annual Rainfall" and add the near empty .cs which has
been provided as a starting point. You must use this template! Do not change the enum,
array declarations or method headers in any way.
There are two method stubs provided, which must be implemented and used as described in
the XML comments:
public static void LetItRain(int[][] rainfall) {...
public static int CountRainyDays(int[][] rainfall, Months month) {...
Both of these methods must be called by your program.
In order to test your understanding of arrays, loops and conditions, for this assignment you
are not permitted to introduce other data structures or collection types to store the data
other than those in the supplied .cs file. In particular, you are not to use ArrayList or
List<T>. If you are in doubt, please ask one of the teaching staff.
You will need to use two Random variables: one for deciding the likelihood of rain falling on
a particular day and the other for the amount of rain that falls. There are three overloaded
Random methods (Next), each returning a random number in a specific range depending
upon the parameter(s) provided, see examples below:
int number;
number = randomGen.Next(); // 0 <= number < int.MaxValue
number = randomGen.Next(100); // 0 <= number < 100
number = randomGen.Next(1, 100); // 1 <= number < 100
Initially declare a Random variable and supply a 'seed' (an integer parameter) e.g.:
Random amountOfRain = new Random(10);
This ensures that the same random sequence of numbers is produced every time the program
is run. This enables you to check that the logic of your program is correct using the same data
every time. Once you are confident that your program works correctly, you can delete the
seed e.g.:
Random amountOfRain = new Random();
Now every run of your program will produce a different sequence of random numbers
(actually pseudo-random). Note that any integer value can be used as the 'seed'.
Documentation
The class must be preceded by an XML comment containing your full name, student id and a
short overall description of the program. It should be placed between the namespace and
class declarations.
QUTIC 2017 TP1
3
Each method must be preceded by an XML comment describing its purpose.
Note that it is not sufficient to simply generate the XML comments and tags. You must add a
description between each open/end tag pair (e.g. for the summary, param, returns).
Any non-trivial code should also be commented – but only where it adds value to the
readability of your solution.
Assignment Goals
The assignment problem is straightforward. The solution of the problem will be a C# project
consisting of a single class which will use programming constructs covered in Lectures 1 to 4
inclusive. You are free to use any valid C# programming construct, even if it has not been
covered in lectures - except for the goto statement. You must not add any global variables
(i.e. those declared outside methods, at the class level).
Ensure that your code conforms to the Coding Style Guide, available on Blackboard under
"Assessment".
Though the code could be written as straight line code, the sheer number of lines would make
the solution difficult to read, hard to understand, hard to modify and maintain, and much
more likely to contain logical errors. A straight line code solution will not receive full marks
even if it fulfils the required functionality.
As demonstrated in lectures and prac exercises, your Main method should reflect a high level
algorithm for your entire program. The only statements that will be in Main will be calls to
methods which you have written or assignment statements for receiving the returned value
from a method. There are to be NO input or output statements ( (i.e. writing to the screen or
reading from the keyboard) in the body of Main.
You are required to use methods to provide a structure to your solution. Your program should
consist of only one class containing at least five (5) methods (excluding Main and trivial
methods such as ExitProgram and Welcome) as demonstrated in Lecture 2. The
additional methods should be a mixture of value-returning and void methods. There is no
upper limit on the number of methods used.
ITD121 Programming Principles 代写
See the CRA for detailed marking criteria.
Sub-goals of the assignment are to experience:
Top-down design & development
Incremental Development & Incremental Implementation
Translating simple algorithms into C# code
More practice writing user defined methods and parameter passing
The mechanics of editing, compiling (building) and running your program
Random number generation
Writing a program which uses input from the keyboard
Working with array of arrays: storing and accessing data
Building robust solutions
Testing your program
QUTIC 2017 TP1
4
Becoming confident and comfortable with programming in the small
Academic Integrity
This assignment is for individual assessment only. That means the work you submit must be
your own work and not the work of anyone else. You are not permitted to collaborate with
your peers on this assignment, other than to discuss high-level strategies. You are not
permitted to show your code to (or allow your code to be seen by) another student, or to look
at another student's code. You are not permitted to ask or commission someone else to write
the assignment for you (including on-line sources), or help you write the assignment. If you
are struggling to complete the assignment yourself, please see one of the teaching staff in
consultation as soon as possible, or talk to them in class.
If you are in any doubt as to what is permitted and what is considered a breach of academic
integrity, please ask. QUT treats breaches of academic integrity very seriously, and being
guilty of same is likely to have consequences that adversely affect the remainder of your
academic career.
Electronic Submission
You will submit your assignment via the link in the Assessment folder on Blackboard (BB)
before 11.59 pm on the due date. You can submit as many times as you like up to the
deadline. Your last submission prior to the deadline will be marked.
It is recommended that you upload your file to Blackboard from a workstation at QUTIC.
Inability to access Blackboard from home is not a sufficient reason for submitting the
assignment late or requesting an extension.
Plan to be finished well before the afternoon of the due date! You should avoid writing all of
the code in one sitting and then attempt a build (compilation). Remember Incremental
Development and Incremental Implementation.
Final Comments
You must use the supplied .cs file as the starting point of your project. You must not change
any of the supplied code. The code compiles successfully and runs albeit with no functionality.
You should ensure that your project always compiles and does something.
This assignment is not about screen design so do not waste time attempting to produce fancy
screen output. However, you are free to alter and enrich the output statements, though it
will not gain any additional marks.
Hope you enjoy the challenge of working with arrays!
QUTIC 2017 TP1
5
APPENDIX – sample output
Figure 1: The data randomly generated for each day of each month of the year is displayed,
under the provided heading (so it's easy to read!). Some days have 0 rain, and other days
have some rain, displayed in millimetres. Each month has the correct number of days.
Figure 2: The user has entered "12", and the statistical information is then displayed for the
12 th month, i.e. December.
ITD121 Programming Principles 代写