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

Создать класс матриц с операторами перегрузки сложения, вычитания и умножения на число

06.06.2015, 12:02. Показов 5264. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача: создать класс матриц с операторами перегрузки сложения вычитания и умножения на число.проверить 2 матрицы на то является ли одна из них обратной другой,ну и действия с матрицами произвести.
Проблема: создал оператор перегрузки сравнения 2 матриц, чтобы сравнить результат перемножения 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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
#include <iostream>
#include <ctime>
#include <cmath>
using namespace std;
 
//КЛАСС МАТРИЦ.
class matrix
{
    int n; int m;
    float a[100][100];
    public:
    //Конструктор матрицы для заполнения 0.
   
     //Конструктор матрицы для заполнения 1.
    matrix(int n1, int m1, int k)
    {
        n=n1; m=m1;
        for (int i=0; i<n; i++)
        {
            for (int j=0; j<m; j++)
            if(i==j) a[i][j]=k;else a[i][j]=0;
        }
    }
    //Конструктор матрицы для заполнения числами.
    matrix(int n1, int m1)
    {
        n=n1; m=m1;
        for (int i=0; i<n; i++)
        for (int j=0; j<m; j++)
        cin>>a[i][j];
    }
    //Метод для вывода матрицы на экран.
    void print()
    {
        for (int i=0; i<n; i++)
        {
            for (int j=0; j<m; j++)
            cout<<a[i][j]<<"\t";
            cout<<endl;
        }
        cout<<"\n";
        
    }
    
    //Метод, возвращающий количество строк.
   int N ()
   {
      return n;
   }
   //Метод, возвращающий количество столбцов.
   int M ()
   {
      return m;
   }
    //Перегрузка оператора +.
    matrix operator + (matrix  b)
    {
        matrix result (n, m, 0);
        if ((n==b.N())&&(m==b.M()))
        {
            for (int i = 0; i < n ; ++ i)
            {
                for (int j = 0; j < m; ++ j)
                result.a[i][j] = a[i][j] + b.a[i][j];
            }
        return result;
        }
        else return result;
    } 
    //Перегрузка оператора -.
    matrix operator - (matrix  b)
    {
        matrix result (n, m, 0);
        if ((n==b.N())&&(m==b.M()))
        {
            for (int i = 0; i < n ; ++ i)
            {
                for (int j = 0; j < m; ++ j)
                result.a[i][j] = a[i][j] - b.a[i][j];
            }
        return result;
        }
        else return result;
    }
    //Перегрузка оператора *.
    matrix operator * (matrix  b)
    {
        matrix result (n, m, 0);
        if (m==b.N())
        {
            for(int i=0;i<n;i++)
            {
                 for(int j=0;j<m;j++)
                 {
                        for(int k=0;k<m;k++)
                        result.a[i][j]+=a[i][k]*b.a[k][j];
                 }
     
            }
        return result;
        }
        else return result;
    }
    //Перегрузка *=.
    matrix operator *= (int k)
    {
        matrix result (n, m, 0);
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            result.a[i][j]=a[i][j]*k;
        }
    return result;
    }
     //Перегрузка оператора ==.
   bool operator == (matrix  b)
    {
        matrix result (n, m);
        if ((n==b.N())&&(m==b.M()))
        {
            for (int i = 0; i < n ; ++ i)
            {
                for (int j = 0; j < m; ++ j)
                if (a[i][j] == b.a[i][j]);
            }
        return 1;
        }
        
       else return 0;}
        
        
};
 
int main()
{
    setlocale(LC_ALL, "Russian");  
     
    cout<<"\nВведите размерность первой матрицы:\n";
    int m1, n1; cin>>n1>>m1;
    cout<<"\nМатрица A:\n";
    matrix a(n1, m1);
    a.print();
    
    cout<<"\nВведите размерность второй матрицы:\n";
    int m2, n2; cin>>n2>>m2;
    cout<<"\nМатрица B:\n";
    matrix b(n2, m2);
    b.print();
    
    cout<<"\единичная матрица:\n";
   int m3=2,n3=2;
   matrix f(n3, m3,1);
   f.print();
    
    cout<<"\nРезультат: \n\n";
    matrix d(n1, m1, 0);
    cout<<"3AB+(A-B)A= \n\n";
    d=(a*=3)*b+(a-b)*a;
    d.print();
    cout<<endl;
    
    matrix e(n1, m1, 0);
    e=a*b;
    cout<<"Результат умножения матрицы а на б "<<endl;
    e.print();
  
   if ( f == e)    cout<<"матрица А является обратной матрице В"<<endl;  
   else   cout<<"матрица А  не является обратной матрице В"<<endl;
    
    
     
    system ("pause");
    return 0;
    
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.06.2015, 12:02
Ответы с готовыми решениями:

Создать класс Matrix и функции умножения и сложения матриц
Создайте класс Matrix на базе вектора vector&lt;vector&lt;int&gt;&gt;. Определите операторную функцию ostream&amp;...

Реализовать функции сложения, вычитания и умножения матриц
Задание: Разработать программу для работы с двумя матрицами. Реализовать функции сложения,...

Создать класс матриц с целочисленными элементами и определить операции умножения и сложения
Всем привет, помогите с задачей, заранее спасибо. Создать класс матриц с целочисленными элементами...

Написать функции сложения, умножения и вычитания квадратных матриц, и вычислить с их помощью выражение
Написать функции для сложения, умножения и вычитания квадратных матриц. Используя составленные...

0
06.06.2015, 12:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2015, 12:02
Помогаю со студенческими работами здесь

Класс для выполнения операций сложения, вычитания и умножения комплексных чисел
Условие: Составить описание класса для представления комплексных чисел. Обеспечить выполнение...

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

Создать производный класс, в котором реализована функция умножения вектора на число и функция сложения двух векторов
Write программу с использованием класса Вектор (не без помощи форумчанина), но необходимо создать...

Примеры перегрузки вычитания, умножения, деления
Помогите найти Примеры перегрузки вычитания, умножения, деления


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

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