Question

Task 1

For this task you will create a class containing a number of static methods for processing an array of marks, which are scores in a test. Each mark is an integer in the range 0 to 100 inclusive. On the Interact site for this subject, you will be provided with a class Marks, which has a method getMarks that returns an array of marks for you to use in testing.

The class ProcessMarks that you create will have the methods specified below. Most will accept an array of marks as an argument; one will accept an array of characters. The return type should be appropriate for the returned value.
The max, min and range methods will return the maximum mark, the minimum mark and the difference between the maximum and minimum marks respectively.
The mean methods will return the mean of the set of marks.
The median method will return the median value of the set of marks. The median value is the middle one when the values are placed in order. To obtain an ordered version of the marks you may use an appropriate sort method of the Java API’s Arrays class. Be careful not to destroy the original array of marks. If there is an even number of marks, the middle value is taken as the average of the two values that are nearest to the middle.
The mode method will return the mode of the set of marks, which is the most commonly occurring mark. To find the mode, use an ordered version of the set of marks, as used for finding the median. If there is more than one value that is most common, any one of the most common values will do for the mode.
The grades method will return an array of characters, which are the grades corresponding to the integer marks in the array of marks. The grades are to be assigned using the following lower boundaries for the corresponding marks: for grade A, the lower boundary is 90; for grade B, it is 75; for grade C, it is 60; for grade D, it is 50; for grade E, it is 45; and F is the grade for all other marks. A best solution for this method would not have the values for the lower boundaries hardcoded but would use an array for these values, which would allow the grade boundaries to be altered.
The gradeDistn method will accept an array of characters, which are the grades assigned for the array of marks, such as returned by the grades method. The gradeDistn method will return an array of integer values containing the distribution of grades, which is the number of occurrences of each grade in the assigned grades. The characters used for grades are fixed. The returned array should provide the distribution in order from grade A to grade F.
The following points should be taken into account in the design of your program:
None of your code should change the contents of the original array of marks.
You should not make any assumption that client code, that would use your methods, should call them in any particular order. That is, you should not assume that a client that calls the range method will have previously called the max and min methods.
Test your ProcessMarks class, either by providing test code in a main method within that class or in a separate class. The test code will use an array of marks obtained from the getMarks method of the Marks class provided on the Interact site. Test each one of the methods described above, displaying the results appropriately. The grades should be displayed 30 per line with a space separator between grades. The grade distribution should be displayed in the form:

A: 10
B: 30
C: 105
D: 75
E: 35
F: 10

import java.util.Random;

public class Marks {
private static final int NMARKS = 125;
private static final double mean = 65.0;
private static final double std = 15.0;

/**
* Returns an array of NMARKS integer marks approximately normally distributed,
* with specified mean (mean) and standard deviation (std),
* and with values outside 0..100 removed.
* @return the array of marks.
*/
public static int[] getMarks() {
Random rand = new Random(1001L);
int mark;
int[] theMarks = new int[NMARKS];
int n = 0;
while (n < NMARKS) {
mark = (int) Math.round(std*rand.nextGaussian() + mean);
if (mark >= 0 && mark <= 100)
theMarks[n++] = mark;
}
return theMarks;
}

/**
* Test code
* @param args not used
*/
public static void main(String[] args) {
int[] testMarks = getMarks();
for (int n = 0; n < testMarks.length; n++) {
System.out.print(testMarks[n] + " ");
if (n % 10 == 9)
System.out.println();
}
}

}

Task 2
For this task you have to define a class Circle2D to represent a circle with a point in two dimensions labeled x and y and a radius. To test Circle2D class you also need to define a test class. The Circle2D class has the following state and functionality:
Two double data fields named x and y that specify the centre of the circle with getter methods.
A data field radius with a getter method
A no-arg constructor that creates a default circle with (0, 0) for (x, y) and 3 for radius.
A constructor that constructs a circle with the specified x, y, and radius.
A method getArea() that returns the area of the circle
A method getPerimeter() that returns the perimeter of the circle
A method contains(double x, double y) that returns true if the specified point (x, y) is inside this circle
A method overlaps(Circle2D circle) that returns true if the specified circle overlaps with this circle.
Draw the UML diagram for the class and then implement the class. Write a test class program that creates a Circle2D object c1(new Circle2D(2, 2, 2.5)), display its areas and perimeter, and display the result of c1.contain(3,3), c1.containes(new Circle2D(4, 5, 8.5)), and c1.overlaps(new Circle2D(3, 5, 0.3)).

Solution Preview

This material may consist of step-by-step explanations on how to solve a problem or examples of proper writing, including the use of citations, references, bibliographies, and formatting. This material is made available for the sole purpose of studying and learning - misuse is strictly forbidden.

Task 1

import java.util.Random;

public class Marks {
private static final int NMARKS = 125;
private static final double mean = 65.0;
private static final double std = 15.0;

/**
* Returns an array of NMARKS integer marks approximately normally distributed,
* with specified mean (mean) and standard deviation (std),
* and with values outside 0..100 removed.
* @return the array of marks.
*/
public static int[] getMarks() {
Random rand = new Random(1001L);
int mark;
int[] theMarks = new int[NMARKS];
int n = 0;
while (n < NMARKS) {
mark = (int) Math.round(std*rand.nextGaussian() + mean);...

This is only a preview of the solution. Please use the purchase button to see the entire solution

Related Homework Solutions

Tic-Tac-Toe Program in Java
Homework Solution
$40.00
Programming
Java
Coding
Tic-Tac-Toe
Game Development
Array
Private Data Members
Board
Players
Public Data Members
UML Diagram
Statements
Variables
Wins
Loses
Ties
The Problem Solver in Java
Homework Solution
$30.00
Java
Programming
Codes
Algorithms
Lists
Tasks
Computer Science
Conversions
Celsius
Fahrenheit
Odd Numbers
Even Numbers
User Choices
Input
Output
Statements
Strings
Mathematical Equations
Variables
Java Programming Problems
Homework Solution
$38.00
Java
Programming
Computer Science
Palindromes
Methods
Functions
Loops
Input
Output
Insertion Sort
Algorithms
Arrays
Integers
Strings
Java Program With Lists & Integers
Homework Solution
$40.00
Java
Programming
Codes
Algorithms
Linked Lists
File Management
Data Structures
Libraries
Scanner
Zero Sum Subset
Input
Output
Statements
Variables
Positive Integers
Negative Integers
Binary Mask
Pseudo-Codes
Java Programming Problems
Homework Solution
$15.00
Java
Computer Science
Programming
Algorithms
Coding
Prime Factors
Run Length Encoding
Strings
Decimals
Flag Characters
Conversions
From BS Tree to AVL Tree in Java
Homework Solution
$20.00
Java
Programming
Codes
Algorithms
Binary Search Tree
AVL Tree
Search Operation
Logarithmic Time
Rebalancing
Loops
Statements
Variables
Successors
Ancestors
Parents
Nodes
Edges
Boolean Values
Data Structures
Get help from a qualified tutor
Live Chats