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

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

28.10.2016, 16:26. Показов 504. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Пытаюсь разработать класс матриц, чтобы перегрузить основные операции. Помогите доработать.
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.10.2016, 16:26
Ответы с готовыми решениями:

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

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

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

Класс матриц
Подскажите, пожалуйста, как переделать метод ввода матрицы в обычную функцию вне класса, и как ее...

2
Эксперт С++
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
28.10.2016, 16:29 2
эм... и что это за портянка и что с этим делать?
0
181 / 47 / 33
Регистрация: 27.02.2016
Сообщений: 260
28.10.2016, 17:48 3
9senser9, в первую очередь Вам нужно реализовать конструктор копирования, оператор присваивания, нетривиальный деструктор, операторы сложения/вычитания/умножения на элемент.
И как-то не очень логично, что Ваш объект класса содержит сразу три матрицы. Это действительно необходимо?
0
28.10.2016, 17:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2016, 17:48
Помогаю со студенческими работами здесь

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

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

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

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


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

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