Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 08.07.2022
Сообщений: 7

Halving Carousel - реализовать класс HalvingCarousel, который должен делить элементы массива пополам

19.08.2022, 16:42. Показов 3182. Ответов 8

Студворк — интернет-сервис помощи студентам
Добрый день! Прошу подсказать и направить мозг в нужное русло)

Есть программа, которая принимает некоторые положительные целые числа >0(метод addElement), затем перебирает эти числа в порядке добавления, отнимает от каждого 1, и переходит к следующему числу(метод next). И так до тех пор, пока все числа не станут 0(isFinished).
Код:

Класс DecrementingCarousel
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class DecrementingCarousel {
    int capacity;
    static int[] carouselElements;
    int counter = 0;
    boolean runIsAlreadyCalled;
 
    public DecrementingCarousel(int capacity) {
        this.capacity = capacity;
        carouselElements = new int[capacity];
    }
 
    public boolean addElement(int element){
        if (element > 0 && carouselElements.length > counter && !runIsAlreadyCalled) {
            carouselElements[counter] = element;
            counter++;
            return true;
        } else {
            return false;
        }
    }
 
    public CarouselRun run(){
        if (runIsAlreadyCalled) {
            return null;
        } else {
            runIsAlreadyCalled = true;
            return new CarouselRun();
        }
    }
}


Класс CarouselRun
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class CarouselRun {
    int[] array = DecrementingCarousel.carouselElements;
    int counter = 0;
 
    public int next() {
        if (counter > array.length - 1) {
            counter = 0;
        }
        while (array[counter] == 0) {
            counter++;
            if (counter > array.length - 1) {
                counter = 0;
            }
            if (isFinished()) {
                return -1;
            }
        }
        array[counter]--;
        counter++;
        return array[counter - 1] + 1;
    }
 
    public boolean isFinished() {
        for (int j : array) {
            if (j != 0) {
                return false;
            }
        }
        return true;
    }
}


Задание: расширить класс DecrementingCarousel. Нужно реализовать класс HalvingCarousel. Этот подкласс должен делить элементы пополам, а не уменьшать их на единицу. Нужно применить обычное целочисленное деление, отбрасывая остаток. Например, 5 / 2 = 2.

Мой текущий код:
Класс HalvingCarousel
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class HalvingCarousel extends DecrementingCarousel {
 
    public HalvingCarousel(final int capacity) {
        super(capacity);
    }
 
    @Override
    public CarouselRun run() {
        if (runIsAlreadyCalled) {
            return null;
        } else {
            runIsAlreadyCalled = true;
            return new CarouselRun2();
        }
    }
}


Класс CarouselRun2
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class CarouselRun2 extends CarouselRun{
    int counter = 0;
    int[] array = DecrementingCarousel.carouselElements;
 
    @Override
    public int next() {
        if (counter > array.length - 1) {
            counter = 0;
        }
        while (array[counter] == 1) {
            counter++;
            if (counter > array.length - 1) {
                counter = 0;
            }
            if (isFinished()) {
                return -1;
            }
        }
        array[counter] = array[counter] / 2;
        counter++;
        return array[counter - 1] * 2;
    }
 
    @Override
    public boolean isFinished() {
        int multiplication = 1;
        for (int j : array) {
            multiplication *= j;
            }
        return multiplication == 1;
    }
}


Тесты не проходят совсем. Ошибка в переопределении методов, или в реализации наследования, или где-то еще?
И в частности крайне настораживает 1 падающий тест (скрин во вложении).
Заранее спасибо!
Миниатюры
Halving Carousel - реализовать класс HalvingCarousel, который должен делить элементы массива пополам  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.08.2022, 16:42
Ответы с готовыми решениями:

Реализовать класс который должен асинхронно выгружать данные из бд и возвращать коллекцию
есть класс который должен асинхронно выгружать данные из бд и возвращать коллекцию class CategoryHelper:EntityHelper<Category> ...

Сформировать массив, который должен содержать все повторяющиеся элементы массива
Ввести одномерный массив A. Сформировать массив С, который должен содержать все повторяющиеся элементы массива A, предшествующие...

Сформировать массив С, который должен содержать элементы массива A, отсутствующие в массиве B
Всем доброго времени суток:), прошу помочь с задачей в Windows Forms - "Ввести два одномерных целочисленных массива A и B из N и M...

8
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
19.08.2022, 17:28
Цитата Сообщение от DenSebrovsky Посмотреть сообщение
int multiplication = 1;
        for (int j : array) {
            multiplication *= j;
            }
        return multiplication == 1;
а если там 0?
ну и вообще включи дебаггер и посмотри
1
0 / 0 / 0
Регистрация: 08.07.2022
Сообщений: 7
19.08.2022, 17:51  [ТС]
0 не может быть, т.к. массив не принимает значения <=0.
И если б я сам разобрался, в том числе с дебаггером, я бы не просил помощи)
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
19.08.2022, 18:25
т.е. ты предлагаешь кому-то за тебя в дебаггер посмотреть?
0
0 / 0 / 0
Регистрация: 08.07.2022
Сообщений: 7
19.08.2022, 18:38  [ТС]
Я застрял на этом задании. Возможно кто-то и без дебаггера уже в коде видит ошибки, которые не вижу я... Я поэтому сюда и пишу - любая подсказка приветствуется)
P.S. Я с дебаггером проверяю. Нашел ошибку: 1 / 2 = 0, поэтому multiplication может быть 0 и выдает false. Исправил, но все равно код не работает.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
19.08.2022, 19:08
запускаешь тест, смотршь почему падает, разбираешься, откуда это берется... PROFTI
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
19.08.2022, 21:28
Сразу в глаза бросилось - зачем int[] carouselElements; - статик?
1
0 / 0 / 0
Регистрация: 08.07.2022
Сообщений: 7
19.08.2022, 22:26  [ТС]
Уже даже и не могу объяснить... я только учусь) IDE ругалась на это поле, и добавление static убрало ошибку.
Надо еще раз изучить этот момент.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
19.08.2022, 22:41
Честно говоря, я вообще не понимаю логики данной программы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.08.2022, 22:41
Помогаю со студенческими работами здесь

Сформировать массив С, который должен содержать элементы массива A, находящиеся в массиве B
Ввести два одномерных целочисленных массива A и B из N и M элементов соответственно (размерность и элементы вводим с клавиатуры). ...

Сколько раз необходимо число 5000 делить пополам
Сколько раз необходимо число 5000 делить пополам, чтобы результат деления был меньше 30. Нужно использовать for ,while, do while. ...

Создать класс "А," представляющий собой класс, который в виде параметра должен принимать экземпляр другого класса
Создать класс &quot;А,&quot; представляющий собой класс, который в виде параметра должен принимать экземпляр другого класса, в соответствии с Вашей...

Определите класс, который должен содержать атрибуты
Здравствуйте уважаемые любители и ценители языка С++! У меня к вам огромная просьба. На днях нужно сдать контрольную работу по предмету...

Делить число х пополам до тех пор, пока оно не станет меньше определённого n
Написать листинг программы: Делить число х пополам до тех пор, пока оно не станет меньше определённого n


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru