Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
9senser9
0 / 0 / 0
Регистрация: 10.09.2016
Сообщений: 52
1

Доработать класс матриц

28.10.2016, 16:26. Просмотров 300. Ответов 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
#include <iostream>
 
#include <math.h>
#include <windows.h>
using namespace std;
 
class Matrix
{
private:
    int lineA, columbA, lineB, columbB, lineC, columbC;
    int ** A = new int *[lineA];
    int ** B = new int *[lineB];
    int ** C = new int *[lineA];
    double a;
public:
    void EnterA()
    {
        cout << "??????? ?????? ???????: ";
        cin >> lineA >> columbA;
        int ** A = new int *[lineA];
        for (int i = 0; i < lineA; i++)
            A[i] = new int[columbA];
 
        for (int i = 0; i < lineA; i++)
            for (int j = 0; j < columbA; j++)
                cin >> A[i][j];
    }
    void EnterB()
    {
        cout << "??????? ?????? ???????: ";
        cin >> lineB >> columbB;
        for (int i = 0; i < lineB; i++)
            A[i] = new int[columbB];
 
        for (int i = 0; i < lineB; i++)
            for (int j = 0; j < columbB; j++)
                cin >> A[i][j];
    }
    void OutputA()
    {
        for (int i = 0; i<lineA; i++) {
            cout << endl;
            for (int j = 0; j<columbA; j++)
                cout << A[i][j] << " ";
        }
    }
    void OutputC()
    {
        for (int i = 0; i<lineA; i++) {
            cout << endl;
            for (int j = 0; j<columbB; j++)
                cout << C[i][j] << " ";
        }
    }
    void OutputB()
    {
        for (int i = 0; i<lineB; i++) {
            cout << endl;
            for (int j = 0; j<columbB; j++)
                cout << A[i][j] << " ";
        }
    }
    void MultiMatrixOnNumberA()
    {
        cout << "??????? ?????, ?? ??????? ????? ???????? ???????: ";
        cin >> a;
        for (int i = 0; i<lineA; i++) {
            for (int j = 0; j<columbA; j++)
                A[i][j] *= a;
        }
    }
    void MultiMatrixOnNumberB()
    {
        cout << "??????? ?????, ?? ??????? ????? ???????? ???????: ";
        cin >> a;
        for (int i = 0; i<lineB; i++) {
            for (int j = 0; j<columbB; j++)
                A[i][j] *= a;
        }
    }
    void Substitution() {
        for (int i = 0; i<lineA; i++) {
            for (int j = 0; j<columbA; j++)
                A[i][j] = B[i][j];
        }
    }
    void AddMatrix() {
        for (int i = 0; i<lineA; i++) {
            for (int j = 0; j<columbA; j++)
                A[i][j] += B[i][j];
        }
    }
    void Inverse() {
        for (int i = 0; i < lineA; i++) {
            for (int j = 0; j < lineA; j++) {
                if (i != j) {
                    B[i][j] = 0;
                }
                else {
                    B[i][i] = 1.;
                }
            }
        }
        for (int i = 0; i < lineA; i++) {
            float k = A[i][i];
            for (int j = 0; j < lineA; j++) {
                B[i][j] = B[i][j] / k;
                A[i][j] = A[i][j] / k;
            }
        }
        for (int k = 0; k < lineA; k++) {
            for (int i = 0; i < lineA; i++) {
                if (k != i) {
                    float b = A[i][k] / A[k][k];
                    for (int j = 0; j < lineA; j++) {
                        B[i][j] -= b*B[k][j];
                        A[i][j] -= b*A[k][j];
                    }
                }
            }
        }
 
        for (int i = 0; i < lineA; i++) {
            float b = A[i][i];
            for (int j = 0; j < lineA; j++) {
                B[i][j] /= b;
                A[i][j] /= b;
            }
        }
    }
    void MultiMatrix() {
        for (int i = 0; i < lineA; i++)
            A[i] = new int[columbB];
        if (columbB != lineA) {
            system("cls");
            cout << "Error.\n";
        }
        else {
            for (int i = 0; i < lineA; ++i) {
                for (int j = 0; j < columbB; ++j) {
                    C[i][j] = 0;
                    for (int k = 0; k < columbB; ++k)
                        C[i][j] += A[i][k] * B[k][j];
                }
            }
        }
    }
};
int main() {
    setlocale(LC_ALL, "Russian");
 
    Matrix n2;
    n2.EnterA();
 
    n2.OutputA();
    system("pause");
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2016, 16:26
Ответы с готовыми решениями:

Базовый класс Complex и производный класс для реализации квадратных матриц
1) Создайте базовый класс Complex (комплексное число) для реализации...

Доработать класс Итератор
1. Добавить в класс Iterator некоторые функции, аналогичные имеющимся...

доработать класс String
Занимаюсь по книжке Стивена Праты, никак не могу найти ошибку в...

Класс матриц
есть рабочий класс матриц. Все работает отлично, но надо сделать функцию или...

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

2
Maxim Prishchepa
Эксперт С++
1925 / 1037 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
28.10.2016, 16:29 2
эм... и что это за портянка и что с этим делать?
0
Lost17
180 / 46 / 33
Регистрация: 27.02.2016
Сообщений: 231
Завершенные тесты: 2
28.10.2016, 17:48 3
9senser9, в первую очередь Вам нужно реализовать конструктор копирования, оператор присваивания, нетривиальный деструктор, операторы сложения/вычитания/умножения на элемент.
И как-то не очень логично, что Ваш объект класса содержит сразу три матрицы. Это действительно необходимо?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2016, 17:48

Класс матриц
Пишу класс для работы с матрицами . Не могу понять , почему не работают функции...

Класс матриц
Пытаюсь написать класс матриц.Никак не удаётся перегрузить оператор = . ...

Класс матриц
Задание звучит так : разработать класс для работы с матрицами 2х2 . Прога...


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

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

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