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

Поиск в двумерном массиве

02.10.2021, 21:57. Показов 4455. Ответов 20
Метки java (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Будьте так любезны, напишите пожалуйста как организовать поиск вводимых значении в двумерном массиве. При нахождении указать его индекс, иначе Не найдено.
Спасибо большое заранее.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.10.2021, 21:57
Ответы с готовыми решениями:

Поиск пути в двумерном массиве методом "в ширину"
Все что имею: Двумерный массив, заполненный нулями(стенками) и единицами(пустотой). Положение игрока X и Y. И положение цели, X0 и Y0. ...

Поиск числа в двумерном массиве (бинарный поиск)
Произвожу поиск элемента в массиве двумя способами: линейным(последовательным) поиском и бинарным(двоичным). Первый работает на ура. Второй...

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

20
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
03.10.2021, 02:11
Лучший ответ Сообщение было отмечено Azik13 как решение

Решение

Циклом фор
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,724
Записей в блоге: 14
03.10.2021, 13:23
Лучший ответ Сообщение было отмечено Azik13 как решение

Решение

Java
1
2
3
B1:  for (int i=0; i<n; i++)
          for (int j=0; j<m; j++)
              if (arr[i][j]=что_ищем) break B1;
1
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
03.10.2021, 13:54
Цитата Сообщение от Catstail Посмотреть сообщение
B1:
Цитата Сообщение от Catstail Посмотреть сообщение
break B1;
Кликните здесь для просмотра всего текста
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,724
Записей в блоге: 14
03.10.2021, 21:16
Arsegg, что означает сия картинка?
0
04.10.2021, 10:55

Не по теме:

Catstail, зло, как по мне, данная конструкция continue/break LABEL;. В C/C++ от goto сколько итераций пытались избавиться, а тут еще это Наследние в Java...

0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,724
Записей в блоге: 14
04.10.2021, 17:22
Arsegg, Вы меня удивляете... По-моему, это называется "доктринёрство". Кстати, а как Вы выйдите сразу из нескольких циклов?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
04.10.2021, 17:29
Цитата Сообщение от Catstail Посмотреть сообщение
Кстати, а как Вы выйдите сразу из нескольких циклов?
А return для чего?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,724
Записей в блоге: 14
04.10.2021, 17:42
Arsegg, эээ, голубчик... А если мне не нужно покидать метод?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
04.10.2021, 17:57
Цитата Сообщение от Catstail Посмотреть сообщение
А если мне не нужно покидать метод?
Single Responsibility? Не, не слышал.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,724
Записей в блоге: 14
04.10.2021, 18:09
Arsegg, не согласен. При чем тут это? Мне нужно что-то найти в двумерном массиве и возвести в квадрат. Если по-человечески, то нахожу, возвожу, выхожу из циклов и иду дальше. А если по-доктринерски, то отдельный метод для поиска, отдельный метод для всего остального.

Любой принцип (в т.ч. и Single Responsibility) можно довести до идиотизма. И ради чего? Чтобы не использовать break с меткой! А чем он плох? Да тем, что другой доктринер сказал, что goto - это страшное зло! (Я уже не говорю, что break lab; это не goto; goto в jave вообще нет) А почему goto - зло? Ну... потому, что если будет много goto, то код может стать нечитаемым.

Может быть, все же лучше руководствоваться не доктринами, а здравым смыслом?
1
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
04.10.2021, 21:06
Цитата Сообщение от Catstail Посмотреть сообщение
Может быть, все же лучше руководствоваться не доктринами, а здравым смыслом?
Какой может быть здравый смысл в методах на 1-3к строк со вложенностью 10-20? Если метод нельзя описать в одно-три предложения - метод нужно рефакторить, т. к. он явно делает что-то лишнее.
Цитата Сообщение от Catstail Посмотреть сообщение
При чем тут это? Мне нужно что-то найти в двумерном массиве и возвести в квадрат.
Нашел элемент, вернул Optional<E>, дальше делаешь что-угодно: хочешь возводишь в квадрат, хочешь кидаешь исключение, что элемент не найден, хочешь выводишь в System.out.
P. S. Мухи отдельно - котлеты отдельно.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,724
Записей в блоге: 14
05.10.2021, 06:13
Arsegg, подобная декомпозиция "до атома" хороша, как и любой принцип - лишь до определенного предела. Дальше начнутся проблемы с пониманием подобного кода (когда каждый отдельный метод прост и ясен, а весь код "не укладывается в сознание").

Цитата Сообщение от Arsegg Посмотреть сообщение
Какой может быть здравый смысл в методах на 1-3к строк со вложенностью 10-20?
- давайте не будем "пригинать" (уподобляться умной Эльзе из сказки братьев Гримм; читали?) Речь - про очень простой код, размером меньше десятка строк. Применять к нему декомпозицию до атомного уровня - доктринёрство (если не сказать хуже - эпигонство).
1
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
05.10.2021, 10:53
Цитата Сообщение от Catstail Посмотреть сообщение
лишь до определенного предела.
Ок. Как скажете.
Цитата Сообщение от Catstail Посмотреть сообщение
Мне нужно что-то найти в двумерном массиве и возвести в квадрат.
А другому разработчику что прикажете делать с Вашим кодом, если ему нужно только найти элемент в двумерном массиве? Вычислять квадратный корень от результата работы метода? Или сделать сразу "нормально"?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,724
Записей в блоге: 14
05.10.2021, 14:59
Цитата Сообщение от Arsegg Посмотреть сообщение
А другому разработчику что прикажете делать с Вашим кодом, если ему нужно только найти элемент в двумерном массиве?
- другому разработчику мой код не нужен. Я же про очень простой код. Сложный код имеет смысл "декомпозировать", простой - нет. Поэтому то языковое средство, которое я употребил - вполне на месте. Тем более, что это "хак" какой-нибудь, а легальное средство языка.

Ведь "борьба с goto" должна была чему-то научить... Проблема не в goto, как таковом, а в мышлении иных программистов. GoTo изжит из большинства языков (или область его применения сильно ограничена, или он заменен эквивалентами ограниченной функциональности, как в Jave). И что, счастье наступило?

Ну, а если так уж от него воротит - пожалуйте в Prolog или в Haskell! Там Goto точно нет ни в каких видах.
1
 Аватар для Aviz__
2753 / 2060 / 509
Регистрация: 17.02.2014
Сообщений: 9,487
05.10.2021, 15:57

Не по теме:

Catstail, мне нравится высокий стиль слога в этом споре.

0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
05.10.2021, 17:10
Цитата Сообщение от Catstail Посмотреть сообщение
- другому разработчику мой код не нужен.
Тогда пусть рядом пишет Ctrl + C и Ctrl + V вашего метода и изменяет возведение в квадрат на любую другую функцию, так получается?
Цитата Сообщение от Catstail Посмотреть сообщение
Ведь "борьба с goto" должна была чему-то научить...
Процедурный стиль программирования, равно как и GoTo, еще в 60-х годах изжили себя.
Занятная статья на тему: Доводы против оператора goto.
Цитата Сообщение от Catstail Посмотреть сообщение
Ну, а если так уж от него воротит - пожалуйте в Prolog или в Haskell! Там Goto точно нет ни в каких видах.
Пока хватает того, что его нет Python'е. И не будет.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,724
Записей в блоге: 14
05.10.2021, 18:19
Цитата Сообщение от Arsegg Посмотреть сообщение
Занятная статья на тему: Доводы против оператора goto.
- с гораздо большим интересом я прочитал бы доводы "за".

А статья Дейкстры (с которой все началось) послужило основой для эпигонства

Неожиданый пример в тему. Все знают, что, строго говоря, алкоголь - нервный яд. Есть люди, придерживающиеся "здорового образа жизни", которые алкоголь не употребляют вообще. Такие люди в общении крайне тяжелы. Но если нормальный человек (не алкоголик) изредка выпивает рюмку-две-три коньяка-водки, то что? Это страшно? Конечно! - ответит апологет ЗОЖ - сначала рюмка, потом другая и т.п. Он травит себя!!! Но мы-то (люди нормальные) знаем, что это фигня на самом-то деле... Это только пример. Не советую уподобляться доктринерам ЗОЖ.

Добавлено через 1 минуту
Процедурный стиль программирования нисколько себя не изжил, кстати, а органично влился в объектный и функциональный стили.
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
05.10.2021, 18:58
Цитата Сообщение от Catstail Посмотреть сообщение
- с гораздо большим интересом я прочитал бы доводы "за".
Доводы за - это слишком далеко от темы.
Насколько я понимаю, goto родился на заре появления человекочитаемых ЯП, задолго до появления процедур/функций и т. п., для устранения дублирования машинного кода (условия, циклы и т. д.). Если я не прав, поправьте.
P. S. Ну и самый, как по мне серьезный недостаток goto, он ломает scheduler процессора и тем самым существенно понижает производительность работы программы. Как именно в JVM реализован continue/break label - не интересовался. Могу, конечно, ошибаться, и имплементация JIT-компилятора понимает это и оптимизирует код на-лету.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,724
Записей в блоге: 14
05.10.2021, 18:59
Arsegg, боюсь, что низкоуровневые языки (типа JVM) goto как раз содержат.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.10.2021, 18:59
Помогаю со студенческими работами здесь

Поиск в двумерном массиве
Массив двумерный из файла, найти элемент, заданый с клавиатуры. Помогите найти ошибку. program Project1; {$APPTYPE CONSOLE} ...

Поиск в двумерном массиве
Помогите написать программу Условие следующее: Дано массив целых чисел А , который состоит из нулей и единиц. Для заданного значения К...

Поиск в двумерном массиве
Здравствуйте ! Подскажите пожалуйста , как можно по-другому записать строку : int foundArray1 = myArr2.FirstOrDefault(subArray1...

Поиск в двумерном массиве
подскажите как организовать поиск в двумерном массиве,спасибо!

Поиск в двумерном массиве
Дан двумерный массив A(NxM) , элементы которого определяются следующим образом: A=30*(N+1-j)+0.2*i; Определите, есть ли в массиве...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
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
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru