CSE-205 Assignment 9. Recurison Requirements to get full credits in Documentatio
ID: 3805213 • Letter: C
Question
CSE-205 Assignment 9. Recurison
Requirements to get full credits in Documentation
The assignment number, your name, student ID, lecture number/time, and a class description need to be included at the top of each file/class.
A description of each method is also needed.
Some additional comments inside of methods (especially for the "main" method) to explain codes that are hard to follow should be written.
You can look at the Java programs in the text book to see how comments are added to programs.
You are not allowed to use the Scanner class in this assignment and any assignment after this one. You will need to use InputStreamReader and BufferedReader (they are in java.io package) to process input and also take care of IOException.
Program Description
Assignment #9 will be the construction of a program that reads in a sequence of integers from standard input until 0 is read, and store them in an array (including 0). This is done using iteration (choose one of for, while, or do while loop). You may assume that there will not be more than 100 numbers.
Then compute the minimum number, compute the sum at even indexes (0, 2, 4, ...) count numbers that are divisible by 3 and compute the maximum number among the numbers that are less than the first number (You can assume that a user will enter at least one number before 0 is entered, thus at least two numbers will be entered including 0.) using recursion. Thus you will create recursive methods findMin, computeSumAtEvenIndexes, countDivisibleBy3, and findMaxOfLessThanFirst in Assignment9 class and they will be called by a main method.
Specifically, the following recursive methods must be implemented (These methods should not contain any loop):
public static int findMin(int[] numbers, int startIndex, int endIndex)
public static int computeSumAtEvenIndexes(int[] numbers, int startIndex, int endIndex)
public static int countDivisibleBy3(int[] numbers, int startIndex, int endIndex)
public static int findMaxOfLessThanFirst(int[] numbers, int startIndex, int endIndex, int firstNumber)
If these methods are implemented using a Loop or any Static Variable, points will be deducted (from the test cases) even if your program passes test cases. DO NOT use any Static Variables.
The program should output the results of those calculations to standard output. Your program will continue to read in numbers until the number 0 is entered. At this point, the calculations will be outputted in the following format:
The minimum number is 0
The sum of numbers at even indexes is 0
The count of numbers that are divisible by 3 is 0
The maximum number among numbers that are less than the first number is 0
Note that the result values will be different depending on test cases (not always 0).
This should not be a hard one, please read all then reply. I have to prepare for four exams next week, so please help me out!!!! APPRECIATE!!!!!
Explanation / Answer
import java.io.*;
public class RecursionLearn {
private static int count = 0;
private static int sum = 0;
private static int num = 0;
public static int findMin(int numbers[] , int startIndex, int endIndex)
{
if (startIndex == endIndex)
{
return numbers[startIndex];
}
int val = findMin(numbers, startIndex + 1, endIndex);
if (numbers[startIndex] < val)
{
return numbers[startIndex];
}
else
{
return val;
}
}
public static int countDivisibleBy3(int[] numbers, int startIndex, int endIndex)
{
if (startIndex == endIndex)
{
if (numbers[startIndex] % 3 == 0)
count++;
return count;
}
if (numbers[startIndex] % 3 == 0)
count++;
return countDivisibleBy3(numbers, startIndex + 1, endIndex);
}
public static int computeSumAtEvenIndexes(int[] numbers, int startIndex, int endIndex)
{
if (startIndex == endIndex) {
if (startIndex % 2 == 0)
sum += numbers[startIndex];
return sum;
}
if (startIndex % 2 == 0)
sum += numbers[startIndex];
return computeSumAtEvenIndexes(numbers, startIndex + 1, endIndex);
}
public static int findMaxOfLessThanFirst(int[] numbers, int startIndex, int endIndex)
{
if (startIndex == endIndex)
{
if (numbers[startIndex] <=numbers[0] && numbers[startIndex]>num)
{
num = numbers[startIndex];
return num;
}
}
if (numbers[startIndex] <= numbers[0] && numbers[startIndex]>num)
num = numbers[startIndex];
return findMaxOfLessThanFirst(numbers, startIndex + 1, endIndex);
}
public static void main(String args[]) throws Exception
{
InputStreamReader input_reader=new InputStreamReader(System.in);
BufferedReader buffer_reader=new BufferedReader(input_reader);
System.out.println("Enter your name");
try{
String name=buffer_reader.readLine();
System.out.println("Logged in user is: "+name);
}
catch(IOException e)
{
System.out.println("Error Reading the input");
System.exit(0);
}
int index = 0;
int Input[] = new int[100];
System.out.println("Enter Integer value for Arrays: ");
int value;
do{
String val=buffer_reader.readLine();
value = Integer.parseInt (val);
Input[index] = value;
index++;
}while(value!=0 && index<100);
System.out.println("Min value is: "+findMin(Input, 0, index-1));
System.out.println("Sum at even indexes is: "+computeSumAtEvenIndexes(Input, 0, index-1));
System.out.println("Count of divisible by 3 is: "+countDivisibleBy3(Input, 0, index-1));
System.out.println("Getting Max of Less Than First is: "+findMaxOfLessThanFirst(Input, 0, index-1));
}
}