-45, -23, -87, -56, -92, -12, -36
Answer:
-92
Breaking the Program
Debugging a program is often difficult. Finding test cases that thouroughly test a program is an important part of this.
Here is our program, again:
class MaxAlgorithm
{
public static void main ( String[] args )
{
int[] array = { -20, 19, 1, 5, -1, 27, 19, 5 } ;
int max;
// initialize the current maximum
max = array[0];
// scan the array
for ( int index=0; index < array.length; index++ )
{
if ( array[ index ] > max ) // examine the current element
max = array[ index ]; // if it is the largest so far, change max
}
System.out.println("The maximum of this array is: " + max );
}
}
Compile and run the program. Once you have it running see if you can "break" it by initializing the array to different values:
- Put the largest element at the beginning.
- Put the largest element at the end.
- Put in more than one copy of the largest element.
- Put in an extremely large element.
- Make all elements the same.
- Make all elements negative.
- Make all elements zero.
Is the correct maximum found in each case? Sometimes a program works for the data a programmer was thinking about when the program was written, but not for all the kinds of data the program is used with.
QUESTION 12:
Here is an interesting situation:
change the test part of the for to
index < array.length-1
- Will the program (with the changed loop) find the correct maximum of the data that is given in the initializer list?
- When will the program not work correctly?
- Is it obvious that there is a bug?