В произведении выводит всегда 0. С одномерным массивом все отлично, но при работе с двумерным, выводится 0.
public class Test {
public static void main(String[] args) {
int[][] a = new int[3][3];
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
a[i][j] = (int) (Math.random()) * 10;
int r = 1;
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
r = r * a[i][j];
System.out.println(r);
}
}
задан 28 ноя 2020 в 20:40
0
a[i][j] = (int)(Math.random() * 10) + 1;
ответ дан 28 ноя 2020 в 20:57
1
Метод Math.random()
возвращает дробное число double
в интервале больше или равно 0.0
и меньше 1.0
, которое при приведении к int
становится равным 0
, т. е. у вас массив пустой! Целое псевдослучайное число в заданном интервале можно получить с помощью метода Random.nextInt(n)
:
Random random = new Random();
random.nextInt(10); // [0, 9]
Ваш код может выглядеть так:
int[][] a = new int[3][3];
Random random = new Random();
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
a[i][j] = 1 + random.nextInt(10); // [1, 10]
}
}
int r = 1;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
r = r * a[i][j];
}
}
System.out.println(Arrays.deepToString(a));
// [[4, 2, 8], [8, 7, 8], [1, 9, 10]]
System.out.println(r);
// 2580480
ответ дан 28 ноя 2020 в 21:15
0
Во-первых, перенеси скобку за 10
a[i][j] = (int)(Math.random() * 10);
А во-вторых, чему будет равно произведение, если в таблице окажется хотя бы один 0? Добавь ещё единицу:
a[i][j] = (int)(Math.random() * 10) + 1;
ответ дан 28 ноя 2020 в 20:58
ЭникейщикЭникейщик
25.1k7 золотых знаков30 серебряных знаков46 бронзовых знаков
1
0 / 0 / 1 Регистрация: 17.04.2013 Сообщений: 71 |
|
1 |
|
Дан двумерный массив, найти произведение всех элементов07.10.2013, 00:45. Показов 8339. Ответов 2
Дан двумерный массив найти произведение всех элементов и ответить на вопрос были ли нулевые среди элементов?
0 |
87 / 68 / 19 Регистрация: 07.03.2011 Сообщений: 169 |
|
07.10.2013, 01:06 |
2 |
Так объявите переменную, которая будет содержать произведение элементов, а потом прогоните ваш массив двумя циклами — один вложен в другой. Первый (внешний) цикл отвечает за смену строк, внутренний — за смену столбцов, т.е. перебирает элементы строки. И в этом внутреннем цикле умножайте переменную произведение на элемент массива.
0 |
Kanonir 2 / 2 / 5 Регистрация: 20.01.2010 Сообщений: 12 |
||||
07.10.2013, 11:14 |
3 |
|||
Сообщение было отмечено Владимир12 как решение Решение
0 |
Формулировка задачи:
Мы имеем двумерный массив размерностью K строк и M столбцов. Элементы вводим с клавиатуры. Надо программу, которая будет искать и выводить на экран произведение всех элементов в каждой строке массива.
P.S.тону с этим,не могу ничего сделать,а завтра сдавать(
Код к задаче: «Найти и вывести на экран произведение всех элементов в каждой строке двумерного массива»
textual
Листинг программы
using System; class Program { static void Main() { int K = 3, M = 5; int[,] matrix = new int[K, M]; for (int i = 0; i < K; i++) for (int j = 0; j < M; j++) matrix[i, j] = Int32.Parse(Console.ReadLine()); for (int i = 0; i < K; i++) { for (int j = 0; j < M; j++) Console.Write(matrix[i, j] + " "); Console.WriteLine(); } for (int i = 0; i < K; i++) { int mul = 1; for (int j = 0; j < M; j++) mul *= matrix[i,j]; Console.WriteLine("Произведение {0}-й стоки: {1}", i, mul); } Console.ReadKey(); } }
В произведении выводит всегда 0. С одномерным массивом все отлично, но при работе с двумерным, выводится 0.
public class Test {
public static void main(String[] args) {
int[][] a = new int[3][3];
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
a[i][j] = (int) (Math.random()) * 10;
int r = 1;
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
r = r * a[i][j];
System.out.println(r);
}
}
Ответы (2 шт):
a[i][j] = (int)(Math.random() * 10) + 1;
→ Ссылка
Автор решения: Эникейщик
Во-первых, перенеси скобку за 10
a[i][j] = (int)(Math.random() * 10);
А во-вторых, чему будет равно произведение, если в таблице окажется хотя бы один 0? Добавь ещё единицу:
a[i][j] = (int)(Math.random() * 10) + 1;
→ Ссылка
На уроке рассматриваются алгоритмы работы с двумерными массивами в Python: создание матрицы, инициализация элементов, вывод, обработка элементов матрицы
Создание, вывод и ввод матрицы в Питоне
- Таким образом, получается структура из вложенных списков, количество которых определяет количество строк матрицы, а число элементов внутри каждого вложенного списка указывает на количество столбцов в исходной матрице.
- Вывод матрицы можно осуществить одним оператором, но такой простой способ не позволяет выполнять какой-то предварительной обработки элементов:
Для работы с матрицами в Python также используются списки. Каждый элемент списка-матрицы содержит вложенный список.
Рассмотрим пример матрицы размера 4 х 3:
matrix = [[-1, 0, 1], [-1, 0, 1], [0, 1, -1], [1, 1, -1]]
Данный оператор можно записать в одну строку:
matrix = [[-1, 0, 1], [-1, 0, 1], [0, 1, -1], [1, 1, -1]]
Результат:
- способ:
- способ:
1 2 3 4 5 |
def printMatrix ( matrix ): for i in range ( len(matrix) ): for j in range ( len(matrix[i]) ): print ( "{:4d}".format(matrix[i][j]), end = "" ) print () |
В примере i – это номер строки, а j – номер столбца;
len(matrix) – число строк в матрице.
1 2 3 4 5 |
def printMatrix ( matrix ): for row in matrix: for x in row: print ( "{:4d}".format(x), end = "" ) print () |
Внешний цикл проходит по строкам матрицы (row), а внутренний цикл проходит по элементам каждой строки (x).
1 2 3 4 |
from random import randint n, m = 3, 3 a = [[randint(1, 10) for j in range(m)] for i in range(n)] print(a) |
Обработка элементов двумерного массива
Нумерация элементов двумерного массива, как и элементов одномерного массива, начинается с нуля.
Т.е. matrix[2][3]
— это элемент третьей строки четвертого столбца.
Пример обработки элементов матрицы:
Найти произведение элементов двумерного массива.
✍ Решение:
1 2 3 4 5 |
p = 1 for i in range(N): for j in range(M): p *= matrix[i][j] print (p) |
Пример:
Найти сумму элементов двумерного массива.
✍ Решение:
Более подходящий вариант для Python:
1 2 3 4 |
s = 0 for row in matrix: s += sum(row) print (s) |
Для поиска суммы существует стандартная функция sum.
Задание Python 8_0:
Получены значения температуры воздуха за 4 дня с трех метеостанций, расположенных в разных регионах страны:
Номер станции | 1-й день | 2-й день | 3-й день | 4-й день |
---|---|---|---|---|
1 | -8 | -14 | -19 | -18 |
2 | 25 | 28 | 26 | 20 |
3 | 11 | 18 | 20 | 25 |
Т.е. запись показаний в двумерном массиве выглядела бы так:
t[0][0]=-8 | t[0][1]=-14 | t[0][2]=-19 | t[0][3]=-18 |
t[1][0]=25 | t[1][1]=28 | t[1][2]=26 | t[1][3]=20 |
t[2][0]=11 | t[2][1]=18 | t[2][2]=20 | t[2][3]=25 |
- Распечатать температуру на 2-й метеостанции за 4-й день и на 3-й метеостанции за 1-й день.
- Распечатать показания термометров всех метеостанций за 2-й день.
- Определить среднюю температуру на 3-й метеостанции.
- Распечатать, в какие дни и на каких метеостанциях температура была в диапазоне 24-26 градусов тепла.
Задание Python 8_1:
Написать программу поиска минимального и максимального элементов матрицы и их индексов.
Задание Python 8_2:
Написать программу, выводящую на экран строку матрицы, сумма элементов которой максимальна.
for i in range(N): # работаем с matrix[i][i]
for i in range(N): # работаем с matrix[i][N-1-i]
Пример:Переставить 2-й и 4-й столбцы матрицы. Использовать два способа.
✍ Решение:
for i in range(N): c = A[i][2] A[i][2] = A[i][4] A[i][4] = c
for i in range(N): A[i][2], A[i][4] = A[i][4], A[i][2]
Задание Python 8_3:
Составить программу, позволяющую с помощью датчика случайных чисел сформировать матрицу размерностью N. Определить: