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

Найти баг

27.04.2020, 17:07. Показов 651. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Просмотрите пж код, может найдете где логическую ошибку. Код при тесте на 25 тыс элементов дает ошибку, но проходит тест с более маленькими массивами, маленькие тестировал сам.

Я думаю, что ошибка где-то в методе Random, потому-что все вспомогательные методы использовал в 7 других методах для разных задач и они прошли все тесты на сервере без проблем, но только этот метод выдает ошибку с массивами на несколько тысяч. может заметите что я упустил из виду. Готовые Java методы с бинарным поиском или сортировкой не нужно писать мне, я знаю, что такие есть, задача не стоит в написании программы готовыми методами.

Описание: Two[] arr - массив заполненный обьектами, где каждый обьект имеет String и Index к соответствующему String.
Выглядит это, например, так: String: "bbb" -> Index: 0, "aaa" -> 1 и т.д. При сортировке массива будет выглядеть так: "aaa" -> 1, "bbb" -> 0 и т.д. То есть индекс сохраняется за стрингом(это главное условие) и подсчитывается вывод в методе Radom только по индексу.

Задача - найти элементы, которые стоят рядом с заданным стринг "string", например: дан массив String[] a =
{"a","b","c","d","f"}; , то при стринге "с" и dist 1, вывод будет - [b,d], в общем дист определяет к-во элементов слева и права записываемых в новый массив.

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// главный метод, который как раз все это и подсчитывает
     public String[] Radom(String string, int dist, Two[] arr, Two[] nearr) { //(string - искомый элемент, dist -дистанция, arr - массив сортированный по String, nearr - массив несортированный,где Index сохраняется для бинарного поиска по нему)
            String[] twords = new String[0];
            int point =  binarySearchForS(string, arr, 0, arr.length-1); // Метод ищет String и возвращает его позицию в массиве (.getIndex)
            int point2 = binarySearchForS(string, arr, 0, arr.length-1); // одинаковый метод, только для второго направления
 
            if(point < 0){   // Если элементов нет
                return twords;
            }
            for (int j = 1; j <= dist && point2 - j >= 0; j++) { //проход по левой строне от заданного слова
             twords = uvelichit(twords); // метод увеличивает массив на 1 для записи нового значения
             twords[twords.length - 1] = binarySearchforZ1(nearr, 0, arr.length-1, point2 - j); //записывает найденный стринг в новый массив (.getName)
     }
            for (int i = 1; i <= dist && point + i <= arr.length-1; i++) { // тоже, только для правой части
                twords = uvelichit(twords);
                twords[twords.length - 1] = binarySearchforZ1(nearr, 0, arr.length-1, point + i);
            }
              
            return twords;
        }
 
      public String[] uvelichit(String[] toUvelichit) {
            String[] bigger = new String[toUvelichit.length + 1];
            for (int i = 0; i < toUvelichit.length; i++) {
                bigger[i] = toUvelichit[i];
            }
            return bigger;
        }
//Ищем бинаром позицию Стринга в массиве и возвращаем     
      public int binarySearchForS(String kPoisku, Two[] arr, int lowerBound, int upperBound) {
            if (lowerBound > upperBound) {
                return -1;
            }
            int med = lowerBound + (upperBound - lowerBound) / 2;
            int cmp = kPoisku.compareTo(arr[med].getName());
            if (cmp < 0) {
                return binarySearchForS(kPoisku, arr, lowerBound, med - 1);
            }
            if (cmp > 0) {
                return binarySearchForS(kPoisku, arr, med + 1, upperBound);
            }
            return arr[med].getIndex();
        }
//Ищем индекса позицию и возвращаем соответствующий этому индексу стринг
      public String binarySearchforZ1(Two[] nearr, int l, int r, int x) {
            if (r >= l) {
                int mid = l + (r - l) / 2;
                if (nearr[mid].getIndex() == x)
                    return nearr[mid].getName();
                if (nearr[mid].getIndex() > x)
                    return binarySearchforZ1(nearr, l, mid - 1, x);
                return binarySearchforZ1(nearr, mid + 1, r, x);
            }
            return "";
        }
//Сортируем массив по Стрингу
      int sort(Two[] arr) {
            for (int gap = arr.length / 2; gap > 0; gap /= 2) {
                for (int i = gap; i < arr.length; i += 1) {
                    final String temp = arr[i];
                    int j;
                    for (j = i; j >= gap && arr[j - gap].compareTo(temp) > 0; j -= gap) {
                        arr[j] = arr[j - gap];
                    }
                    arr[j] = temp;
                }
            }
            return 0;
        }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.04.2020, 17:07
Ответы с готовыми решениями:

Не могу найти баг в задаче-о-нахождении-бага
Всем привет! Никак не могу решить весьма интересную задачу. Прошу оценить и помочь: public class ArrayTest2 { public static...

Баг в программе. Без цикла работает нормально. С циклом выдает баг
Здравствуйте. Пишу программу. И как не пытался ее переписать, как дохожу до момента включения в код большого цикла while, который запускает...

std::regex : баг на сайте или баг компилятора?
http://en.cppreference.com/w/cpp/regex/regex_match этот код выкидывает throw... Добавлено через 35 секунд компилятор gcc 4.8

3
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
27.04.2020, 19:59
StalinStr, браза, мое врожденное чувство прекрасного бьется в конвульсиях. Я тебя умоляю - почитай на ночь дядюшку Боба "Чистый код". Хотя бы первые страниц сто.
0
6 / 9 / 0
Регистрация: 19.10.2019
Сообщений: 194
27.04.2020, 20:09  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
бьется в конвульсиях
забрасывал все по частям и комментил, менял названия методов и всего остального.. мало ли.. На счет остального если, то научимся))
0
6 / 9 / 0
Регистрация: 19.10.2019
Сообщений: 194
28.04.2020, 20:53  [ТС]
больше неактуально.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.04.2020, 20:53
Помогаю со студенческими работами здесь

Баг asio? или баг TCP стека?
всем привет. повстречался с очень странным багом. и не могу определить кто бажит, asio, или TCP-стек. на стороне клиента,...

Letter-spacing баг или не баг?
Здравствуйте! Использовал letter-spacing для увеличения расстояния между буквами. Как оказалось расстояние появилось и после последней...

Забавный баг Делфи ...или не баг?
кароч кидаем на форму 2 editа и кнопку и пишем такой код unit Unit1; interface uses Windows, Messages, SysUtils, Variants,...

Не могу найти баг в своем коде
Не работает скрипт или баг где-то? &lt;html&gt; &lt;head&gt; &lt;meta charset=&quot;utf-8&quot;&gt; &lt;script&gt; &lt;!-- function...

Найти баг в коде, структура Train
При запуске кода на консоль выводятся 25 поездов: каждому присвоен номер, выводится направление, кол-во оставшихся билетов, время...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru