Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package BrainingHub_5_2018_10_02;
- import java.util.Arrays;
- /**
- *
- * @author mezei
- */
- public class Menu {
- public static void main(String[] args) {
- printMenu();
- }
- public static void printMenu() {
- System.out.println("Please choose a number of the following tasks: \n1. 7.3.5 \n2. 7.3.6 \n"
- + "3. 7.3.8 \n4. 7.3.13 \n5. 7.3.15 \n6. 7.3.16 \n7. 7.3.17\n"
- + "8. 7.3.18 \n9. 7.3.19\n"
- + "10. Recursive function returns minimum value of an array \n"
- + "11. Recursive function computes sum of the elements\n"
- + "12. Recursive function searching for a target in an array \n\nYour choice: ");
- int choice = extra.Console.readInt();
- do {
- switch (choice) {
- case 1:
- printSumOfDigits();
- break;
- case 2:
- printNearestPrime();
- break;
- case 3:
- printIntegersBetween();
- break;
- case 4:
- printSumOfNumbers();
- break;
- case 5:
- printPrimesBetweenTwoNumbers();
- break;
- case 6:
- asciiGraphics();
- break;
- case 7:
- printASCIIGraphics2();
- break;
- case 8:
- printAckermannFunction();
- break;
- case 9:
- printHanoiSolution();
- break;
- case 10:
- printMinOfAnArray();
- break;
- case 11:
- printSumOfAnArray();
- break;
- }
- } while (choice == 0);
- }
- public static int sumOfDigits(int number) {
- int absValueNumber = Math.abs(number);
- int nextDigit;
- int sumOfDigits = 0;
- do {
- nextDigit = absValueNumber % 10;
- sumOfDigits += nextDigit;
- absValueNumber /= 10;
- if (absValueNumber < 10) {
- sumOfDigits += absValueNumber;
- }
- } while (absValueNumber >= 10);
- return sumOfDigits;
- }
- public static void printSumOfDigits() {
- System.out.println("7.3.5." + "\nType in a number: ");
- int number = extra.Console.readInt();
- System.out.println("The sum of digits is: " + sumOfDigits(number));
- }
- public static int nearestPrime(int number) {
- int leftPrime = number;
- int rightPrime = number;
- while (!isPrime(leftPrime) || !isPrime(rightPrime)) {
- leftPrime--;
- rightPrime++;
- }
- if (isPrime(leftPrime)) {
- return leftPrime;
- } else {
- return rightPrime;
- }
- }
- public static boolean isPrime(int number) {
- if (number < 2) {
- return false;
- }
- for (int i = 2; i <= Math.sqrt(number); i++) {
- if (number % i == 0) {
- return false;
- }
- }
- return true;
- }
- public static void printNearestPrime() {
- System.out.println("7.3.6.\n" + "Please type in a prime number, and I will show you the nearest prime for this.");
- int number = extra.Console.readInt();
- System.out.println("The nearest prime number is " + nearestPrime(number));
- }
- public static void printIntegersBetween() {
- System.out.print("7.3.8. \nPlease type in two numbers: " + "\nFirst number:");
- double number1 = extra.Console.readDouble();
- System.out.print("Second number: ");
- double number2 = extra.Console.readDouble();
- double min = (number1 < number2) ? number1 : number2;
- double max = (number1 < number2) ? number2 : number1;
- for (int i = (int) min + 1; i < max; i++) {
- System.out.print(i + ", ");
- }
- }
- public static int sumOfNumbers(int n) {
- int sum = 0;
- int number = n;
- while (number <= 0) {
- System.out.println("Wrong number, type another one!");
- number = extra.Console.readInt();
- }
- for (int i = 1; i <= n; i++) {
- sum += i;
- }
- return sum;
- }
- public static void printSumOfNumbers() {
- System.out.print("7.3.13. \nThis program prints out the sum of the first n numbers\nN: ");
- int n = extra.Console.readInt();
- System.out.println("The sum of the first " + n + " numbers is: " + sumOfNumbers(n));
- }
- public static void printPrimesBetweenTwoNumbers() {
- System.out.print("7.3.15. \nThis program prints out the prime numbers, between two numbers.\nFirst number: ");
- int first = extra.Console.readInt();
- System.out.println("Second number: ");
- int second = extra.Console.readInt();
- int min = (first < second) ? first : second;
- int max = (first < second) ? second : first;
- for (int i = min; i <= max; i++) {
- if (isPrime(i)) {
- System.out.print(i + ", ");
- }
- }
- }
- public static void graphics(int row, int column, char k) {
- for (int i = 0; i < row; i++) {
- for (int j = 0; j < column; j++) {
- System.out.print(k);
- }
- System.out.println();
- }
- }
- public static void asciiGraphics() {
- graphics(5, 3, '+');
- graphics(3, 10, '*');
- }
- public static void firstLastRow(int width) {
- for (int i = 0; i < width; i++) {
- System.out.print('*');
- }
- System.out.println("");
- }
- public static void asciiGraphics2(int row, int column, char k) {
- firstLastRow(column);
- for (int i = 0; i < row - 2; i++) {
- for (int j = 0; j < column; j++) {
- if (j == 0 || j == column - 1) {
- System.out.print('*');
- } else {
- System.out.print(k);
- }
- }
- System.out.println("");
- }
- firstLastRow(column);
- }
- public static void printASCIIGraphics2() {
- asciiGraphics2(5, 15, '-');
- }
- public static long ackermannFunction(long number1, long number2) {
- if (number1 == 0) {
- return number2 + 1;
- } else if (number2 == 0) {
- return ackermannFunction(number1 - 1, 1);
- } else {
- return ackermannFunction(number1 - 1, ackermannFunction(number1, number2 - 1));
- }
- }
- public static void printAckermannFunction() {
- System.out.print("The Ackermann function with two numbers:\nFirst number: ");
- int number1 = extra.Console.readInt();
- System.out.print("Second number: ");
- int number2 = extra.Console.readInt();
- System.out.println("The result with " + number1
- + " and " + number2 + " is: " + ackermannFunction(number1, number2));
- }
- public static long getHanoiNumberOfStepsRequired(int numberOfDisks) {
- if (numberOfDisks == 1) {
- return 1;
- } else {
- return (long) (getHanoiNumberOfStepsRequired(numberOfDisks - 1)
- + (Math.pow(2, numberOfDisks - 1)));
- }
- }
- public static void printHanoiSolution() {
- int disks;
- do {
- System.out.print("Please type in the number of disks (it should be a positive number): ");
- disks = extra.Console.readInt();
- } while (disks <= 0);
- System.out.println("The number of required steps with " + disks
- + " disks is " + getHanoiNumberOfStepsRequired(disks));
- }
- public static int[] buildAnArray() {
- System.out.println("Let's build an array with ten numbers: ");
- int[] numbers = new int[10];
- for (int i = 0; i < 10; i++) {
- System.out.print("Type in the " + (i + 1) + ". number: ");
- numbers[i] = extra.Console.readInt();
- }
- return numbers;
- }
- public static int findMinRecursively(int[] numbers, int n) {
- if (n == 1) {
- return numbers[n - 1];
- }
- return Math.min(numbers[n - 1], findMinRecursively(numbers, n - 1));
- }
- public static void printMinOfAnArray() {
- System.out.println("This program prints out the minimum of an array.");
- int[] numbers = buildAnArray();
- System.out.println("The minimum from the array's elements is: " + findMinRecursively(numbers, numbers.length));
- }
- public static int findSumRecursively(int[] numbers, int n) {
- if (n <= 0) {
- return 0;
- } else {
- return findSumRecursively(numbers, n - 1) + numbers[n - 1];
- }
- }
- public static void printSumOfAnArray() {
- System.out.println("This program prints out the sum of an array's elements.");
- int[] numbers = buildAnArray();
- System.out.println("The sum of the array's elements is: " + findSumRecursively(numbers, numbers.length));
- }
- public static int findTargetIndexRecursively(int[] numbers, int target) {
- int middleIndex = (numbers.length - 1) / 2;
- if (numbers[middleIndex] == target) {
- return middleIndex;
- } else if (numbers[middleIndex] > target) {
- return findTargetIndexRecursively(Arrays.copyOfRange(numbers, 0, middleIndex - 1), target);
- } else {
- return findTargetIndexRecursively(Arrays.copyOfRange(numbers, middleIndex + 1, numbers.length - 1), target);
- }
- }
- public static int[] sortAnArray(int[] numbers) {
- int temp;
- for (int i = 1; i < numbers.length; i++) {
- for (int j = i; j > 0; j--) {
- if (numbers[j] < numbers[j - 1]) {
- temp = numbers[j];
- numbers[j] = numbers[j - 1];
- numbers[j - 1] = temp;
- }
- }
- }
- return numbers;
- }
- public static void printTargetNumbersPlace() {
- System.out.println("This program prints out the location of a target number in an array:");
- int[] numbers = buildAnArray();
- int placeOfTheNumber = findTargetIndexRecursively(sortAnArray(numbers), numbers.length) + 1;
- if (placeOfTheNumber >= 0) {
- System.out.println("The target number is the " + placeOfTheNumber + ". number in the array.");
- } else {
- System.out.println("The target number is not in the array.");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement