Как найти произведение всех элементов двумерного массива

В произведении выводит всегда 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

Rascheras's user avatar

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

Эникейщик's user avatar

ЭникейщикЭникейщик

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

Так объявите переменную, которая будет содержать произведение элементов, а потом прогоните ваш массив двумя циклами — один вложен в другой. Первый (внешний) цикл отвечает за смену строк, внутренний — за смену столбцов, т.е. перебирает элементы строки. И в этом внутреннем цикле умножайте переменную произведение на элемент массива.
Самое главное — до начала первого цикла присвойте произведению значение 1.
Если после прогона массива через эти циклы он будет равен нулю, то значит в нём был хотя бы один нулевой элемент.



0



Kanonir

2 / 2 / 5

Регистрация: 20.01.2010

Сообщений: 12

07.10.2013, 11:14

3

Лучший ответ Сообщение было отмечено Владимир12 как решение

Решение

Pascal
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
Program abra;
Var
X : Array [1..20, 1..20] Of
real;
N : Integer;
P : Real;
i, j: Integer;
begin
WriteLn ('Вычисление произведения ');
Write ('Введите размерность:  N = ');
ReadLn (N);
WriteLn ('Введите элементы массива:');
For i := 1 To N Do
For j := 1 To N Do
Begin
Write ('X[', i, ',', j, '] = ');
ReadLn (X [i, j] );
End;
P := 1;
For i := 1 To N Do
For j := 1 To N Do
P := P * X [i, j];
if (X [i,j])=0 then writeln('присутствуют нулевые элементы')  else
WriteLn ('Произведение: P = ',p: 6: 1);
readln;
  end.



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. 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) – число строк в матрице.

    3. способ:
    4. 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
    1. Распечатать температуру на 2-й метеостанции за 4-й день и на 3-й метеостанции за 1-й день.
    2. Распечатать показания термометров всех метеостанций за 2-й день.
    3. Определить среднюю температуру на 3-й метеостанции.
    4. Распечатать, в какие дни и на каких метеостанциях температура была в диапазоне 24-26 градусов тепла.

    Задание Python 8_1:
    Написать программу поиска минимального и максимального элементов матрицы и их индексов.

    Задание Python 8_2:
    Написать программу, выводящую на экран строку матрицы, сумма элементов которой максимальна.

  • Для обработки элементов квадратной матрицы (размером N x N):
  • Для элементов главной диагонали достаточно использовать один цикл:
  • for i in range(N): 
       # работаем с matrix[i][i]
  • Для элементов побочной диагонали:
  • for i in range(N): 
       # работаем с matrix[i][N-1-i]

    Пример:Переставить 2-й и 4-й столбцы матрицы. Использовать два способа.

    ✍ Решение:
     

    1. for i in range(N): 
        c = A[i][2] 
        A[i][2] = A[i][4] 
        A[i][4] = c
    2. for i in range(N): 
        A[i][2], A[i][4] = A[i][4], A[i][2]

    Задание Python 8_3:
    Составить программу, позволяющую с помощью датчика случайных чисел сформировать матрицу размерностью N. Определить:

  • минимальный элемент, лежащий ниже побочной диагонали;
  • произведение ненулевых элементов последней строки.
  • Понравилась статья? Поделить с друзьями:
  • Как найти работу заряда в физике
  • Как найти наклон параболы
  • Assassin s creed revelations как исправить звук
  • Как составить свой герб школьнику
  • Как найти нейтроны зная протоны