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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.70
АЛЕКСЕЙ_92
3 / 3 / 0
Регистрация: 01.06.2014
Сообщений: 130
#1

Операции над матрицами-сложение, вычитание, умножение на число - C++

01.06.2014, 12:12. Просмотров 2953. Ответов 54
Метки нет (Все метки)

Здравствуйте,помогите пожалуйста по такой проблемке-в С++ надо создать матрицу и действия над ней..буду очень благодарен кто поможет.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2014, 12:12     Операции над матрицами-сложение, вычитание, умножение на число
Посмотрите здесь:
C++ Структуры: арифметические операции (сложение, вычитание, умножение, деление) над комплексными числами
Организовать ввод двух вещественных чисел и операции над ними: сложение, вычитание, умножение и деление C++
C++ Операции с комплексными числами. Проконсультируйте. (аргумент, модуль, сложение, умножение, вычитание)
C++ Нужны советы как реализовать сложение, вычитание, умножение полиномов/многочленов и деление на число
C++ Сложение, вычитание, умножение
Нестандартное сложение, вычитание, умножение и деление C++
Сложение и вычитание, умножение и деление, сравнение сумм C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
АЛЕКСЕЙ_92
3 / 3 / 0
Регистрация: 01.06.2014
Сообщений: 130
05.06.2014, 11:58  [ТС]     Операции над матрицами-сложение, вычитание, умножение на число #21
Необработанное исключение в "0x7556b727" в "matrix.exe": Исключение Microsoft C++: std::out_of_range по адресу 0x0049f924..

Добавлено через 1 минуту
да я тоже додумался но вылазит в консоли после ввода 3 цифры вот ошибка

Добавлено через 11 минут
Debug Error!

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
(Press Retry to debag the application)
АЛЕКСЕЙ_92
3 / 3 / 0
Регистрация: 01.06.2014
Сообщений: 130
06.06.2014, 22:28  [ТС]     Операции над матрицами-сложение, вычитание, умножение на число #22
ребят ну помогите подправить пожалуйста.
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 664
07.06.2014, 03:17     Операции над матрицами-сложение, вычитание, умножение на число #23
АЛЕКСЕЙ_92, Вот попробовал написать программу. Да раскритикуют меня профессионалы
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
#include <iostream>
#include <conio.h>
using namespace std;
 
int i,j,k,l;
 
void sum_matrix(int *a[], int *b[], int n, int m, int p, int r){
 
    for(i = 0;i < n;i++){
        for(j = 0;j < m;j++){
            for(k = 0;k < p;k++){
                for(l = 0;l < r;l++){
                    a[i][j] + b[k][l];
                }
            }
        }
    }
}
void sub_matrix(int *a[], int *b[], int n, int m, int p, int r){
    for(i = 0;i < n;i++){
        for(j = 0;j < m;j++){
            for(k = 0;k < p;k++){
                for(l = 0;l < r;l++){
                    a[i][j] - b[k][l];
                }
            }
        }
    }
}
void mult_matrix(int *a[], int n, int m, int q){
 
    for(i = 0;i < n;i++){
        for(j = 0;j < m;j++)
            q * a[i][j];
    }
}
int main()
{
    int n,m,p,r,q;
    cin >> n;
    cin >> m;
    cin >> p;
    cin >> r;
    cin >> q;
 
    int **a = new int *[n];
    for(i = 0; i < n;i++)
        a[i] = new int[m];
    for(i = 0;i < n;i++){
        for(j = 0;j < m;j++)
            cin >> a[i][j];
    }
        int **b = new int *[p];
        for(k = 0;k < p;k++)
            b[k] = new int[r];
        for(k = 0;k < n;k++){
            for(l = 0;l < r;l++)
                cin >> b[k][l];
        }
            sum_matrix(a, b, n, m, p, r);
            sub_matrix(a, b, n, m, p, r);
            mult_matrix(a, n, m, q);
 
            delete[]a;
            delete[]b;
 
            getch();
 
            return 0;
}
Только я не сделал вывод результатов на консоль. Я так понял, что нужно в каждой функции создать динамический массив и в него записывать получившиеся матрицы. Но не могу понять, как его правильно создать.
И да, в мою сторону сейчас пойдет критика по поводу глобальных переменных

