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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.78
Ruslansis
 Аватар для Ruslansis
0 / 0 / 0
Регистрация: 01.10.2009
Сообщений: 67
11.02.2010, 17:08     Сложение двух матриц #1
Сложение двух матриц. Приведите пожалуйста простой пример...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2010, 17:08     Сложение двух матриц
Посмотрите здесь:

C++ Классы, конструктор, сложение двух матриц
сложение двух матриц C++
C++ сложение двух матриц
C++ Сложение двух матриц
Матрица и функция (Сложение двух матриц функцией sum) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Shim
 Аватар для Shim
25 / 25 / 1
Регистрация: 21.11.2009
Сообщений: 159
11.02.2010, 17:18     Сложение двух матриц #2
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#define N 3
#define M 3
#define A 1
#define B 6
 
void main()
{
    double a[N][M],b[N][M];
    srand(time(0));
    for (int i=0;i<N;i++)
    for (int j=0;j<M;j++)
    {
        a[i][j]=(double)rand()/RAND_MAX*(B-A)+A;
        b[i][j]=(double)rand()/RAND_MAX*(B-A)+A;
    }
    double c[N][M];
    for (int i=0;i<N;i++)
    for (int j=0;j<M;j++)
        c[i][j]=a[i][j]+b[i][j];
    for (int i=0;i<N;i++)
    {
        printf("|");
        for (int j=0;j<M;j++)
            printf(j==M-1?"%5.2lf|":"%5.2lf ",a[i][j]);
        printf(i==N/2?"+":" ");
        printf("|");
        for (int j=0;j<M;j++)
            printf(j==M-1?"%5.2lf|":"%5.2lf ",b[i][j]);
        printf(i==N/2?"=":" ");
        printf("|");
        for (int j=0;j<M;j++)
            printf(j==M-1?"%5.2lf|\n":"%5.2lf ",c[i][j]);
    }
    getch();
}
Ruslansis
 Аватар для Ruslansis
0 / 0 / 0
Регистрация: 01.10.2009
Сообщений: 67
11.02.2010, 18:33  [ТС]     Сложение двух матриц #3
Спасибо Shim !А есть еще подобный пример? По короче этого?
Shim
 Аватар для Shim
25 / 25 / 1
Регистрация: 21.11.2009
Сообщений: 159
11.02.2010, 21:39     Сложение двух матриц #4
Цитата Сообщение от Ruslansis Посмотреть сообщение
Спасибо Shim !А есть еще подобный пример? По короче этого?
эээм..короче этого нету. я не настолько хорошо разбираюсь, что то элементарное могу написать) подобный пример есть(3 in 1): cложение/вычитание/умножение матриц.
Ruslansis
 Аватар для Ruslansis
0 / 0 / 0
Регистрация: 01.10.2009
Сообщений: 67
16.02.2010, 22:08  [ТС]     Сложение двух матриц #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
#include <conio.h>
#include <iostream.h>
#include <stdio.h>
#include <math.h>
 
void main()
 {
 double MAS[100][100], A[100][100], B[100][100];
  int n;
  int i,j,p;
cout<<"n = "; cin>>n;
cout<<"matrica A"<<endl;
    for (int i=1;i<=n;i++)
 { for (int j=1;j<=n;j++)
 
 cout<<A[i][j]<<" | "; }
cout<<"matrica B"<<endl;
   for (int i=1;i<=n;i++)
 { for (int j=1;j<=n;j++)
cout<<B[i][j]<<" | "; }
 
           // .............................................
cout<<"matrica A"<<endl;
   for (int i=1;i<=n;i++)
 { for (int j=1;j<=n;j++)
 
 cout<<A[i][j]<<" | ";
cout<<endl; }
 
cout<<"matrica B"<<endl;
    for (int i=1;i<=n;i++)
    { for (int j=1;j<=n;j++)
cout<<B[i][j]<<" | ";
cout<<endl; }
         //..................................................
 
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
for (i=1;i<=n;i++)
// MAS[i][p]=0;
for (p=1;p<=n;p++)
for (j=1;j<=n;j++)
 
MAS[i][p]=MAS[i][p]+A[i][j]*B[j][p];
cout<<"Proizvedenie matrizy: " <<MAS[i][p];
 
 getch();  }
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
17.02.2010, 12:30     Сложение двух матриц #6
Во-первых отсутствует ввод значений массивов
Во-вторых выходной массив должен быть инициализирован нулями, это можно сделать при объявлении
C++
1
double MAS[100][100] = {0};
В-третьих убери 37-40 строки.
Shim
 Аватар для Shim
25 / 25 / 1
Регистрация: 21.11.2009
Сообщений: 159
20.02.2010, 14:59     Сложение двух матриц #7
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
#define _USE_MATH_DEFINES
#define N 3
#define M 3
#define A 0
#define B 9
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
 
void main()
{
//генерируем матрицы
double a[N][M], b[N][M];
srand(time(0));
for (int i=0; i<N; i++)
for (int j=0; j<M; j++)
 {a[i][j]=(double)rand()/RAND_MAX*(B-A)+A;
  b[i][j]=(double)rand()/RAND_MAX*(B-A)+A;
 }
double res[N][M];
//умножаем
 {for (int i=0; i<N; i++)
  for (int j=0; j<M; j++)
  {res[i][j] = 0;
         for(int k = 0; k < N; k++)
         res[i][j] += (a[i][k] * b[k][j]);}
 }
//выводим на экран
for (int i=0; i<N; i++)
 {printf("|");
  for (int j=0; j<M; j++)
   printf(j==M-1?"%.1lf|":"%.1lf ", a[i][j]);
    printf(i==N/2?"%c":" ", '*');
  
 printf("|");
  for (int j=0; j<M; j++)
   printf(j==M-1?"%.1lf|":"%.1lf ", b[i][j]);
    printf(i==N/2?"=":" ");
  
 printf("|");
  for (int j=0; j<M; j++)
   printf(j==M-1?"%.1lf| \n":"%.1lf ", res[i][j]);
  }
getch();
}
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
20.02.2010, 15:04     Сложение двух матриц #8
kazak,
Цитата Сообщение от kazak Посмотреть сообщение
Во-вторых выходной массив должен быть инициализирован нулями, это можно сделать при объявлении
C++
1
double MAS[100][100] = {0};
Это не совсем верно, здесь ты инициализировал нулем лишь первый элемент MAS.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
20.02.2010, 15:09     Сложение двух матриц #9
C++
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <conio.h>
int main(){
double MAS[100][100] = {0}; 
/*И все остальные нулем потому что так делает компилятор, если человек не написал инициализации остальных значений. 
double MAS[100][100] = {5};     //1 равен пяти все остальные нулю.
*/
printf("%d",MAS[22][22]);
 
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2010, 13:33     Сложение двух матриц
Еще ссылки по теме:

Произвести сложение двух массивов 5х3 по правилам сложения матриц C++
C++ Сложение двух одномерных матриц поэлементно (проверьте код)
Сложение двух матриц 2x2 C++

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

Или воспользуйтесь поиском по форуму:
Ruslansis
 Аватар для Ruslansis
0 / 0 / 0
Регистрация: 01.10.2009
Сообщений: 67
22.02.2010, 13:33  [ТС]     Сложение двух матриц #10
Спасибо люди...
Yandex
Объявления
22.02.2010, 13:33     Сложение двух матриц
Ответ Создать тему
Опции темы

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