## CSci 1211 Problem set 6. Due Friday, Feb. 27th at 5pm

### Problem 1 (6 points)

Write a program that reverses the elements of an array of integers. For instance, if the array initially is [1, 2, 3, 4, 5], then in the end of the program it becomes [5, 4, 3, 2, 1]. Note that this is different from (and somewhat harder than) printing the array backwards.

You don't need the user's input in the program, just set the array in the beginning.

The example of swapping two elements of an array should be helpful.

Make sure to test your program on arrays of different sizes.

### Problem 2 (6 points)

Write a program that is given the following:
• an array of doubles,
• a double number (let's call it x),
• another double number which will be used as precision.
(again, assume that all the values are set, not entered by the user).

The program will output the number of elements of the array within the given precision of x (including x+precision and x-precision). If there are no elements within this precision, then the message "No elements found" should be displayed (instead of just "0 elements found"). If there 1 such element, the message should be "1 element found", not "1 elements found".
Extra credit (2 points): make your program print out the correct singular/plural forms of the noun for all numbers. I.e. it should print the singular form for 21, 31, etc., but the plural form for 11, 111, etc.

### Problem 3 (8 points)

Change the random rectangles with random colors program (problem 2 of Problem set 4) so that it doesn't use the switch statement. Instead, create an array of colors, randomly generate a number between 0 and length-1 (where "length" is the length of the array), and then use the random number as the index to get the color.

Also, instead of repeating your code for generating a rectangle 3 times, use a loop to create 3 (or more) random rectangles.

### Problem 4 (8 points)

Write a program to read a sequence of strings from the user and store them in a vector in alphabetical order. More specifically, the vector starts off as empty. When the first string is read, it is added to the vector. When the second string is read, it is compared to the first one and inserted before or after it, depending on which of the two strings is first alphabetically. The process continues until the user enters a specified keyword (such as "bye").

In the end of the program print out the strings as they are stored in the vector.

### Problem 4 (10 points)

For the following program draw the following pictures of the state of the program (the values of all variables and all elements of the array):
• The state after each run of the loop (how many there are?)
• The state after the second call to `reverse` (see the comment in the program)
• The state at the end of the program
As before, it's OK to test the program, but try to figure out the answer on paper first.

Here is the program:

``````
public class PS6 {

public static void main (String [] args) {
StringBuffer [] sb = new StringBuffer[5];
int i, j;

for (i = 0, j = sb.length - 1; i <= j; ++i, --j) {
sb[i] = new StringBuffer();
sb[j] = sb[i];
sb[i].append(j);
sb[j].append(i);
}

StringBuffer sb1;
sb1 = sb[i].reverse();
sb[i] = sb[j].reverse(); // draw the picture after this statement
sb[j] = sb1.reverse();

for (i = 0; i < sb.length; ++i) {
System.out.println(sb[i]);
}
}

}
``````

This page is a part of the course CSci 1211 at UMM.

The views and opinions expressed in this page are strictly those of the page author. The contents of this page have not been reviewed or approved by the University of Minnesota.