1 / 1 / 0
Регистрация: 22.04.2014
Сообщений: 22
1

Функция перемножения матриц, с классом для выражения матриц

17.06.2014, 19:46. Показов 1522. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот поставленная задача:
Написать функцию, которая будет вычислять произведению двух матриц, или говорить о том что это сделать невозможно. Описать класс для хранения матрицы Матрицы будут передаваться в качестве параметров функции. Функция также должна возвращать матрицу;
Вот класс для матриц
Кликните здесь для просмотра всего текста
C#
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
27
28
29
30
31
32
class matrix
    {
        public int[,] a = new int[128, 128];
        public int n;
        public int m;
        public void fill()
        {
            Random r = new Random();
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                { a[i, j] = r.Next(-9, 9); };
            }
        }
        public void printout()
        {
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    Console.WriteLine(a[i, j] + " ");
                }
                Console.WriteLine();
 
            }
        }
        public matrix(int n, int m)
        {
            this.n = n;
            this.m = m;
        }
    }

Я нашла код для перемножения матриц, но как свести эти а и б вместе?
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 public static int[,] Multiply_matrix(int[,] array1, int[,] arrary2)
        {
            if (array1.GetLength(1) != arrary2.GetLength(0))
                throw new ArgumentException("Invalid arrays length");
            int commonLength = array1.GetLength(1);
 
            int[,] res = new int[array1.GetLength(0), arrary2.GetLength(1)];
 
            for (int i = 0; i < res.GetLength(0); i++)
            {
                for (int j = 0; j < res.GetLength(1); j++)
                {
                    int nextVal = 0;
                    for (int k = 0; k < commonLength; k++)
                    {
                        nextVal += array1[i, k] * arrary2[k, j];
                    }
                    res[i, j] = nextVal;
                    Console.Write("{0} ", res[i, j]);
                }
                Console.WriteLine();
            }
            return res;
        }


Добавлено через 13 минут
Вот то, что я смогла переделать, но он ругается.
C#
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
{
    class matrix
    {
        public int[,] a = new int[128, 128];
        public int n;
        public int m;
        public void fill()
        {
            Random r = new Random();
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                { a[i, j] = r.Next(-9, 9); };
            }
        }
        public void printout()
        {
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    Console.WriteLine(a[i, j] + " ");
                }
                Console.WriteLine();
 
            }
        }
        public matrix(int n, int m)
        {
            this.n = n;
            this.m = m;
        }
    }
    class Program
    {
        static matrix Multiply_matrix(matrix[,] array1, matrix[,] arrary2)
        {
            if (array1.GetLength(1) != arrary2.GetLength(0))
                throw new ArgumentException("Вычислить невозмжно");
            int commonLength = array1.GetLength(1);
 
            matrix[,] res = new matrix[array1.GetLength(0), arrary2.GetLength(1)];
 
            for (int i = 0; i < res.GetLength(0); i++)
            {
                for (int j = 0; j < res.GetLength(1); j++)
                {
                    int nextVal = 0;
                    for (int k = 0; k < commonLength; k++)
                    {
                        nextVal += array1[i, k] * arrary2[k, j];
                    }
                    res[i, j] = nextVal;
                    Console.Write("{0} ", res[i, j]);
                }
                Console.WriteLine();
            }
            return res;
        }
        static void Main(string[] args)
        {
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.06.2014, 19:46
Ответы с готовыми решениями:

Функция перемножения матриц.
Функция mult, прошу помощи, ибо не пойму в чем ошибка. #include &lt;iostream&gt; #include &lt;math.h&gt;...

Функция перемножения матриц выдает неверный результат
int **mas_1; int **mas_2; int **mas_3;//глобальные void multiply(int row1, int col1, int row2,...

Алгоритм Штрассена для быстрого перемножения матриц
Помогите реализовать алгоритм Штрассена! Может у кого нибудь есть исходник на С++? Если не...

Составить программу для перемножения двух матриц
1.Составить программу для перемножения двух матриц 2.Составить программу для подсчета количества...

2
Эксперт .NET
5531 / 4296 / 1216
Регистрация: 12.10.2013
Сообщений: 12,329
Записей в блоге: 2
18.06.2014, 07:17 2
Kaiser Funf, я вчера вечером начал набросок вашей задачи, сегодня, если до этого времени никто не подскажет, закончу и покажу.
0
1 / 1 / 0
Регистрация: 22.04.2014
Сообщений: 22
18.06.2014, 08:39  [ТС] 3
Спасибо, но уже решили.))))
0
18.06.2014, 08:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.06.2014, 08:39
Помогаю со студенческими работами здесь

Функции и процедуры. Составить подпрограмму для перемножения матриц
Составить программу, содержащую подпрограмму для перемножения матриц. Предусмотреть контроль...

Какой максимальный размер матриц можно задать для перемножения?
Привет кодеры! Тут вопрос такой. Решил я перемножить матрицы и заинтересовался какой максимальный...

Программа для ввода двух квадратных матриц, их перемножения и вывода результирующей
Очень срочно!Помогите пожалуйста написать программу на языке Паскаль: Напишите программу для ввода...

Перегрузить operator*() для перемножения матриц (объекты пользовательского типа Matrix)
Помогите доделать программу. Там нужно всего пару ошибок исправить... У меня уже мозг взрывается(((...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru