Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.83
VВладимир
1 / 1 / 0
Регистрация: 08.10.2012
Сообщений: 50
#1

Перемножить 2 матрицы - C++

08.10.2012, 21:39. Просмотров 2246. Ответов 16
Метки нет (Все метки)

Здравствуйте! Пытаюсь перемножить 2 матрицы размерности 4х4 на С++, однако при выводе результирующей матрицы появляется матрица, состоящая из четырех одинаковых строк, чего быть не должно, должна появиться матрица, состоящая из 16 разных значений. Подскажите, пожалуйста, что я делаю не так. (сообщения об ошибке компиляции при этом не возникает)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 //Код перемножения матриц:
for(i = 0; i < 4; i++)
{
for(j = 0; j < 4; j++)
{SMatrix[i][j] = 0;
for(k = 0; k < 4; k++)
{
SMatrix[i][j] += vhodMatrix[k][j]*sinapsMatrix[i][k];
}
}
}
 
//Вывод результирующей матрицы:
SMatrix[1][4] = 0;
for(i = 0; i < 4; i++)
{
for(j = 0; j < 4; j++)
{
cout << SMatrix[i][j] << ", ";
}
cout << endl;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2012, 21:39     Перемножить 2 матрицы
Посмотрите здесь:

Перемножить матрицы - C++
Помогите написать код: :)

Перемножить две матрицы - C++
Сформировать два одномерных массива целочисленных из 10 элементов каждый, а потом сформировать матрицу MxN элементами которого являются...

Заданы матрицы А, В, С, D, каждая из которых содержит по три строчки и по три столбца. Перемножить матрицы Р и Q - C++
Заданы матрицы А, В, С, D, каждая из которых содержит по три строчки и по три столбца. Перемножить матрицы Р и Q, полученные в результате...

Перемножить матрицы произвольного размера - C++
#include &lt;iostream&gt; using std::cin; using std::cout; using std::endl; int main() { int n,m,c,r; //...

Как правильно перемножить матрицы? - C++
помогите, пожалуйста, дописать программу. Не могу разобраться, как перемножить матрицы #include &lt;cstdlib&gt; #include &lt;iostream&gt; ...

Перемножить все отрицательные элементы матрицы - C++
Привет всем!! Как сделать, если в строке встречается все отрицательные элементы то произошло их умножение? #include &lt;iostream&gt; ...

Считать с файла две матрицы и перемножить их - C++
Считать с файла две матрицы и перемножить их

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Евгений89
99 / 99 / 9
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
08.10.2012, 21:54     Перемножить 2 матрицы #2
кидай полностью код

Добавлено через 3 минуты
а то так толком не понятно
defer
秘密
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
08.10.2012, 21:56     Перемножить 2 матрицы #3
C++
1
2
3
4
5
6
7
for(i = 0; i < 4; i++)
{
   for(j = 0; j < 4; j++)
   {
        SMatrix[i][j] = vhodMatrix[i][j]*sinapsMatrix[i][j];
   }
}
Евгений89
99 / 99 / 9
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
08.10.2012, 21:59     Перемножить 2 матрицы #4
SMatrix[1][4] = 0; почему у тебя здесь числа поставь i и j

Добавлено через 3 минуты
SMatrix[i][j] = vhodMatrix[i][j]*sinapsMatrix[i][j]; тут перед равно должен плюс стоять
VВладимир
1 / 1 / 0
Регистрация: 08.10.2012
Сообщений: 50
08.10.2012, 22:02  [ТС]     Перемножить 2 матрицы #5
Спасибо за ответ, выкладываю полный код:
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <windows.h> 
#include <iostream>
 
char bufRus[256];
 
char* Rus(const char* text) {
      CharToOem(text, bufRus);
      return bufRus;
      }
int i, j, k;      
using namespace std;
char h;
float n;
 
