* Например для (-1, -1) метод должен вернуть 0; * Например для (-3, -1) метод должен вернуть -1; * Например для (3, 1) метод должен вернуть 1; */ @Override public int compare(int value1, int value2) { - return -2; + if (value1 < value2) { + return -1; + } else if (value1 > value2) { + return 1; + } else { + return 0; + } } /** @@ -22,7 +28,13 @@ public int compare(int value1, int value2) { */ @Override public int maxFrom(int value1, int value2) { - return -1; + if (value1 == value2) { // А если занения переменных равны? + return 0; + } else if (value1 < value2) { + return value2; + } else { + return value1; + } } /** @@ -31,7 +43,13 @@ public int maxFrom(int value1, int value2) { */ @Override public int maxFrom(int[] values) { - return -1; + int maximumValue = values[0]; // Проверку начнём с 1 значения массива + for (int maxIndex = 0; maxIndex < values.length; maxIndex++) { + if (maximumValue <= values[maxIndex]) { + maximumValue = values[maxIndex]; + } + } + return maximumValue; } /** @@ -40,7 +58,10 @@ public int maxFrom(int[] values) { */ @Override public int sum(int[] values) { - return -1; + int totSum = 0; + for (int i = 0; i < values.length; i++) + totSum += values[i]; + return totSum; } /** @@ -49,7 +70,24 @@ public int sum(int[] values) { */ @Override public int[] getEvenDigits(int[] values) { - return new int[]{}; + int evenDigitsCounter = 0; // Тут сколько чётных чисел + + for (int i = 0; i < values.length; i++) { + if (values[i] % 2 == 0) { + evenDigitsCounter++; + } + } + + int evenDigits[] = new int[evenDigitsCounter]; // Тут результирующий массив + int c = 0; // Тут счётчик индекса для результирующего массива + + for (int i = 0; i < values.length; i++) { + if (values[i] % 2 == 0) { + evenDigits[c] = values[i]; + c++; + } + } + return evenDigits; } /** @@ -59,22 +97,38 @@ public int[] getEvenDigits(int[] values) { */ @Override public long calcFactorial(int initialVal) { - return -1L; + long factorial = 1; + for (int c = 1; c <= initialVal; c++) { + factorial *= c; + } + return factorial; } /** * Метод возвращает число, которе находится на заданной позиции (счет начинается с нуля) в ряду фибоначчи. - * + *
* Ряд фибоначчи - ряд, следующие элементы которого состоят из суммы двух предыдущих. * Ряд начинается 0 и 1. * Пример 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 ... - * + *
* Для числа 9 метод должен вернуть 34 * Для числа 0 метод должен вернуть 0 */ @Override public long calcFibonacci(int number) { - return -1L; + if (number == 0) { // защита от нуля + return 0; + } + + long a = 0; + long fibonacci = 1; + + for (int i = 2; i <= number; i++) { // складываем и сохраняем + long n = a + fibonacci; + a = fibonacci; + fibonacci = n; + } + return fibonacci; } /** @@ -83,27 +137,47 @@ public long calcFibonacci(int number) { */ @Override public int[] sort(int[] values) { - return new int[]{}; + for (int i = values.length - 1; i > 0; i--) { // каждый проход уменьшает сравниваемую область массива + for (int j = 0; j < i; j++) { // с помощью временной переменной переставляем максимальное + if (values[j] > values[j + 1]) { // значение правее + int buffer = values[j]; + values[j] = values[j + 1]; + values[j + 1] = buffer; + } + } + } + return values; } /** * Метод определяет, является ли заданное число простым. * Простое число - число, которое делится только на 1 и на само себя. - * + *
* Например для числа 22 вернется false, а для числа 23 true. */ @Override public boolean isPrimary(int number) { - return false; + for (int i = 2; i < number - 1; i++) { + if (number % i == 0) { + return false; + } + } + return true; } /** * Метод возвращает массив, в котором элементы расположены в обратном порядке. - * + *
* Например для массива {-1, -3, 4, 8, 5, 22, -5} метод вернет {-5, 22, 5, 8, 4, -3, -1} */ @Override public int[] reverseArray(int[] values) { - return new int[]{}; + + int buffer[] = new int[values.length]; + + for (int i = 0; i < values.length; i++) { + buffer[i] = values[values.length - 1 - i]; + } + return buffer; } }