Добавлено через 2 минуты
АЛЕКСЕЙ_92, Надеюсь, это то, что вам нужно.
АЛЕКСЕЙ_92
3 / 3 / 0
Регистрация: 01.06.2014
Сообщений: 130
07.06.2014, 18:49  [ТС]     Операции над матрицами-сложение, вычитание, умножение на число #24
жаль но я тоже никак не знаю как сделать вывод результатов...
АЛЕКСЕЙ_92
3 / 3 / 0
Регистрация: 01.06.2014
Сообщений: 130
09.06.2014, 08:14  [ТС]     Операции над матрицами-сложение, вычитание, умножение на число #25
здесь есть вообще кто живой?-не ужели никто не поможет разобраться в ошибках....
АЛЕКСЕЙ_92
3 / 3 / 0
Регистрация: 01.06.2014
Сообщений: 130
10.06.2014, 13:23  [ТС]     Операции над матрицами-сложение, вычитание, умножение на число #26
ребят,ну помогите пожалуйста,ну никак не получается эта матрица,никак не пойму что где как...
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 664
10.06.2014, 14:27     Операции над матрицами-сложение, вычитание, умножение на число #27
В общем, вопрос к профессионалам. Вот я написал вроде то, что нужно ТС, но выводит "Необработанное исключение" после ввода матриц а и b и нажатия Enter. Скажите, где я оплошался?
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
#include <iostream>
#include <conio.h>
using namespace std;
 
int i,j,k,l;
int n,m,q;
int s,t,x,y,w,z;
 
void sum_matrix(int *a[], int *b[], int *c[], int n, int m, int s, int t){
 
    for(i = 0;i < n;i++){
        for(j = 0;j < m;j++){
            for(k = 0;k < n;k++){
                for(l = 0;l < m;l++){
                    c[s][t] = a[i][j] + b[k][l];
                }
            }
        }
    }
}
void sub_matrix(int *a[], int *b[], int *d[], int n, int m, int x, int y){
    for(i = 0;i < n;i++){
        for(j = 0;j < m;j++){
            for(k = 0;k < n;k++){
                for(l = 0;l < m;l++){
                    d[x][y] = a[i][j] - b[k][l];
                }
            }
        }
    }
}
void mult_matrix(int *a[], int *e[], int n, int m, int q, int w, int z){
 
    for(i = 0;i < n;i++){
        for(j = 0;j < m;j++)
            e[w][z] = q * a[i][j];
    }
}
int main()
{
    cin >> n >> m;
    cin >> q;
 
    int **a = new int *[n];
    for(i = 0; i < n;i++)
        a[i] = new int[m];
    for(i = 0;i < n;i++){
        for(j = 0;j < m;j++)
            cin >> a[i][j];
    }
        int **b = new int *[n];
        for(k = 0;k < n;k++)
            b[k] = new int[m];
        for(k = 0;k < n;k++){
            for(l = 0;l < m;l++)
                cin >> b[k][l];
        }
        int **c = new int *[n];
        for(s = 0;s < n;s++)
            int *c = new int[m];
 
        int **d = new int *[n];
        for(x = 0;x < n;x++)
            int *d = new int[m];
 
        int **e = new int *[n];
        for(w = 0;w < n;w++)
            int *e = new int[m];
 
            sum_matrix(a, b, c, n, m, s, t);
            sub_matrix(a, b, d, n, m, x, y);
            mult_matrix(a, e, n, m, q, w, z);
 
            for(s = 0;s < n;s++){
                for(t = 0;t < m;t++)
                    cout << c[s][t] << " ";
                cout << "\n";
            }
            for(x = 0;x < n;x++){
                for(y = 0;y < m;y++)
                    cout << d[x][y] << " ";
                cout << "\n";
            }
            for(w = 0;w < n;w++){
                for(z = 0;z < m;z++)
                    cout << e[w][z] << " ";
                cout << "\n";
            }
 
            delete[]a;
            delete[]b;
            delete[]c;
            delete[]d;
            delete[]e;
 
            getch();
 
            return 0;
}
Добавлено через 8 минут
И да, я знаю, что будут замечания по поводу глобальных переменных. Я изначально объявлял их в функции main, но при компиляции мне выводит, что все переменные не инициализированы.
Catstail
Модератор
22437 / 10842 / 1765
Регистрация: 12.02.2012
Сообщений: 17,958
10.06.2014, 16:48     Операции над матрицами-сложение, вычитание, умножение на число #28
Очень наверчено... Вот:

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
#include <iostream.h>
 