int main()
{
   float SMatrix[j][i]; 
   
   cout << Rus("Вывод значений матрицы синаптических весов нейронов W")<< endl;
float sinapsMatrix[4][4] = {{0.42, 1, 0.4, 0.5}, //Ввод матрицы W -синаптических весов нейронов
{0.09, 0, 0.3, 0.2},
{0.33, 0, 0.2, 0.2},
{0.17, 0, 0.1, 0.1}};
 
sinapsMatrix[1][4] = 0;
 
for(k = 0; k < 4; k++)
{
for(j = 0; j < 4; j++)
{
cout << sinapsMatrix[k][j] << ", ";
}
 
cout << endl;
}
 
cout << h << endl;
float vhodMatrix[4][4] = {{321.6, 380, -6.7, 80}, 
{381.6, 480, -7.8, 85},
{330.8, 550, -3.9, 80},
{302.3, 500, -5, 80}};
 
 
cout << Rus("Вывод значений матрицы входных параметров Х")<< endl;
 
 
vhodMatrix[1][4] = 0;
 
for(i = 0; i < 4; i++)
{
for(k = 0; k < 4; k++)
{
cout << vhodMatrix[i][k] << ", ";
}
 
cout << endl;
}
 
//Операция перемножения матрицы W и матрицы X 
 
for(i = 0; i < 4; i++)
{
for(j = 0; j < 4; j++)
{SMatrix[i][j] = 0;
for(k = 0; k < 4; k++)
{
SMatrix[i][j] += vhodMatrix[k][j]*sinapsMatrix[i][k];
}
}
}
 
//Вывод решения перемножения матрицы W и матрицы X - значений матрицы текущего состояния сети S=W*X "
cout << Rus("Расчет значений матрицы текущего состояния сети S=W*X ")<< endl;
SMatrix[i][j] = 0;
for(i = 0; i < 4; i++)
{
for(j = 0; j < 4; j++)
{
cout << SMatrix[i][j] << ", ";
}
cout << endl;
} 
 system("pause"); 
 return 0;
}
defer
秘密
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
08.10.2012, 22:04     Перемножить 2 матрицы #6
Цитата Сообщение от Евгений89 Посмотреть сообщение
SMatrix[i][j] = vhodMatrix[i][j]*sinapsMatrix[i][j]; тут перед равно должен плюс стоять
зачем ???
Евгений89
99 / 99 / 9
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
08.10.2012, 22:07     Перемножить 2 матрицы #7
по тому что в этот массив будет забиваться произведение двух других массивов
defer
秘密
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
08.10.2012, 22:09     Перемножить 2 матрицы #8
Цитата Сообщение от Евгений89 Посмотреть сообщение
по тому что в этот массив будет забиваться произведение двух других массивов
и зачем там плюс?
Евгений89
99 / 99 / 9
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
08.10.2012, 22:15     Перемножить 2 матрицы #9
Цитата Сообщение от defer Посмотреть сообщение
и зачем там плюс?
для увеличения
VВладимир
1 / 1 / 0
Регистрация: 08.10.2012
Сообщений: 50
08.10.2012, 22:16  [ТС]     Перемножить 2 матрицы #10
Все поправил, как вы написали, но это все равно не помогает
defer
秘密
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
08.10.2012, 22:18     Перемножить 2 матрицы #11
Цитата Сообщение от Евгений89 Посмотреть сообщение
для увеличения
Зачем увеличивать если значение 0 и прибавляем число к 0? Проще сразу заменить число
Евгений89
99 / 99 / 9
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
08.10.2012, 22:19     Перемножить 2 матрицы #12
SMatrix[1][4] = 0; тут та почему опять цифры
defer
秘密
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
08.10.2012, 22:19     Перемножить 2 матрицы #13
Цитата Сообщение от VВладимир Посмотреть сообщение
Все поправил, как вы написали, но это все равно не помогает
Покажите что получилось после исправления
Евгений89
99 / 99 / 9
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
08.10.2012, 22:31     Перемножить 2 матрицы #14
снаало проверяется условие SMatrix[i][j] = 0 с текущими значениями
выполняется команда i++ что приводит к увеличению на 1 потом снова проверяется условие
SMatrix[i][j] += vhodMatrix[i][j]*sinapsMatrix[i][j];
процесс будет до тех пор пока не привысит i и j задоного значения в твоем случае 4
после чего значение SMatrix[i][j] определяется суммой умножения чисел забитых в двух других массивах
зто значение выводится на экран как ни крути матрица у тебя будет на выводе 4х4 цифры только поменяются
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2012, 10:27     Перемножить 2 матрицы
Еще ссылки по теме:

Перемножить положительные элементы первого столбца полученной матрицы - C++
В заданной матрице переставить в каждой строке 1-й и минимальный элементы. Перемножить положительные элементы первого столбца полученной...

Ввести с клавиатуры две целочисленные матрицы, и перемножить их друг на друга - C++
Доброго времени суток ув. люди. Так случилось, что учился я несколько курсов в одном у.з. и перешел другой. В одном изучали...

Перемножить две матрицы, причем запустить подсчет в несколько потоков - C++
Всем привет. Суть задания перемножить две матрицы, причем запустить подсчет в несколько потоков, в разное кол-во, сравнить время выполнения...

Перемножить попарно элементы строки, в которой расположен максимум матрицы, на элементы столбца - C++
В данной матрице найти наибольший элемент и перемножить попарно элементы строки , в которой он расположен , на элемент столбца в котором он...

Перемножить матрицу и вектор - C++
Перемножить матрицу А(nxm) и вектор, В(n), найти сумму элементов и максим. элемент результирующего столбца. Распечатать матрицу и вектор в...


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

Или воспользуйтесь поиском по форуму:
VВладимир
1 / 1 / 0
Регистрация: 08.10.2012
Сообщений: 50
13.10.2012, 10:27  [ТС]     Перемножить 2 матрицы #15
Все равно алгоритм не работает. Бьюсь, бьюсь, ничего не получается, выводится одна строка и потом 4 раза повторяется то есть 4 знаяения повторяются 4 раза, а должно быть 16 разных значений
Yandex
Объявления
13.10.2012, 10:27     Перемножить 2 матрицы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru