Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 15
1

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

10.12.2012, 00:23. Показов 2403. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Даны квадратные матрицы 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;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.12.2012, 00:23
Ответы с готовыми решениями:

Сложение и умножение матриц
Даны матрицы A,B,C порядка n. Найти матрицу D=(A+B)C

Умножение, сложение и транспонирование матриц
помогите написать программу на языке с++ которая выполняет умножение, сложение и транспонирование...

Реализовать сложение, вычитание, умножение матриц
Помогите, пожалуйста, с заданием. Пользователь задаёт размерность n, матрицы n*n задаются...

Ошибка в коде (сложение, вычитание, умножение матриц)
#include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;iomanip&gt; #include&lt;cstdlib&gt; using namespace std; ...

10
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, ведь ты их всегда обнуляешь.
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 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];
}}}
1
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];
}}}
да точно! исправил))
1
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 15
10.12.2012, 21:53  [ТС] 5
В общем я сделал всё так, но у меня появляется окно с прекращением работы программы. Почему так?
0
2 / 2 / 0
Регистрация: 12.05.2012
Сообщений: 20
11.12.2012, 18:59 6
Цитата Сообщение от VladMAN Посмотреть сообщение
В общем я сделал всё так, но у меня появляется окно с прекращением работы программы. Почему так?
какое окно? какой компилятор используете? результат выводиться? скрин можно выложить.
0
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 15
11.12.2012, 21:51  [ТС] 7
Вот оно
Миниатюры
Сложение и умножение матриц  
0
2 / 2 / 0
Регистрация: 12.05.2012
Сообщений: 20
11.12.2012, 22:55 8
хм.. не знаю что это((

напиши весь код.
1
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;
}
Проверь у себя, может это у меня с компом что-то
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 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;
}
0
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 15
13.12.2012, 17:58  [ТС] 11
Да спасибо работает. Но только прога выводит матрицы. А Сложение и умножение не считает. Может кто подскажет как по другому сделать. А выражение такое (A+B)*C
0
13.12.2012, 17:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2012, 17:58
Помогаю со студенческими работами здесь

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

Ввод, транспонирование, умножение и сложение матриц используя функций
Есть две матрицы, каждую из них надо транспонировать и умножить на себя, полученные две матрицы...

Задано 4 матрицы. Провести сложение, умножение, умножение на число
Задано 4 матрицы A,B,C,D размером 4х4.Вычеслить такие матрицы: F,G,T. G=3/4 A+B F=B*(2D) T=c/5

Умножение треугольных матриц«Методы обработки разреженных матриц»
Нужно перемножить треугольные матрицы в обычном виде и в свёрнутом. С обычным проблем нет. Доступ...

Возведение матриц в степени, перемножение и сложение матриц
Даны 3-ех элементные вещественные векторы x и y и квадратные матрицы A и B. Вычислить: (A 2 * x,...

Сложение, вычитание, умножение
Доброго времени суток! Помогите с задачей: Написать функцию, которая складывает, вычитает или...


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

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