void sum_matrix(int *a[], int *b[], int *c[], int n, int m)
{
    int i,j;
 
    for(i = 0;i < n;i++)
        for(j = 0;j < m;j++)
            c[i][j]=a[i][j]+b[i][j];
}
void sub_matrix(int *a[], int *b[], int *c[], int n, int m)
{
    int i,j;
 
    for(i = 0;i < n;i++)
        for(j = 0;j < m;j++)
            c[i][j]=a[i][j]-b[i][j];
}
void mult_matrix(int *a[], int *e[],int q, int n, int m)
{
    int i,j; 
    for(i = 0;i < n;i++)
        for(j = 0;j < m;j++)
            e[i][j] = q * a[i][j];
    
}
int main()
{
    int i,j,n,m,q;
 
    cin >> n >> m;
    cin >> q;
 
    int **a = new int *[n];
    for(i = 0; i < n;i++)
        a[i] = new int[m];
    for(i = 0;i < n;i++){
        for(j = 0;j < m;j++)
            cin >> a[i][j];
    }
        int **b = new int *[n];
        for(i = 0;i < n;i++)
            b[i] = new int[m];
        for(i = 0;i < n;i++){
            for(j = 0;j < m;j++)
                cin >> b[i][j];
        }
        int **c = new int *[n];
        for(i = 0;i < n;i++)
            int *c = new int[m];
 
        int **d = new int *[n];
        for(i = 0;i < n;i++)
            int *d = new int[m];
 
        int **e = new int *[n];
        for(i = 0;i < n;i++)
            int *e = new int[m];
 
            sum_matrix(a, b, c, n, m);
            sub_matrix(a, b, d, n, m);
            mult_matrix(a, e,q, n, m);
 
            for(i = 0;i < n;i++){
                for(j = 0;j < m;j++)
                    cout << c[i][j] << " ";
                cout << "\n";
            }
            for(i = 0;i < n;i++){
                for(j = 0;j < m;j++)
                    cout << d[i][j] << " ";
                cout << "\n";
            }
            for(i = 0;i < n;i++){
                for(j = 0;j < m;j++)
                    cout << e[i][j] << " ";
                cout << "\n";
            }
 
            delete[]a;
            delete[]b;
            delete[]c;
            delete[]d;
            delete[]e;
 
            return 0;
}
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 664
10.06.2014, 17:10     Операции над матрицами-сложение, вычитание, умножение на число #29
Catstail, Вы забыли в функции вычитания поменять массив с на d Ну радует хоть то, что я почти верно прогу написал и кому то помог. Это моя первая помощь на форуме
АЛЕКСЕЙ_92, Вот окончательная программа.
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 <iostream.h>
using namespace std;
 
void sum_matrix(int *a[], int *b[], int *c[], int n, int m)
{
    int i,j;
 
    for(i = 0;i < n;i++)
        for(j = 0;j < m;j++)
            c[i][j]=a[i][j]+b[i][j];
}
void sub_matrix(int *a[], int *b[], int *c[], int n, int m)
{
    int i,j;
 
    for(i = 0;i < n;i++)
        for(j = 0;j < m;j++)
            d[i][j]=a[i][j]-b[i][j];
}
void mult_matrix(int *a[], int *e[],int q, int n, int m)
{
    int i,j; 
    for(i = 0;i < n;i++)
        for(j = 0;j < m;j++)
            e[i][j] = q * a[i][j];
    
}
int main()
{
    int i,j,n,m,q;
 
    cin >> n >> m;
    cin >> q;
 
    int **a = new int *[n];
    for(i = 0; i < n;i++)
        a[i] = new int[m];
    for(i = 0;i < n;i++){
        for(j = 0;j < m;j++)
            cin >> a[i][j];
    }
        int **b = new int *[n];
        for(i = 0;i < n;i++)
            b[i] = new int[m];
        for(i = 0;i < n;i++){
            for(j = 0;j < m;j++)
                cin >> b[i][j];
        }
        int **c = new int *[n];
        for(i = 0;i < n;i++)
            int *c = new int[m];
 
        int **d = new int *[n];
        for(i = 0;i < n;i++)
            int *d = new int[m];
 
        int **e = new int *[n];
        for(i = 0;i < n;i++)
            int *e = new int[m];
 
            sum_matrix(a, b, c, n, m);
            sub_matrix(a, b, d, n, m);
            mult_matrix(a, e,q, n, m);
 
            for(i = 0;i < n;i++){
                for(j = 0;j < m;j++)
                    cout << c[i][j] << " ";
                cout << "\n";
            }
            for(i = 0;i < n;i++){
                for(j = 0;j < m;j++)
                    cout << d[i][j] << " ";
                cout << "\n";
            }
            for(i = 0;i < n;i++){
                for(j = 0;j < m;j++)
                    cout << e[i][j] << " ";
                cout << "\n";
            }
 
            delete[]a;
            delete[]b;
            delete[]c;
            delete[]d;
            delete[]e;
 
            return 0;
}
АЛЕКСЕЙ_92
3 / 3 / 0
Регистрация: 01.06.2014
Сообщений: 130
10.06.2014, 17:10  [ТС]     Операции над матрицами-сложение, вычитание, умножение на число #30
1>matrix.cpp
1>c:\users\user\desktop\matrix\matrix.cpp(1) : warning C4627: #include <iostream.h>: пропущен при поиске использования предкомпилированного заголовка
1> Добавление директивы в "stdafx.h" или перестройка предкомпилированного заголовка
1>c:\users\user\desktop\matrix\matrix.cpp(88) : fatal error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "stdafx.h"" в источник.
1>Журнал построения был сохранен в "file://c:\Users\user\Desktop\matrix\Debug\BuildLog.htm"
1>matrix - ошибок 1, предупреждений 1
========== Перестроение всех: успешно: 0, с ошибками: 1, пропущено: 0 ==========
вот что выходит а stdafx.h добавляешь вообще больше 11 ошибок с необъявленным индетификатором...может я что не так делаю
Catstail
Модератор
22437 / 10842 / 1765
Регистрация: 12.02.2012
Сообщений: 17,958
10.06.2014, 17:15     Операции над матрицами-сложение, вычитание, умножение на число #31
У меня в VC++ 6.0 все транслируется без ошибок

Добавлено через 54 секунды
Цитата Сообщение от АЛЕКСЕЙ_92 Посмотреть сообщение
Возможно, вы забыли добавить директиву "#include "stdafx.h"" в источник.
- а ее никогда в форум не выкладываю. Разные среды бывают. Для VC она нужна
АЛЕКСЕЙ_92
3 / 3 / 0
Регистрация: 01.06.2014
Сообщений: 130
10.06.2014, 17:17  [ТС]     Операции над матрицами-сложение, вычитание, умножение на число #32
значит мне лучше скачать VS 2006?? чем искать кто поможет в VS 2008??
Catstail
Модератор
22437 / 10842 / 1765
Регистрация: 12.02.2012
Сообщений: 17,958
10.06.2014, 17:26     Операции над матрицами-сложение, вычитание, умножение на число #33
Вот окончательный вариант. Немного облагородил и исправил еще три ошибки:

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
#include "stdafx.h"
#include <iostream.h>
 
void sum_matrix(int *a[], int *b[], int *c[], int n, int m)
{
    int i,j;
 
    for(i = 0;i < n;i++)
        for(j = 0;j < m;j++)
            c[i][j]=a[i][j]+b[i][j];
}
void sub_matrix(int *a[], int *b[], int *c[], int n, int m)
{
    int i,j;
 
    for(i = 0;i < n;i++)
        for(j = 0;j < m;j++)
            c[i][j]=a[i][j]-b[i][j];
}
void mult_matrix(int *a[], int *e[],int q, int n, int m)
{
    int i,j; 
    for(i = 0;i < n;i++)
        for(j = 0;j < m;j++)
            e[i][j] = q * a[i][j];
    
}
int main()
{
    int i,j,n,m,q;
 
    cout << "n=";
    cin >> n;
    
    cout << "m=";
    cin >> m;
 
    cout << "q=";
    cin >> q;
 
    int **a = new int *[n];
    for(i = 0; i < n;i++)
        a[i] = new int[m];
 
    for(i = 0;i < n;i++)
        for(j = 0;j < m;j++)
        {
            cout << "a[" << i <<"," << j << "]=";
            cin >> a[i][j];
        }
    
    int **b = new int *[n];
    for(i = 0;i < n;i++)
       b[i] = new int[m];
 
    for(i = 0;i < n;i++)
        for(j = 0;j < m;j++)
        {
            cout << "b[" << i <<"," << j << "]=";
            cin >> b[i][j];
        }
        
    int **c = new int *[n];
    for(i = 0;i < n;i++)
       c[i] = new int[m];
 
    int **d = new int *[n];
    for(i = 0;i < n;i++)
       d[i] = new int[m];
 
    int **e = new int *[n];
    for(i = 0;i < n;i++)
       e[i] = new int[m];
 
    sum_matrix (a, b, c, n, m);
    sub_matrix (a, b, d, n, m);
    mult_matrix(a, e, q, n, m);
 
    for(i = 0;i < n;i++)
    {
       for(j = 0;j < m;j++)
          cout << c[i][j] << " ";
       cout << "\n";
    }
    for(i = 0;i < n;i++)
    {
       for(j = 0;j < m;j++)
          cout << d[i][j] << " ";
       cout << "\n";
    }
    for(i = 0;i < n;i++)
    {
       for(j = 0;j < m;j++)
          cout << e[i][j] << " ";
       cout << "\n";
    }
 
    delete[]a;
    delete[]b;
    delete[]c;
    delete[]d;
    delete[]e;
 
    return 0;
}
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 664
10.06.2014, 17:52     Операции над матрицами-сложение, вычитание, умножение на число #34
Catstail, Да почему
C++
1
c[i][j]=a[i][j]-b[i][j];
если
C++
1
d[i][j]=a[i][j]-b[i][j];
?

Добавлено через 11 минут
АЛЕКСЕЙ_92, Вот
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 <iostream>
using namespace std;
 
void sum_matrix(int *a[], int *b[], int *c[], int n, int m)
{
    int i,j;
 
    for(i = 0;i < n;i++)
        for(j = 0;j < m;j++)
            c[i][j]=a[i][j]+b[i][j];
}
void sub_matrix(int *a[], int *b[], int *d[], int n, int m)
{
    int i,j;
 
    for(i = 0;i < n;i++)
        for(j = 0;j < m;j++)
            d[i][j]=a[i][j]-b[i][j];
}
void mult_matrix(int *a[], int *e[],int q, int n, int m)
{
    int i,j; 
    for(i = 0;i < n;i++)
        for(j = 0;j < m;j++)
            e[i][j] = q * a[i][j];
    
}
int main()
{
    int i,j,n,m,q;
 
    cin >> n >> m;
    cin >> q;
 
    int **a = new int *[n];
    for(i = 0; i < n;i++)
        a[i] = new int[m];
    for(i = 0;i < n;i++){
        for(j = 0;j < m;j++)
            cin >> a[i][j];
    }
        int **b = new int *[n];
        for(i = 0;i < n;i++)
            b[i] = new int[m];
        for(i = 0;i < n;i++){
            for(j = 0;j < m;j++)
                cin >> b[i][j];
        }
        int **c = new int *[n];
        for(i = 0;i < n;i++)
            int *c = new int[m];
 
        int **d = new int *[n];
        for(i = 0;i < n;i++)
            int *d = new int[m];
 
        int **e = new int *[n];
        for(i = 0;i < n;i++)
            int *e = new int[m];
 
            sum_matrix(a, b, c, n, m);
            sub_matrix(a, b, d, n, m);
            mult_matrix(a, e,q, n, m);
 
            for(i = 0;i < n;i++){
                for(j = 0;j < m;j++)
                    cout << c[i][j] << " ";
                cout << "\n";
            }
            for(i = 0;i < n;i++){
                for(j = 0;j < m;j++)
                    cout << d[i][j] << " ";
                cout << "\n";
            }
            for(i = 0;i < n;i++){
                for(j = 0;j < m;j++)
                    cout << e[i][j] << " ";
                cout << "\n";
            }
 
            delete[]a;
            delete[]b;
            delete[]c;
            delete[]d;
            delete[]e;
 
            return 0;
}
И вам нужно зайти в Свойства проекта --> С/С++ --> Предварительно откомпилированные заголовки --> Не использовать предварительно откомпилированные заголовки.

Добавлено через 4 минуты
Catstail, Но все же. Я запускаю эту программу у себя(MVC 2010)
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 <iostream>
using namespace std;
 
void sum_matrix(int *a[], int *b[], int *c[], int n, int m)
{
    int i,j;
 
    for(i = 0;i < n;i++)
        for(j = 0;j < m;j++)
            c[i][j]=a[i][j]+b[i][j];
}
void sub_matrix(int *a[], int *b[], int *d[], int n, int m)
{
    int i,j;
 
    for(i = 0;i < n;i++)
        for(j = 0;j < m;j++)
            d[i][j]=a[i][j]-b[i][j];
}
void mult_matrix(int *a[], int *e[],int q, int n, int m)
{
    int i,j; 
    for(i = 0;i < n;i++)
        for(j = 0;j < m;j++)
            e[i][j] = q * a[i][j];
    
}
int main()
{
    int i,j,n,m,q;
 
    cin >> n >> m;
    cin >> q;
 
    int **a = new int *[n];
    for(i = 0; i < n;i++)
        a[i] = new int[m];
    for(i = 0;i < n;i++){
        for(j = 0;j < m;j++)
            cin >> a[i][j];
    }
        int **b = new int *[n];
        for(i = 0;i < n;i++)
            b[i] = new int[m];
        for(i = 0;i < n;i++){
            for(j = 0;j < m;j++)
                cin >> b[i][j];
        }
        int **c = new int *[n];
        for(i = 0;i < n;i++)
            int *c = new int[m];
 
        int **d = new int *[n];
        for(i = 0;i < n;i++)
            int *d = new int[m];
 
        int **e = new int *[n];
        for(i = 0;i < n;i++)
            int *e = new int[m];
 
            sum_matrix(a, b, c, n, m);
            sub_matrix(a, b, d, n, m);
            mult_matrix(a, e,q, n, m);
 
            for(i = 0;i < n;i++){
                for(j = 0;j < m;j++)
                    cout << c[i][j] << " ";
                cout << "\n";
            }
            for(i = 0;i < n;i++){
                for(j = 0;j < m;j++)
                    cout << d[i][j] << " ";
                cout << "\n";
            }
            for(i = 0;i < n;i++){
                for(j = 0;j < m;j++)
                    cout << e[i][j] << " ";
                cout << "\n";
            }
 
            delete[]a;
            delete[]b;
            delete[]c;
            delete[]d;
            delete[]e;
 
            return 0;
}
И мне выдает "Необработанное исключение". В чем причина?
АЛЕКСЕЙ_92
3 / 3 / 0
Регистрация: 01.06.2014
Сообщений: 130
10.06.2014, 18:09  [ТС]     Операции над матрицами-сложение, вычитание, умножение на число #35
Sh@dow777 так мне на чем твою программу запускать??и на какой версии?
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 664
10.06.2014, 18:13     Операции над матрицами-сложение, вычитание, умножение на число #36
АЛЕКСЕЙ_92, На Visual Studio. Где еще?
АЛЕКСЕЙ_92
3 / 3 / 0
Регистрация: 01.06.2014
Сообщений: 130
10.06.2014, 18:18  [ТС]     Операции над матрицами-сложение, вычитание, умножение на число #37
вот что выходит после набора 9 чисел и нажатия Enter
Необработанное исключение в "0x0124155c" в "matrix.exe": 0xC0000005: Нарушение прав доступа при записи "0xcdcdcdcd".
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 664
10.06.2014, 18:21     Операции над матрицами-сложение, вычитание, умножение на число #38
АЛЕКСЕЙ_92, Вот у меня тоже самое. Я спросил у Catstail, но он молчит. У него программа работает.
АЛЕКСЕЙ_92
3 / 3 / 0
Регистрация: 01.06.2014
Сообщений: 130
10.06.2014, 18:30  [ТС]     Операции над матрицами-сложение, вычитание, умножение на число #39
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
#include <iostream>
using namespace std;
void sum_matrix(int *a[], int *b[], int *c[], int n, int m)
{
    int i,j;
 
    for(i = 0;i < n;i++)
        for(j = 0;j < m;j++)
            c[i][j]=a[i][j]+b[i][j];
}
void sub_matrix(int *a[], int *b[], int *c[], int n, int m)
{
    int i,j;
 
    for(i = 0;i < n;i++)
        for(j = 0;j < m;j++)
            c[i][j]=a[i][j]-b[i][j];
}
void mult_matrix(int *a[], int *e[],int q, int n, int m)
{
    int i,j; 
    for(i = 0;i < n;i++)
        for(j = 0;j < m;j++)
            e[i][j] = q * a[i][j];
    
}
int main()
{
    int i,j,n,m,q;
 
    cout << "n=";
    cin >> n;
    
    cout << "m=";
    cin >> m;
 
    cout << "q=";
    cin >> q;
 
    int **a = new int *[n];
    for(i = 0; i < n;i++)
        a[i] = new int[m];
 
    for(i = 0;i < n;i++)
        for(j = 0;j < m;j++)
        {
            cout << "a[" << i <<"," << j << "]=";
            cin >> a[i][j];
        }
    
    int **b = new int *[n];
    for(i = 0;i < n;i++)
       b[i] = new int[m];
 
    for(i = 0;i < n;i++)
        for(j = 0;j < m;j++)
        {
            cout << "b[" << i <<"," << j << "]=";
            cin >> b[i][j];
        }
        
    int **c = new int *[n];
    for(i = 0;i < n;i++)
       c[i] = new int[m];
 
    int **d = new int *[n];
    for(i = 0;i < n;i++)
       d[i] = new int[m];
 
    int **e = new int *[n];
    for(i = 0;i < n;i++)
       e[i] = new int[m];
 
    sum_matrix (a, b, c, n, m);
    sub_matrix (a, b, d, n, m);
    mult_matrix(a, e, q, n, m);
 
    for(i = 0;i < n;i++)
    {
       for(j = 0;j < m;j++)
          cout << c[i][j] << " ";
       cout << "\n";
    }
    for(i = 0;i < n;i++)
    {
       for(j = 0;j < m;j++)
          cout << d[i][j] << " ";
       cout << "\n";
    }
    for(i = 0;i < n;i++)
    {
       for(j = 0;j < m;j++)
          cout << e[i][j] << " ";
       cout << "\n";
    }
 
    delete[]a;
    delete[]b;
    delete[]c;
    delete[]d;
    delete[]e;
 
    return 0;
}
Добавлено через 1 минуту
вот наконец то получилось с вашей помощью-огромное спасибо за помощь!!!))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2014, 08:49     Операции над матрицами-сложение, вычитание, умножение на число
Еще ссылки по теме:
Сделать сложение, вычитание, умножение и деление длинных чисел C++
С клавиатуры вводится две матрицы вычислить: сложение, вычитание, умножение, транспонирование. C++
C++ Сложение / Вычитание / Умножение чисел записанных в виде массива char символов
C++ Матрица, операции над матрицами

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

Или воспользуйтесь поиском по форуму:
Catstail
Модератор
22437 / 10842 / 1765
Регистрация: 12.02.2012
Сообщений: 17,958
11.06.2014, 08:49     Операции над матрицами-сложение, вычитание, умножение на число #40
Цитата Сообщение от АЛЕКСЕЙ_92 Посмотреть сообщение
вот наконец то получилось с вашей помощью-огромное спасибо за помощь!!!))
- очень похоже на мой код... Нет?

Добавлено через 3 минуты
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
Да почему
- какя разница, как называть формальные параметры функций?
Yandex
Объявления
11.06.2014, 08:49     Операции над матрицами-сложение, вычитание, умножение на число
Ответ Создать тему
Опции темы

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