From a0908f4bff161338b70b419d2816a27a620c18fb Mon Sep 17 00:00:00 2001 From: Maxim Strizhov Date: Wed, 26 May 2021 03:00:36 +0400 Subject: [PATCH] finished --- .../rd/online/service/SimpleMathService.java | 97 ++++++++++++++++--- 1 file changed, 86 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/epam/izh/rd/online/service/SimpleMathService.java b/src/main/java/com/epam/izh/rd/online/service/SimpleMathService.java index 29215765..39a8c417 100644 --- a/src/main/java/com/epam/izh/rd/online/service/SimpleMathService.java +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleMathService.java @@ -1,5 +1,8 @@ package com.epam.izh.rd.online.service; + +import static java.lang.Math.sqrt; + public class SimpleMathService implements MathService { /** @@ -13,16 +16,28 @@ public class SimpleMathService implements MathService { */ @Override public int compare(int value1, int value2) { - return -2; - } + if (value1 == value2) { + return 0; + } + else if (value1 < value2 ) { + return -1; + } + else { + return 1; + } + } /** * Метод возвращает максимальное число из пары. * Например для списка (-1, 2) метод должен вернуть 2 */ @Override public int maxFrom(int value1, int value2) { - return -1; + if (value1 > value2) { + return value1; + } else { + return value2; + } } /** @@ -31,7 +46,13 @@ public int maxFrom(int value1, int value2) { */ @Override public int maxFrom(int[] values) { - return -1; + int maxValue = 0; + for (int i = 0; i < values.length; i++) { + if (values[i] > maxValue) { + maxValue = values[i]; + } + } + return maxValue; } /** @@ -40,7 +61,11 @@ public int maxFrom(int[] values) { */ @Override public int sum(int[] values) { - return -1; + int sumArray = 0; + for (int i=0; i < values.length; i++){ + sumArray +=values[i]; + } + return sumArray; } /** @@ -49,9 +74,24 @@ public int sum(int[] values) { */ @Override public int[] getEvenDigits(int[] values) { - return new int[]{}; + int countOfEven = 0; + for (int i =0; i < values.length; i++){ + if (values[i] % 2 == 0) { + countOfEven++; + } + } + int[] evenArray = new int[countOfEven]; + for (int i = 0, j = 0; i < values.length; i++){ + if (values[i] % 2 == 0){ + evenArray[j] = values[i]; + j++; + } + } + + return evenArray; } + /** * Метод считает факториал из заданного числа. * Например для числа 5 метод должен вернуть 120. @@ -59,7 +99,11 @@ public int[] getEvenDigits(int[] values) { */ @Override public long calcFactorial(int initialVal) { - return -1L; + if (initialVal <= 1) { + return 1; + } else { + return initialVal * calcFactorial(initialVal - 1); + } } /** @@ -74,18 +118,39 @@ public long calcFactorial(int initialVal) { */ @Override public long calcFibonacci(int number) { - return -1L; + if (number <= 0) { + return 0; + } else if (number == 1) { + return 1; + } else { + return calcFibonacci(number - 1) + calcFibonacci(number - 2); + } } + /** * Метод возвращает отсортированный по возрастанию массив. * Например для массива {-1, -3, 4, 8, 5, 22, -5} метод должен вернуть {-5, -3, -1, 4, 5, 8, 22} */ @Override public int[] sort(int[] values) { - return new int[]{}; + for (int i = 0; i < values.length; i++){ + int min = values[i]; + int minId = i; + for (int j = i + 1; j < values.length; j++) { + if (values[j] < min) { + min = values[j]; + minId = j; + } + } + int temp = values[i]; + values[i] = min; + values[minId] = temp; + } + return values; } + /** * Метод определяет, является ли заданное число простым. * Простое число - число, которое делится только на 1 и на само себя. @@ -94,7 +159,10 @@ public int[] sort(int[] values) { */ @Override public boolean isPrimary(int number) { - return false; + for (int i = 2; i <= sqrt (number); i++){ + if (number % i == 0) return false; + } + return true; } /** @@ -104,6 +172,13 @@ public boolean isPrimary(int number) { */ @Override public int[] reverseArray(int[] values) { - return new int[]{}; + int[] reverseArray = new int[values.length]; + int reveseCaunt = values.length - 1; + for (int i = 0; i < values.length; i++){ + reverseArray[reveseCaunt] = values[i]; + reveseCaunt--; + } + return reverseArray; + } }