|
7 / 17 / 0
Регистрация: 30.09.2021
Сообщений: 232
|
||||||
Заполнять массив случайными числами, пока сумма граничных и внутренних элементов не будет равна26.10.2021, 14:27. Показов 3847. Ответов 47
Метки нет (Все метки)
Задание "Написать класс, который заполняет двумерный массив размером 5х4 случайными положительными двузначными числами до тех пор, пока сумма граничных элементов(1 и последняя строка и 1 и последний столбец) не будет равна сумме внутренних".
Мой вариант повис. Что в нём не так?
0
|
||||||
| 26.10.2021, 14:27 | |
|
Ответы с готовыми решениями:
47
Заполнить массив случайными числами от 1 до 9 до тех пор пока их четная сумма не станет больше заданного М Создать типизированный файл. Заполнять его числами до тех пор пока не будет введена цифра 5
|
|
14 / 11 / 3
Регистрация: 13.07.2018
Сообщений: 37
|
|
| 27.10.2021, 12:37 | |
|
Тут много неопределенностей в задании.
1) массив 5х4 т.е. фиксированной длины 2)не указано что есть сумма внутренних элнменотов. Если граничные это строка, то внутренние это квадрат3х2??? Т.е. для внутренних считать скмму квадрата? 3) заполняем до тех пор... т.е. есть матрица 5х4 и ее еще можно недозаполнить? 4) при таких условиях вероятность положительного исхода в сравнентт сумм практически рпвна нулю
0
|
|
|
2755 / 2062 / 509
Регистрация: 17.02.2014
Сообщений: 9,491
|
|||
| 27.10.2021, 13:01 | |||
|
0
|
|||
|
14 / 11 / 3
Регистрация: 13.07.2018
Сообщений: 37
|
|||||||
| 27.10.2021, 13:52 | |||||||
|
Судя по коду программы матрица заполняется именно рандомными числами. А значит вероятность что будет счастье крайне мала. По поводу зависания программы все просто:
0
|
|||||||
|
7 / 17 / 0
Регистрация: 30.09.2021
Сообщений: 232
|
|
| 27.10.2021, 15:01 [ТС] | |
|
darkduke, вот полный текст задачи "1. Напишите метод, который получает в качестве параметров двумерный массив целых чисел и возвращает сумму всех элементов на границах массива ( первая и последняя строка, первый и последний столбец).
2. Напишите метод, который получает в качестве параметров двумерный массив целых чисел и возвращает сумму всех его внутренних элементов ( т.е. элементов, не находящихся на границах). 3. Напишите класс, который заполняет двумерный массив размером 5x4 случайными положительными двузначными числами до тех пор, пока сумма граничных элементов не окажется равной сумме внутренних". Первые два пункта я сделала, остался третий. Может, попробовать вставить циклы for в while? Но тогда я вообще запутаюсь. Или вынести цикл while в новый метод, а внутри него дать ссылку на метод sumG? Добавлено через 4 минуты Aviz__, уверена. Я выше привела скопированное условие задачи. Я понимаю, что нужно сделать. Нужно заполнить массив случайными числами, посчитать и сравнить суммы внешних и внутренних элементов. Если они не равны, всё начать с начала и продолжать до тех пор, пока сумма внешних элементов не будет равна сумме внутренних элементов. Но как это сделать, я не знаю.
0
|
|
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
| 27.10.2021, 15:35 | |
|
while (sumBorder(array) != sumInternal(array)) {
array = getRandomArray(); }
1
|
|
|
14 / 11 / 3
Регистрация: 13.07.2018
Сообщений: 37
|
||||||
| 27.10.2021, 15:44 | ||||||
|
Вот накидал общую схему, но как и сказал крутится эта штука может очень долго т.к. шанс выйти тут вероятностный ибо рандом, есть рандом....
1
|
||||||
|
Супер-модератор
|
||||||
| 27.10.2021, 18:54 | ||||||
|
Вот подсчет суммы граничных элементов любого прямоугольного массива:
0
|
||||||
|
7 / 17 / 0
Регистрация: 30.09.2021
Сообщений: 232
|
|
| 27.10.2021, 19:12 [ТС] | |
|
Catstail, мне кажется, что мой способ нахождения суммы граничных элементов проще и красивее
![]() И мой вопрос был не о том. Думаю, что мне на него чуть выше ответили. Завтра проверю.
0
|
|
|
Супер-модератор
|
||
| 27.10.2021, 19:17 | ||
И Ваш код оформлен "красиво". А уж про организацию я вообще падаю ниц - это уже музыка сфер...
0
|
||
|
14 / 11 / 3
Регистрация: 13.07.2018
Сообщений: 37
|
||
| 27.10.2021, 19:33 | ||
1
|
||
|
7 / 17 / 0
Регистрация: 30.09.2021
Сообщений: 232
|
|
| 27.10.2021, 20:42 [ТС] | |
|
Catstail, я в 8 строчках нахожу 3 неизвестных, а Вы в пяти строчках - одно. К тому же мой код интуитивно понятен, а над Вашим нужно думать
![]() А "красиво" относится не к оформлению кода, а к ходу мысли Красиво я увернулась от необходимости считать ячейки.
0
|
|
|
14 / 11 / 3
Регистрация: 13.07.2018
Сообщений: 37
|
||||||||||||||||
| 27.10.2021, 21:26 | ||||||||||||||||
Сообщение было отмечено Sollita как решение
Решение
кстати о подсчетах, если убрать пункты 1 и 2, то можно оптимизировать подсчет заменив условие:
И кстати можно пойти дальше и интегрировать туда build вставив перед if в 5 строке m[i][j] = ....
1
|
||||||||||||||||
|
Супер-модератор
|
||||||||
| 28.10.2021, 08:38 | ||||||||
|
darkduke, да, можно и в один цикл. Можно и совсем без циклов. (см. ниже) Но этот подход будет ненаглядным.
![]() Sollita, суммировать можно по-разному, но у Вас в 25-й строке замечательного кода стоит печать. Это, разумеется, Ваше право, но элементарные соображения декомпозиции (из которых потом выросло ООП) предлагают составлять функции так, чтобы функция (метод) выполняла ровно одно действие (в данном случае - считала сумму граничных элементов). А вот что делать с этой суммой - пусть решает тот, кто будет эту функцию вызывать (может напечатать, может в файл записать, может по сети отослать куда-то). А теперь не соглашайтесь изо всех сил!
1
|
||||||||
|
2755 / 2062 / 509
Регистрация: 17.02.2014
Сообщений: 9,491
|
||||||
| 28.10.2021, 12:53 | ||||||
Сообщение было отмечено Sollita как решение
Решение
Sollita, держи, проверяй. не думал, что так быстро находит решение:
одно из решений
[12, 55, 12, 10] [26, 41, 63, 27] [14, 80, 57, 18] [42, 86, 95, 21] [12, 49, 28, 31]
1
|
||||||
|
7 / 17 / 0
Регистрация: 30.09.2021
Сообщений: 232
|
||||||
| 28.10.2021, 14:56 [ТС] | ||||||
|
darkduke, Спасибо, работает и мой метод, и Ваш. Правда, окончательного результата я не дождалась
Я немного адаптировала Ваш вариант, чтобы можно было контролировать промежуточные результаты, но все лишние System.out.println можно убрать при желании.
Catstail, 1. Мой код интуитивно понятен, потому что даже шестиклассник догадается из площади вычесть меньшую площадь, чтобы получать остаток Я просто вытащила дырку и получился квадратный бублик ![]() 2. Если Вы напишете код, который вычисляет и граничную и внутреннюю сумму, что мне требуется по заданию, а не только граничную, как у Вас, то увидите, что мой код лучше. 3. За вариант с рекурсией спасибо, не потому, что он лучше, а потому, что я и не предполагала, что такое возможно. Мне раньше рекурсия нигде не попадалась. Изучу. Была бы благодарна, если бы Вы объяснили этот код. Я поняла, что метод ссылается сам на себя. Но как в нём возможно применить три return?
0
|
||||||
|
14 / 11 / 3
Регистрация: 13.07.2018
Сообщений: 37
|
||
| 28.10.2021, 14:58 | ||
0
|
||
|
Супер-модератор
|
||||||
| 28.10.2021, 15:12 | ||||||
|
Шестиклассник - это да, авторитет... Снимаю шляпу! Представьте, что Вы пишете промышленную программу. Матрица у Вас 1000*1000. Для подсчета суммы граничных элементов мой алгоритм сделает ~ 4000 витков цикла. Ваш и шестиклассника - ~ два миллиона витков. При этом почти 2 миллиона сложений будет выполнен зря... Это не все. При таких объемах вычислений еще и погрешность может нарасти. Ваш результат может оказаться менее точным, чем мой.
Если бы Вы попробовали сдать такое решение тестирующей системе, то скорее всего, получили бы результат: "Не проходит по времени". Уж лучше сделать вот так:
О рекурсии можно поговорить отдельно.
0
|
||||||
|
14 / 11 / 3
Регистрация: 13.07.2018
Сообщений: 37
|
||
| 28.10.2021, 15:33 | ||
|
0
|
||
|
Супер-модератор
|
||||||||||||
| 28.10.2021, 16:13 | ||||||||||||
|
Я рассматривал только вопрос о вычислении граничных элементов. Если решать задачу в исходной постановке то суммирование всей матрицы выполнить придется - но всего один раз. Я бы поступил так:
И вот результат: Кликните здесь для просмотра всего текста
..... Шаг 698 Матрица: 0 0 3 1 3 3 3 2 0 0 0 3 1 3 1 3 1 1 3 1 2 0 0 2 0 Сумма граничных= 19 Сумма внутренних= 17 0 2 Шаг 699 Матрица: 0 0 2 1 3 3 3 2 0 0 0 3 1 3 1 3 1 1 3 1 2 0 0 2 0 Сумма граничных= 18 Сумма внутренних= 17 2 2 Шаг 700 Матрица: 0 0 2 1 3 3 3 2 0 0 0 3 2 3 1 3 1 1 3 1 2 0 0 2 0 Сумма граничных= 18 Сумма внутренних= 18 Ура, свершилось!!! Добавлено через 8 минут (Я выше оговорил это условие).Да, каюсь - подсчет суммы только граничных за время O(n*m) у меня вкралась ошибка - поторопился. Правильно, разумеется, вот так:
0
|
||||||||||||
| 28.10.2021, 16:13 | |
|
Помогаю со студенческими работами здесь
20
Создать программу, которая имела бы возможность заполнять массив случайными числами! Заполнения одномерного массива случайными числами, в которую передается какой массив надо заполнять Сложный перебор чисел, до тех пор пока их сумма не будет равна данной Заполнить двумерный массив случайными числами из интервала и и найти в какой строке сумма элементов наибольшая Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
|
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит значение перечислений.
/ / Событие "НачалоВыбора" реквизита на форме. . .
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
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
|