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

Сложение и умножение матриц - C++

Восстановить пароль Регистрация
 
VladMAN
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 15
10.12.2012, 00:23     Сложение и умножение матриц #1
Даны квадратные матрицы A(nxn), B(nxn), C(nxn) написать программу вычисления (A+B)*C. Помогите со сложением и умножением

Вот мои наработки

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
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <conio.h>
#include <fstream>
#include <stdio.h>
#include "time.h"
#include <stdlib.h>
#include <ctime>
 
using namespace std;
 
int main()
{
setlocale(0, "");
int A[255][255];
printf("Enter N: ");
int N;
scanf("%d", &N);
srand(time(NULL));
for (int i=0; i<N; i++)
{
for (int j=0; j<N; j++)
{
A[i][j] = rand()%100;
printf("%d ", A[i][j]);
}
printf("\n");
}
int B[255][255];
printf("Enter M: ");
int M;
scanf("%d", &M);
srand(time(NULL));
for (int n=0; n<M; n++)
{
for (int m=0; m<M; m++)
{
B[n][m] = rand()%100;
printf("%d ", B[n][m]);
}
printf("\n");
}
int C[255][255];
printf("Enter V: ");
int V;
scanf("%d", &V);
srand(time(NULL));
for (int k=0; k<V; k++)
{
for (int p=0; p<V; p++)
{
C[k][p] = rand()%100;
printf("%d ", C[k][p]);
}
printf("\n");
}
int Q[255][255];
for (int r=0; r<N; r++)
{
for (int t=0; t<N; t++)
{
Q[r][t] = A + B;
}
cout << endl;
}
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vano47
2 / 2 / 0
Регистрация: 12.05.2012
Сообщений: 20
10.12.2012, 01:16     Сложение и умножение матриц #2
ну и чего у тебя возникли проблемы?

сумма:
C++
1
2
3
4
5
6
for (int r=0; r<N; r++)\\ и тут проверка нужна, что размерности матриц совпадают
{
for (int t=0; t<N; t++)
{
Q[r][t] = A[r][t] + B[r][t];
}}
умножение чуть посложней, но тоже реально

C++
1
2
3
4
5
6
7
for (int r=0; r<N; r++)
{
for (int t=0; t<N; t++)
{
for (int z=0; z<N; z++)
G[r][t] += A[r][z] * B[z][t];
}}}
не забудь сделать проверки, потму что при умножении матриц число строк должно совпадать с числом столбцов другой матрицы, вообщем подумаешь.
и в циклах фор, можешь исползовать i и j, ведь ты их всегда обнуляешь.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
10.12.2012, 01:19     Сложение и умножение матриц #3
Цитата Сообщение от vano47 Посмотреть сообщение
for (int r=0; r<N; r++)
{
for (int t=0; t<N; t++)
{
for (int z=0; t<N; t++)
G[r][t] = A[r][z] * B[z][t];
}}}
скорее
C++
1
2
3
4
5
6
7
for (int r=0; r<N; r++)
{
for (int t=0; t<N; t++)
{
for (int z=0; t<N; t++)
G[r][t] += A[r][z] * B[z][t];
}}}
vano47
2 / 2 / 0
Регистрация: 12.05.2012
Сообщений: 20
10.12.2012, 01:21     Сложение и умножение матриц #4
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
скорее
C++
1
2
3
4
5
6
7
for (int r=0; r<N; r++)
{
for (int t=0; t<N; t++)
{
for (int z=0; t<N; t++)
G[r][t] += A[r][z] * B[z][t];
}}}
да точно! исправил))
VladMAN
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 15
10.12.2012, 21:53  [ТС]     Сложение и умножение матриц #5
В общем я сделал всё так, но у меня появляется окно с прекращением работы программы. Почему так?
vano47
2 / 2 / 0
Регистрация: 12.05.2012
Сообщений: 20
11.12.2012, 18:59     Сложение и умножение матриц #6
Цитата Сообщение от VladMAN Посмотреть сообщение
В общем я сделал всё так, но у меня появляется окно с прекращением работы программы. Почему так?
какое окно? какой компилятор используете? результат выводиться? скрин можно выложить.
VladMAN
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 15
11.12.2012, 21:51  [ТС]     Сложение и умножение матриц #7
Вот оно
Миниатюры
Сложение и умножение матриц  
vano47
2 / 2 / 0
Регистрация: 12.05.2012
Сообщений: 20
11.12.2012, 22:55     Сложение и умножение матриц #8
хм.. не знаю что это((

напиши весь код.
VladMAN
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 15
12.12.2012, 19:18  [ТС]     Сложение и умножение матриц #9
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
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <conio.h>
#include <fstream>
#include <stdio.h>
#include "time.h"
#include <stdlib.h>
#include <ctime>
 
using namespace std;
 
int main()
{
     setlocale(0, "");
     int A[255][255];
     printf("Enter N: ");
     int N;
     scanf("%d", &N);
     srand(time(NULL));
     for (int i=0; i<N; i++)
     {
         for (int j=0; j<N; j++)
         {
             A[i][j] = rand()%100;
             printf("%d ", A[i][j]);
         }
         printf("\n");
     }
     int B[255][255];
     printf("Enter M: ");
     int M;
     scanf("%d", &M);
     srand(time(NULL));
     for (int n=0; n<M; n++)
     {
         for (int m=0; m<M; m++)
             {
                 B[n][m] = rand()%100;
                 printf("%d ", B[n][m]);
             }
         printf("\n");
     }
     int C[255][255];
     printf("Enter V: ");
     int V;
     scanf("%d", &V);
     srand(time(NULL));
     for (int k=0; k<V; k++)
     {
         for (int p=0; p<V; p++)
             {
                  C[k][p] = rand()%100;
                  printf("%d ", C[k][p]);
             }
           printf("\n");
      }
      int Q[255][255];
      for (int r=0; r<N; r++)
      {
          for (int t=0; t<N; t++)
          {
                 Q[r][t] = A[r][t] + B[r][t];
          }
          cout << endl;
      }
      int G[255][255];
      for (int y=0; y<N; y++)
      {
          for (int x=0; x<N; x++)
          {
              G[y][x] = Q[y][x] * C[y][x];
          }
          cout << endl;
      }
    return 0;
}
Проверь у себя, может это у меня с компом что-то
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
12.12.2012, 19:26     Сложение и умножение матриц #10
1) 5 матриц 255 на 255 лучше не выделять в стеке, а выделять динамически
2) убрать бардак из подключаемых заголовков. Достаточно <cstdio>, <ctime> и <cstdlib>
3) так работает
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
#include <cstdio>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
     int A[25][25];
     printf("Enter N: ");
     int N;
     scanf("%d", &N);
     srand(time(NULL));
     for (int i=0; i<N; i++)
     {
         for (int j=0; j<N; j++)
         {
             A[i][j] = rand()%100;
             printf("%d ", A[i][j]);
         }
         printf("\n");
     }
     int B[25][25];
     printf("Enter M: ");
     int M;
     scanf("%d", &M);
     srand(time(NULL));
     for (int n=0; n<M; n++)
     {
         for (int m=0; m<M; m++)
             {
                 B[n][m] = rand()%100;
                 printf("%d ", B[n][m]);
             }
         printf("\n");
     }
     int C[25][25];
     printf("Enter V: ");
     int V;
     scanf("%d", &V);
     srand(time(NULL));
     for (int k=0; k<V; k++)
     {
         for (int p=0; p<V; p++)
             {
                  C[k][p] = rand()%100;
                  printf("%d ", C[k][p]);
             }
           printf("\n");
      }
      int Q[255][255];
      for (int r=0; r<N; r++)
      {
          for (int t=0; t<N; t++)
          {
                 Q[r][t] = A[r][t] + B[r][t];
          }
          
      }
      int G[255][255];
      for (int y=0; y<N; y++)
      {
          for (int x=0; x<N; x++)
          {
              G[y][x] = Q[y][x] * C[y][x];
          }
      }
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2012, 17:58     Сложение и умножение матриц
Еще ссылки по теме:

Умножение, сложение и транспонирование матриц C++
C++ Ввод, транспонирование, умножение и сложение матриц используя функций
C++ Матрицы и вектора, сложение и умножение

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

Или воспользуйтесь поиском по форуму:
VladMAN
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 15
13.12.2012, 17:58  [ТС]     Сложение и умножение матриц #11
Да спасибо работает. Но только прога выводит матрицы. А Сложение и умножение не считает. Может кто подскажет как по другому сделать. А выражение такое (A+B)*C
Yandex
Объявления
13.12.2012, 17:58     Сложение и умножение матриц
Ответ Создать тему
Опции темы

Текущее время: 10:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru