|
0 / 0 / 0
Регистрация: 19.05.2017
Сообщений: 4
|
|
Ява. Многомерные массивы20.05.2017, 18:16. Показов 1136. Ответов 5
Метки нет (Все метки)
Дана целочисленная прямоугольная матрица. Определить:
1. Сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент. 2. Номера столбцов, все элементы которых упорядочены по возрастанию. Выполнял эти задания по одиночке, но огромная проблема с алгоритмами. При объединении двух заданий в одном коде получается каша и Ява выбивает ошибки. Пробую сижу сейчас сам, но если кто подкинет грамотный алгоритм выполнения, то буду благодарен.
0
|
|
| 20.05.2017, 18:16 | |
|
Ответы с готовыми решениями:
5
Как лучше создавать многомерные массивы Ява такая Ява - не решается задачка. Основы Многомерные массивы |
|
4 / 4 / 3
Регистрация: 17.11.2015
Сообщений: 57
|
||||||
| 20.05.2017, 20:43 | ||||||
Сообщение было отмечено Silentwise как решение
Решение
Думаю вот так:
1
|
||||||
|
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
|
||
| 20.05.2017, 20:43 | ||
|
Silentwise,
Что касается алгоритма первой части: пробегаете столбцы матрицы при наличии отрицательного(ных) значений суммируете элементы. По второй части также пробегаете столбцы, сравнивая элементы: если следующий больше текущего, то идёте дальше, дойдя до крайнего элемента помечаете номер столбца, ну а если следующий элемент меньше текущего выходите из цикла досрочно. Не по теме: я полагаю алгоритмы уже вам без надобности :-)
0
|
||
|
0 / 0 / 0
Регистрация: 19.05.2017
Сообщений: 4
|
|
| 21.05.2017, 15:22 [ТС] | |
|
Благодарю за адекватный комментарий. Безусловно, критика - важный элемент в развитии.
По первому заданию написал такую кашу, что она накормила бы всех пленных немцев времён Великой Отечественной Войны, но всё-таки, она работает и понимает, чего я от неё хочу. Вот код: package z31; import java.util.Scanner; public class Z31 { public static void main(String[] args) { // задаём размер матрицы Scanner in = new Scanner(System.in); System.out.print("Введите размер матрицы: "); int size = in.nextInt(); int[][] arr = new int[size][size]; // заполняем матрицу System.out.println("Введите элементы матрицы:"); for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { System.out.println("Введите ["+i+"]["+j+"] элемент массива:"); arr[i][j] = in.nextInt(); } } System.out.println("Ваша матрица:"); for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { System.out.print(+arr[i][j]+" "); } System.out.println(""); } // сумма в столбцах с отриц элементами int summ=0; int[] st = new int[size]; int k = 0; System.out.print("Номера столбцов, содержащих отрицательные элементы:" + " "); for (int i=0;i<size;i++){ for (int j=0;j<size;j++){ if (arr[i][j]<0) { System.out.print(j + " "); } } } System.out.print("Введите номер столбца, который хотите просуммировать:" ); int j = in.nextInt(); int i; for (i=0; i<size; i++){ summ+=arr[i][j]; } System.out.println("Сумма элементов столбца " + j + " ровна: " + summ ); } } Что касается второго задания, то при увеличении размера матрицы (больше 4-х), Ява где-то работала не так, как я планировал. Код по второму заданию убил, он был больше кода "lignium" раза в три, наверное. В итоге позаимствовал его часть кода: package z32; public class Z32 { private static int[] getColumn(int[][] matrix, int number) { int[] column = new int[matrix.length]; for (int i = 0; i < column.length; i++) { column[i] = matrix[i][number]; } return column; } private static boolean isSorted(int[] array) { int last = array[0]; for (int i = 1; i < array.length; i++) { if (last > array[i]) { return false; } } return true; } public static void main(String[] arguments) { int[][] matrix = { {1, 2, 3}, {-4, 1, 4}, {-2, -7, 9} }; int matrix_columns = 3; for (int i = 0; i < matrix_columns; i++) { int[] column = getColumn(matrix, i); if (isSorted(column)) { System.out.println("В столбике " + i + " элементы отсортированы."); } } } } Алгоритмы срочно нужно подтягивать. Был бы признателен за полезную литературу по этой тематике. Добавлено через 2 минуты lignium, благодарю за ответ и потраченное время! IntStream.of - я побродил по интернету, но так и не смог абсолютно понять, для чего нужна эта функция. Единственное, что я понял, это то, что она сосредоточена в пакете java.util.stream. и поддерживается только с версии Java SE 8. Верно?
0
|
|
|
4 / 4 / 3
Регистрация: 17.11.2015
Сообщений: 57
|
||||||
| 23.05.2017, 17:37 | ||||||
|
Да. Выражение
IntStream.of(column).sum() позволяет вычислить сумму всех элементов массива. Статический метод IntStream.of() создает новый числовой поток (stream) из массива, а метод IntStream.sum() складывает все элементы и возвращает результат. А вообще можно легко и без стримов обойтись:
0
|
||||||
|
0 / 0 / 0
Регистрация: 19.05.2017
Сообщений: 4
|
|
| 23.05.2017, 18:14 [ТС] | |
|
lignium
Благодарю! Реализовал графический интерфейс для обеих программ Больше кайфа получил от процесса, чем от того, что всё работает. В заключение сделал вывод, что алгоритмы - это очень важный элемент, который нужно трижды освоить.
0
|
|
| 23.05.2017, 18:14 | |
|
Помогаю со студенческими работами здесь
6
Многомерные массивы, как перебирать внутренние массивы Многомерные массивы: перевернуть массив как "кубик-рубик" и группировка в массивы порядка выше Ассоциативные массивы ява
Многомерные массивы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|