Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
firebird33
0 / 0 / 3
Регистрация: 10.12.2013
Сообщений: 8
#1

Проверить ассоциативность при умножении матриц - C++

23.03.2014, 01:52. Просмотров 385. Ответов 2
Метки нет (Все метки)

Делаю лабораторную с дискретной математики. Нужно проверить ассоциативность при умножении матриц.
То есть в моем случае:
M1* M2 = M2 * M1
Если тождество выполняется - вывести сообщение, что ассоциативный закон выполняется, нет - вывести, что не выполняется.
Программа работает, матрицы умножаются правильно, но сообщение почему-то не выводится. Помогите, пожалуйста.
Вот код:
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include <iostream>
using namespace std;
int main()
{
int a,b,c,d,i,j;
cout<<"Vvedit' rozmirnist' 1 matryci: " ;
cin>> a >> b;
cout<<"Vvedit' rozmirnist' 2 matryci: " ;
cin >> c >> d;
int **M1 = new int*[a];
for ( int i = 0; i < a ; i++)
    M1[i] = new int [b];
int **M2 = new int*[c];
for ( int i = 0; i < c ; i++)
    M2[i] = new int [d];
int **M3 = new int*[a];
for ( int i = 0; i < a ; i++)
    M3[i] = new int [d];
int **M4 = new int*[c];
for ( int i = 0; i < a ; i++)
    M4[i] = new int [b];
system ("cls");
cout << "Enter 1 matrix: " << a << "x" << b << endl;
for ( int i = 0; i <a; i++)
{
    for (int j = 0; j < b; j++)
    {
        cin >> M1[i][j];
    }
}
for ( int i = 0; i < a; i++)
{
    for (int j = 0; j < d; j++)
    {
        M3[i][j] = 0;
    }
}
for ( int i = 0; i < c; i++)
{
    for (int j = 0; j < b; j++)
    {
        M4[i][j] = 0;
    }
}
system ("cls");
cout << "Enter 2 matrix: " << c << "x" << d << endl;
for ( int i = 0; i <c; i++)
{
    for (int j = 0; j < d; j++)
    {
        cin >> M2[i][j];
    }
}
system  ("cls");
for ( int i = 0; i < a; i++)
{
    for (int j = 0; j < d; j++)
    {
        for (int m = 0; m < b; m++)
        {
            M3[i][j] += M1[i][m]*M2[m][j];
        }
    }
}
for ( int i = 0; i < c; i++)
{
    for (int j = 0; j < b; j++)
    {
        for (int n = 0; n < d; n++)
        {
            M4[i][j] += M2[i][n]*M1[n][j];
        }
    }
}
for ( int i = 0; i < a; i++)
{
    for (int j = 0; j < d; j++)
    {
        cout << M3[i][j] << " "  ;
    }
    cout << endl;
}
cout << endl;
for ( int i = 0; i < c; i++)
{
    for (int j = 0; j < b; j++)
    {
        cout << M4[i][j] << " " ;
    }
    cout << endl;
}
if((M3[i][j])==(M4[i][j])) 
    cout << "Asoziatyvnyi zakon vykonuet'sa" << endl;
else
    cout << "Asoziatyvnyi zakon ne vykonuet'sa" << endl;
for (int i = 0; i < a; i++)
    delete [] M1[i];
delete [] M1;
for (int i = 0; i < c; i++)
    delete [] M2[i];
delete [] M2;
for (int i = 0; i < a; i++)
    delete [] M3[i];
delete [] M3;
for (int i = 0; i < c; i++)
    delete [] M4[i];
delete [] M4;
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2014, 01:52
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Проверить ассоциативность при умножении матриц (C++):

Неверный результат при умножении двух матриц
Здравствуйте. Проблема возникла, не могу понять что я сделал не так при...

При умножении матриц результат равен нулю
При умножении матриц мне вместо нормального ответа выводит нули, почему?...

Не могу найти ошибку при умножении 2х матриц
Доброго времени суток! Помогите найти ошибку в матрице, который час сижу и не...

Исправить ошибку из-за которой приложение падает при умножении матриц
Привет прогеры! Объясните обезьяне почему у меня кидает exeption программа при...

Найти все двузначные числа, которые при умножении на 2 заканчиваются на 8, а при умножении на 3 - на 4.
Привет мозги, нужно решить задачу по Си++. Найти все двузначные числа, которые...

Ошибка при умножении
Надо найти: Произведение элементов массива, расположенных между максимальным и...

2
Arkaniy
106 / 106 / 21
Регистрация: 29.08.2012
Сообщений: 453
23.03.2014, 02:00 #2
Ну дак сравнение массивов вообще непонятно как происходит.
C++
1
2
3
4
5
6
7
8
9
bool check = true;
for (int i = 0; i < SIZE; i++)
    for (int j = 0; j < SIZE; j++)
        if ((M3[i][j]) != (M4[i][j]))
            check = false; 
if (check)
    cout << "Asoziatyvnyi zakon vykonuet'sa" << endl;
else
    cout << "Asoziatyvnyi zakon ne vykonuet'sa" << endl;
В цикле ведь нужно сравнивать поэлементно.
1
vlad3996
6 / 6 / 4
Регистрация: 27.10.2013
Сообщений: 14
23.03.2014, 02:11 #3
Массивы не поэлементно сравниваются...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
bool flag=true;
for ( int i = 0; i < a; i++)
    {
        for (int j = 0; j < d; j++)
        {
            if((M3[i][j])!=(M4[i][j])) 
                flag=false;
        }
    }
if(flag)
       cout << "Asoziatyvnyi zakon vykonuet'sa" << endl;
else
    cout << "Asoziatyvnyi zakon ne vykonuet'sa" << endl;
p.s строка 19-20
C++
1
2
int **M4 = new int*[c];
for ( int i = 0; i < с ; i++)
p.p.s у тебя нет проверки на то, что количество столбцов в первой совпадает с кол-вом строк во 2й.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2014, 02:11
Привет! Вот еще темы с решениями:

Ошибка при умножении
Возникла проблема не понимаю почему при умножении 567 * 900 = 50103, (программа...

Для матриц I=2P-E, где Е-единичная матрица,а Р=Р(n,n), проверить св-во I^2=Е.При помощи метода Гаусса решить СЛАУ Ix=y, где вектор состоит из единиц.
Добрый день!Помогите пожалуйста с решением данной задачи: Задание: Необходимо...

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

Почему при умножении на 0, программа работает правильно?
Операции ввода, такие, как cin, должны уметь преобразовывать последо-...


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

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

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