Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 17.06.2019
Сообщений: 12

Определите количество перемен знаков элементов массива

19.06.2019, 20:26. Показов 3752. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Определите количество перемен знаков элементов массива.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.06.2019, 20:26
Ответы с готовыми решениями:

Определить количество перемен знаков элементов массива
Определить количество перемен знаков элементов массива. Сформировать массив количества в подряд идущих однознаковых элементов.

Количество перемен знаков элементов массива. Как быть с нулями?
Массив: Возникла такая дилемма. Считать ли переменой знака переход от обычного числа к 0 и обратно. Ведь, если задуматься, знак имеет...

Найти количество перемен знаков
Даны целые числа n, a1, a2,…, an. Найти количество перемен знаков.:-[

23
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
19.06.2019, 21:47
Java
1
2
3
4
5
6
7
8
9
10
public static void main(String[] args) {
        int[] arr = {1, -1, 1, -1, 1, -1, 1, -1, 1, 1, 1, -1, -1, -1};
        int count = 0;
        for (int i = 0; i < arr.length - 1; i++) {
            if (Integer.signum(arr[i]) != Integer.signum(arr[i + 1])) {
                count++;
            }
        }
        System.out.println(count);
    }
0
 Аватар для Aviz__
2739 / 2048 / 507
Регистрация: 17.02.2014
Сообщений: 9,467
20.06.2019, 18:47
iSmokeJC,
Java
1
2
3
4
5
6
7
8
9
10
public static void main(String[] args) {
        int[] arr = {1, 0, 1, 1, -1, 0};
        int count = 0;
        for (int i = 0; i < arr.length - 1; i++) {
            if ((Integer.signum(arr[i]) + Integer.signum(arr[i + 1])) == 0) {
                count++;
            }
        }
        System.out.println(count);
    }
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.06.2019, 19:12

Не по теме:

Aviz__, а разница?

0
 Аватар для Aviz__
2739 / 2048 / 507
Регистрация: 17.02.2014
Сообщений: 9,467
20.06.2019, 20:00
Цитата Сообщение от iSmokeJC Посмотреть сообщение
а разница?
на этой последовательности {1, 0, 1, 1, -1, 0}; у меня 1, у тебя ?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.06.2019, 20:25
Aviz__, ну так правильно - ноль это и не минус и не плюс
1
 Аватар для Aviz__
2739 / 2048 / 507
Регистрация: 17.02.2014
Сообщений: 9,467
20.06.2019, 20:29
iSmokeJC, ну, а твой код его считает, как переход((
0
 Аватар для alicesmagic
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
20.06.2019, 20:51
Задачка типа: "Зебра черная в белую полосу, или белая в черную полосу?"
Некорректное условие.
Предлагаю компромиссный вариант. Переменой знаков считать смену отрицательных значений на неотрицательные, и наоборот:
Java
1
2
if(arr[i] >= 0 & arr[i + 1] < 0 | arr[i] < 0 & arr[i + 1] >= 0)
   count++;
0
 Аватар для Aviz__
2739 / 2048 / 507
Регистрация: 17.02.2014
Сообщений: 9,467
20.06.2019, 20:56
Цитата Сообщение от alicesmagic3d Посмотреть сообщение
Некорректное условие.
в чем?
0
 Аватар для alicesmagic
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
20.06.2019, 21:04
Цитата Сообщение от Aviz__ Посмотреть сообщение
в чем?
Зебра черная в белую полосу, или белая в черную полосу?

Добавлено через 4 минуты
Вы поспорьте между собой, чей код правильный. Может до вас, Авиз, и дойдет в чем заключается некорректность условия.
0
 Аватар для Aviz__
2739 / 2048 / 507
Регистрация: 17.02.2014
Сообщений: 9,467
21.06.2019, 09:40
Цитата Сообщение от alicesmagic3d Посмотреть сообщение
черная в белую полосу, или белая в черную полосу

Не по теме:

все же не перекрасилась, а зря((


тут определяется сколько границ между белыми и черными полосами, используя твою метафору (не верную). между белой и черной полосой, как ты уже догадалась, есть прозрачная))
нужно же, считать количество переходов между белым и черным цветом, а переходы на прозрачный и с прозрачного не учитывать. причем, ширина прозрачной полосы может быть любой!

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 public static void main(String[] args) {
        int[] arr = {0, 1, 0, -1, 0, 0, -1, -1, 0, 0, 1};
        int lastSignum = 0;
        for (int item : arr) {
            if (item != 0) {
                lastSignum = Integer.signum(item);
                break;
            }
        }
        int count = 0;
        if (lastSignum != 0) {
            for (int value : arr) {
                if (value != 0 && (lastSignum != Integer.signum(value))) {
                    lastSignum = Integer.signum(value);
                    count++;
                }
            }
        }
        System.out.println(count);
    }
0
 Аватар для alicesmagic
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
21.06.2019, 10:03
Цитата Сообщение от Aviz__ Посмотреть сообщение
нужно же, считать количество переходов между белым и черным цветом
На что iSmokeJC может вам вполне резонно возразить. "С чего бы это? При переходе с черного цвета на бесцветный перемена цвета произошла? Конечно произошла! А значит эта перемена должна подсчитываться"

Не по теме:

Метафора, Aviz, на то и метафора, что-бы не воспринимать ее буквально. Она приведена мной только в качестве примера некорректности условия.
Хотя, как я сейчас выяснила, зоологи уже поставили точку на этом вопросе. Зебра черная в белую полосу. Но суть дела это не меняет. Возьмите два листа, черный и белый, нарежьте их полосками и склейте. Потом задайте себе снова тот же вопрос. А можете еще и прозрачные между ними вклеить.


В такой формулировке: "Определите количество перемен знаков элементов массива" условие поставлено некорректно. Должно быть уточнение, относительно беззнаковых нулей. Например: "... элементов массива не содержащего нули", или "... количество перемен отрицательных и неотрицательных элементов". Именно такой вариант решения я и предложила выше.

Добавлено через 13 минут

Не по теме:

Еще пример некорректного условия. Широко известная задача про пару сапог:
Сапожник сшил пару сапог и велел подмастерью продать их на рынке за 20 рублей. Тот умудрился продать эту пару двум одноногим калекам за 25. С каждого взял по 12.5 руб.
По возвращении подмастерья домой, сапожник устроил ему взбучку, и отправил назад, найти покупателей и вернуть им 5 рублей, по 2,5 каждому. Подмастерье решил "да ну нафиг" и оставив себе 3 рубля, вернул калекам только по одному рублю.
Теперь считаем. Каждый калека потратил на свой сапог 12.5 - 1 = 11.5 руб. Вдвоем они потратили 11.5 * 2 = 23 рубля. И 3 рубля осталось у подмастерья. В итоге 26 рублей. Откуда взялся лишний рубль?
Вы долго можете решать эту задачу, но в итоге вы скажете: "Так считать нельзя! Задача сформулирована некорректно"

0
 Аватар для Aviz__
2739 / 2048 / 507
Регистрация: 17.02.2014
Сообщений: 9,467
21.06.2019, 10:14
Цитата Сообщение от alicesmagic3d Посмотреть сообщение
iSmokeJC может вам вполне резонно возразить
а он сам не может?!

Не по теме:

Договорились, милая, тебя, как то вещество, коричневого цвета, не затрагиваю, т. к. глаза режет от эфира загрезненного))

0
 Аватар для alicesmagic
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
21.06.2019, 11:52
Цитата Сообщение от alicesmagic3d Посмотреть сообщение
На что iSmokeJC может вам вполне резонно возразить. "С чего бы это? При переходе с черного цвета на бесцветный перемена цвета произошла? Конечно произошла! А значит эта перемена должна подсчитываться"
И на что вы можете также вполне резонно возразить iSmokeJC: "Произошло исчезновение цвета. Исчезновение нельзя считать переменой. А, следовательно, подсчитывать его не нужно". И вот такой вполне резонный спор вы можете продолжать вечно.

А про вещество... Авиз, вы теряете лицо. Не меня вы обижаете, а себя...

Добавлено через 1 час 33 минуты

Не по теме:

Aviz__, а в чем собственно заключается "загрязнение эфира"? Я предложила свой корректный вариант решения задачи и привела аргументированные пояснения. Вы же кроме недостойной программиста фразы "нужно же, считать количество переходов между белым и черным цветом" не смогли противопоставить ничего в защиту своей позиции. И, видимо по этой причине, инфантильно скатились до грязных подшучиваний. Так кто из нас загрязняет эфир?
iSmokeJC, а вы не хотите высказаться по теме?

0
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
21.06.2019, 12:07
Цитата Сообщение от alicesmagic3d Посмотреть сообщение
Должно быть уточнение, относительно беззнаковых нулей
Не должно. Ноль не относится ни к положительным, ни к отрицательным. За подробностями -- в школу или теорию чисел. Для неверующих -- проверить на равенство Math.signum() от -0.0 и +0.0.
0
 Аватар для alicesmagic
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
21.06.2019, 12:46
Цитата Сообщение от HighPredator Посмотреть сообщение
Ноль не относится ни к положительным, ни к отрицательным.
Абсолютно верно! И именно поэтому должно быть уточнение в условии задачи. Что делать, если в массиве встречается 0? Для неверующих -- прочитать внимательно первые шесть постов этой темы, где возник закономерный конфликт различных решений от двух опытных программистов.
Можете сказать, кто из них прав?
0
 Аватар для Goongala
1022 / 562 / 185
Регистрация: 18.08.2013
Сообщений: 2,027
Записей в блоге: 2
21.06.2019, 17:06
Как насчёт компромисса?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    public static void main(String[] args) {
        int[] arr = {1, 0, 1, 1, -1, 0};
        Scanner in = new Scanner(System.in);
        System.out.print("Как вы считаете, ноль может быть положительным или отрицательным? ");
        String answer = in.nextLine();
        Predicate<int[]> condition = null;
        if (answer.equals("Ну ясен пень!"))
            condition = j -> Integer.signum(j[0]) != Integer.signum(j[1]);
        else if (answer.equals("Разумеется, нет. Ты с какого дерева слез?")) 
            condition = j -> (Integer.signum(j[0]) + Integer.signum(j[1])) == 0;
        else {
            System.out.println("Ты не прав");
            System.exit(1);
        }
        int count = 0;
        for (int i = 0; i < arr.length - 1; i++) {
            if (condition.test((new int[]{ arr[i], arr[i + 1] }))) {
                count++;
            }
        }
        System.out.println(count);
        in.close();
    }
0
 Аватар для alicesmagic
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
21.06.2019, 17:22

Не по теме:

Gungala, эк вас раскумарило

0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
21.06.2019, 17:27
Дамы и господа, полемика на такие глубоконаучные темы - это, конечно, прекрасно. Но не в данной ветке форума.
Все высказали свои точки зрения и подкрепили их соответствующим кодом. Это хорошо. А вот "правильность" того или иного решения остается целиком на усмотрение ТСа, которому судя по всему, по барабану. Так что не стОит ругаться. Если хочется дальше поговорить на эту тему - никто не запрещает создать соответствующий топик в "Обо всем" или "Священных войнах"
1
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
21.06.2019, 17:32
Вижу такая сложная и интерестная тема, вставлю и я свои пять копеек )))
Java
1
2
3
4
5
6
7
8
9
public class ChangeSignum{
 
    public static void main(String[] args){
        int[] a = {1, 0, -1, 1, 1, 0, -1, -1, 1, 0, 0, -1, 0, 0, 1, 1, -1, -1, 1, 0, -1};
        int[] b = Arrays.stream(a).filter(i -> i!=0).toArray();
        long c = IntStream.range(0,b.length-1).filter(j -> Integer.signum(b[j]) != Integer.signum(b[j+1])).count();
        System.out.println(c+" changed");
    }
}
Code
1
9 changed
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.06.2019, 17:32
Помогаю со студенческими работами здесь

Определить количество перемен знаков в массиве
14. В заданном целочисленном массиве распечатать те элементы, порядковые номера которых – числа Фибоначчи, а также определить количество...

Задача 94. В заданном целочисленном массиве опре¬делить количество перемен знаков
Задача 94. В заданном целочисленном массиве опре¬делить количество перемен знаков.

Написать программу, определяющую для каждого из трех массивов количество перемен знаков
Написать программу,определяющую для каждого из трех одномерных массивов: А ,В , С количество перемен знаков. Написать функции: -...

Распечатать те элементы порядковые номера которых - числа Фибоначчи; определить количество перемен знаков
в заданном целочисленном массиве распечатать те элементы,порядковые номера которых - числа Фибоначчиб а также определить количество перемен...

Определить количество изменений знаков элементов массива
Я новичок в это сфере, и вообще не понимаю, что делать. Прощу вас уважаемые помочь с этим. В интернете было что-то подобное, только в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru