С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

Здравствуйте,помогите пожалуйста по такой проблемке-в С++ надо создать матрицу и действия над ней..буду очень благодарен кто поможет.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2014, 12:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Операции над матрицами-сложение, вычитание, умножение на число (C++):

Структуры: арифметические операции (сложение, вычитание, умножение, деление) над комплексными числами - C++
Написать программу, реализующую арифметические операции (сложение, вычитание, умножение, деление), над комплексными числами. Использовать...

Организовать ввод двух вещественных чисел и операции над ними: сложение, вычитание, умножение и деление - C++
Парни всем привет! Начинаю новую тему по решению задач Задача звучит так: Написать программу, которая запрашивает ввод двух...

Операции с комплексными числами. Проконсультируйте. (аргумент, модуль, сложение, умножение, вычитание) - C++
здравствуйте. Эта программа рабочая, работает для аргумента, сложения, вычитания, умножения, модуля комплексных чисел. Проверьте её...

Нужны советы как реализовать сложение, вычитание, умножение полиномов/многочленов и деление на число - C++
Всем здравствуйте! надеюсь написать с вашей помощью программку для сложения, вычитания и умножения полиномов, а также деления на число....

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

Нестандартное сложение, вычитание, умножение и деление - C++
Что-то на форуме скучно, давайте устроим небольшой интерактивчик, придумываем самые нестандартные способы сложения, вычитания, умножения и...

54
Catstail
Модератор
22915 / 11281 / 1833
Регистрация: 12.02.2012
Сообщений: 18,492
10.06.2014, 17:15 #31
У меня в VC++ 6.0 все транслируется без ошибок

Добавлено через 54 секунды
Цитата Сообщение от АЛЕКСЕЙ_92 Посмотреть сообщение
Возможно, вы забыли добавить директиву "#include "stdafx.h"" в источник.
- а ее никогда в форум не выкладываю. Разные среды бывают. Для VC она нужна
0
АЛЕКСЕЙ_92
3 / 3 / 0
Регистрация: 01.06.2014
Сообщений: 130
10.06.2014, 17:17  [ТС] #32
значит мне лучше скачать VS 2006?? чем искать кто поможет в VS 2008??
0
Catstail
Модератор
22915 / 11281 / 1833
Регистрация: 12.02.2012
Сообщений: 18,492
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;
}
0
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 679
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;
}
И мне выдает "Необработанное исключение". В чем причина?
0
АЛЕКСЕЙ_92
3 / 3 / 0
Регистрация: 01.06.2014
Сообщений: 130
10.06.2014, 18:09  [ТС] #35
Sh@dow777 так мне на чем твою программу запускать??и на какой версии?
0
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 679
10.06.2014, 18:13 #36
АЛЕКСЕЙ_92, На Visual Studio. Где еще?
0
АЛЕКСЕЙ_92
3 / 3 / 0
Регистрация: 01.06.2014
Сообщений: 130
10.06.2014, 18:18  [ТС] #37
вот что выходит после набора 9 чисел и нажатия Enter
Необработанное исключение в "0x0124155c" в "matrix.exe": 0xC0000005: Нарушение прав доступа при записи "0xcdcdcdcd".
0
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 679
10.06.2014, 18:21 #38
АЛЕКСЕЙ_92, Вот у меня тоже самое. Я спросил у Catstail, но он молчит. У него программа работает.
0
АЛЕКСЕЙ_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 минуту
вот наконец то получилось с вашей помощью-огромное спасибо за помощь!!!))
0
Catstail
Модератор
22915 / 11281 / 1833
Регистрация: 12.02.2012
Сообщений: 18,492
11.06.2014, 08:49 #40
Цитата Сообщение от АЛЕКСЕЙ_92 Посмотреть сообщение
вот наконец то получилось с вашей помощью-огромное спасибо за помощь!!!))
- очень похоже на мой код... Нет?

Добавлено через 3 минуты
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
Да почему
- какя разница, как называть формальные параметры функций?
0
АЛЕКСЕЙ_92
3 / 3 / 0
Регистрация: 01.06.2014
Сообщений: 130
11.06.2014, 12:19  [ТС] #41
да это ваш код но начало я взял у Sh@dow777

Добавлено через 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
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
110
111
112
113
114
115
116
117
118
119
120
121
122
#include <iostream>
#include <string>
 
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;
    setlocale(LC_ALL,"rus");//Добавление русского языка
    string name;
    cout<<"Введите пожалуйста число строк первой и второй  матрицы: ";
    cout << "n=";
    cin >> n;
    
    cout<<"Введите пожалуйста число столбцов первой и второй  матрицы: ";
    cout << "m=";
    cin >> m;
 
    cout<<"Введите пожалуйста число на которое умножится первая матрица: ";
    cout << "q=";
    cin >> q;
 
    int **a = new int *[n];
    cout<<"Введите пожалуйста числа первой матрицы: ";
    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];
    cout<<"Введите пожалуйста числа второй матрицы: ";
    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];
    cout<<"Результат :";
       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;
    system("pause");
 
    return 0;
}
вот так я маленько улучшил-надо все таки учиться,но где результат стоит нужен пробел а то числа в той же строке где и надпись+ как включить здесь умножение второй матрицы на число,перемножение матриц,транспонирование матриц
Заранее спасибо
0
Catstail
Модератор
22915 / 11281 / 1833
Регистрация: 12.02.2012
Сообщений: 18,492
11.06.2014, 12:28 #42
Молодец... Только про теги форматирования не забывай.
0
АЛЕКСЕЙ_92
3 / 3 / 0
Регистрация: 01.06.2014
Сообщений: 130
11.06.2014, 12:32  [ТС] #43
что за теги форматирования??
0
volvo
11.06.2014, 13:00
  #44

Не по теме:

АЛЕКСЕЙ_92, кнопочка такая, в окне редактора сообщений. С++ на ней написано. Выделяешь текст кода, и жмешь эту кнопку. Больше информации: http://www.cyberforum.ru/about-forum/thread103521.html

0
Catstail
Модератор
22915 / 11281 / 1833
Регистрация: 12.02.2012
Сообщений: 18,492
12.06.2014, 12:11 #45
Вот умножение матриц:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// ÓìГ*îæåГ*ГЁГҐ Г¬Г*òðèöû a (n*m) Г*Г* Г¬Г*òðèöó b (m*k) 
// ðåçóëüòГ*ГІ Гў Г¬Г*òðèöå c (n*k)
 
void mmatrix(int *a[], int *b[], int *c[], int n, int m, int k)
{
    int i,j,l,s;
    for (i=0; i<n; i++)
        for (j=0; j<k; j++)
        {
            s=0;
            for (l=0; l<m; l++) s+=(a[i][l])*(b[l][j]);
            c[i][j]=s;
        }
 
}
1
12.06.2014, 12:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2014, 12:11
Привет! Вот еще темы с ответами:

Сложение и вычитание, умножение и деление, сравнение сумм - C++
Уважаемые форумчане! помогите, пожалуйста, нужно написать программу для работы с устаревшей денежной системой Великобритании. В ней...

Сделать сложение, вычитание, умножение и деление длинных чисел - C++
В общем, задача такая, что надо сделать сложение, вычитание, умножение и деление длинных чисел. Сумму сделал, с вычитанием какая-то засада....

Сложение / Вычитание / Умножение чисел записанных в виде массива char символов - C++
доброго времени суток. такой вопрос, как мне сделать выше перечилненные математичиские вычесления чилам записсаных как массив char но ...

С клавиатуры вводится две матрицы вычислить: сложение, вычитание, умножение, транспонирование. - C++
Буду благодарен=(( С клавиатуры вводится две матрицы вычислить: сложение, вычитание, умножение, транспонирование. Добавлено через 2...


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

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

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