JavaRush/Java блог/Архив info.javarush/Кухня(); Задание N26.
terranum
28 уровень

Кухня(); Задание N26.

Статья из группы Архив info.javarush
участников
Кухня(); Задание N26. - 1 Правила [Одномерные массивы] 26. В последовательности действительных чисел а1, а2, ..., аn есть только положительные и отрицательные элементы. Вычислить произведение отрицательных элементов P1 и произведение положительных элементов Р2. Сравнить модуль Р2 с модулем Р1 и указать, какое из произведений по модулю больше.
Комментарии (8)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
RabenokDmitry
Уровень 21
12 февраля 2015, 22:51
Мой код это, пожалуй, пособие о том, как это сделать очень сложно))
public static int maxAbsMultiplication(int[] array) {
        return getAbsMultiplication(array, false) >= getAbsMultiplication(array, true) ?
                getAbsMultiplication(array, false) : getAbsMultiplication(array, true);
    }

    public static int getAbsMultiplication(int[] array, boolean sign) {
        int absMult = 1;
        boolean hasValue = false;
        if (sign == true) {
            for (int value : array) {
                if (value > 0) {
                    absMult *= value;
                    hasValue = true;
                }
            }
        } else {
            for (int value : array) {
                if (value < 0) {
                    absMult *= value;
                    hasValue = true;
                }
            }
        }
        if (hasValue == false) {
            return 0;
        } else {
            return Math.abs(absMult);
        }

    }
Sultan
Уровень 16
28 августа 2014, 21:27
Tan4ek
Уровень 20
28 августа 2014, 21:50
Мне кажется, что мы не знаем сколько отрицательных, четное или не четное;
public static double func(double... array){
        double p1 = 1;
        double p2 = 1;

        for (double i: array){
            if(i < 0)
                p1 *= (-1) * i;
            else p2 *= i;
        }
        
        return Double.max(p1,p2);
    }
Sultan
Уровень 16
28 августа 2014, 21:57
че, а какая разница, сколько отрицательных? Просто вместо return Double.max(p1,p2);
пиши return Double.max(Math.abs(p1),p2);
Sultan
Уровень 16
28 августа 2014, 21:57
ах да, я забыл про модуль.
Sultan
Уровень 16
28 августа 2014, 21:59
лучше один раз модуль вызвать, чем каждый раз умножать на -1
p1 *= (-1) * i;
Tan4ek
Уровень 20
28 августа 2014, 22:02
Согласен
Sultan
Уровень 16
28 августа 2014, 22:09