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

Умножение матриц и вычитание - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
Sun-rise
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 20
11.10.2010, 10:47     Умножение матриц и вычитание #1
Дано квадратные матрици А и B порядка N
Получить матрицу AB - BA
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2010, 10:47     Умножение матриц и вычитание
Посмотрите здесь:

C++ вычитание матриц
C++ Сложение, вычитание, умножение
C++ Вычитание, умножение, деление столбиком
Вычитание, умножение, вычисление обратной матрицы C++
сложение и вычитание, умножение и деление, сравнение сумм C++
Не получается сделать умножение векторов, вычитание и проверку на неравенство C++
Операции над матрицами-сложение, вычитание, умножение на число C++
C++ Транспонирование, умножение и вычитание матриц, отчет в Mathcad

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dexter
 Аватар для Dexter
284 / 144 / 16
Регистрация: 13.10.2009
Сообщений: 164
11.10.2010, 13:16     Умножение матриц и вычитание #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
#include <conio.h>
#include <iostream>
#include <iomanip>
using namespace std;
class Matrix
{
    private:
        float** a;//элементы
        int N;//размерность
        char leter;//буква которая будет видна при вводе данных, можна убирать
    public:
        Matrix(int x);//конструктор
        Matrix(int x,char L);//конструктор
        Matrix(const Matrix &A);//конструктор
        ~Matrix();//деструктор
        Matrix operator = (const Matrix &A)
        {
            for(int i=0;i<A.N;i++)
            for(int j=0;j<A.N;j++)
                a[i][j]=A.a[i][j];
            return *this;
        }
        friend istream &operator >>(istream &input, const Matrix &A)//перегрузка ввода
        {
            for(int i=0;i<A.N;i++)
            for(int j=0;j<A.N;j++)
            {
                cout<<A.leter<<"["<<j+1<<","<<i+1<<"]=";
                input>>A.a[i][j];
            }
            return input;
        }
        friend ostream &operator <<(ostream &output, const Matrix &A)//перегрузка вывода
        {
            for(int i=0;i<A.N;i++)
            {
                for(int j=0;j<A.N;j++)
                    output<<setw(5)<<A.a[i][j];//setw - ширина числа 5 символов
                output<<endl;
            }
            return output;
        }
        friend Matrix operator *(const Matrix &A, const Matrix &B)//умножение матриц
        {
            Matrix temp(A.N);
            for(int i=0;i<A.N;i++)
            for(int j=0;j<A.N;j++)
            {
                temp.a[i][j]=0;
                for(int t=0;t<A.N;t++)
                    temp.a[i][j]+=A.a[i][t]*B.a[t][j];
            }
            return temp;
        }
        friend Matrix operator -(const Matrix &A, const Matrix &B)//разница матриц
        {
            Matrix temp(A.N);
            for(int i=0;i<A.N;i++)
            for(int j=0;j<A.N;j++)
                temp.a[i][j]=A.a[i][j]-B.a[i][j];
            return temp;
        }
 
};
Matrix::Matrix(int x)//создаем двумерный массив
{
    N=x;
    leter='X';
    a=new float* [N];
    for(int i=0;i<N;i++)
        a[i]=new float [N];
}
Matrix::Matrix(int x,char L)//создаем двумерный массив
{
    N=x;
    leter=L;
    a=new float* [N];
    for(int i=0;i<N;i++)
        a[i]=new float [N];
}
Matrix::Matrix(const Matrix &A)//создаем двумерный массив
{
    N=A.N;
    a=new float* [N];
    for(int i=0;i<N;i++)
        a[i]=new float [N];
    for(int i=0;i<N;i++)
    for(int j=0;j<N;j++)
        a[i][j]=A.a[i][j];
}
Matrix::~Matrix()//освобождаем память
{
    for(int i=0;i<N;i++)
        delete [] a[i];
    delete [] a;
}
int main() 
{ 
    int n;
    cout<<"Enter N=";
    cin>>n;
    Matrix A(n,'A'),B(n,'B'),C(n,'C');
    cin>>A>>B;
    cout<<"A:"<<endl<<A<<"B:"<<endl<<B;
    C=A*B-B*A;
    cout<<endl<<"Result A*B-B*A is:"<<endl<<C;
    getch();
}
класс квадратных матриц можно дописывать дальше, исходя из своих задач
uropyxa
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 5
21.12.2010, 17:51     Умножение матриц и вычитание #3
DexterUa подскажи пжлста здесь Подскажите по классам в Visual Studio c++
Yandex
Объявления
21.12.2010, 17:51     Умножение матриц и вычитание
Ответ Создать тему
Опции темы

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