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

Написать методы, позволяющие вычислить след матрицы, детерминант, транспонировать, обратить матрицу - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В каждой строке матрицы элемент, лежащий на главной диагонали, заменить суммой ранее расположению элементов http://www.cyberforum.ru/cpp-beginners/thread1127822.html
в каждой строке матрицы F(k,k) элемент ,лежащий на главной диагонали, если это простое число заменить суммой ранее расположению элементов
C++ Удалить из массива числа, которые являются полным квадратом и имеют нечетную сумму цифр Помогите пожалуйста, очень нужно! Разработать программу на языке программирования С++. Дан массив из N целых чисел, где N<=16, каждое число в диапазоне от –32000 до 32000. Удалить из массива числа, которые являются полным квадратом и имеют нечетную сумму цифр. Примечание: Массив перед обработкой и после обработки распечатать в виде http://www.cyberforum.ru/cpp-beginners/thread1127821.html
C++ Вставить после каждого непростого числа его наибольший делитель
Дан массив из N целых чисел, где N<=16, каждое число в диапазоне от –32000 до 32000. Вставить после каждого непростого числа его наибольший делитель. Использовать функции.1 Примечание: • Массив перед обработкой и после обработки распечатать в виде строки чисел. • Массив может быть введен в диалоговом режиме, либо задан списком констант. помогите пожалуйста
Вывод структуры в файл. Исправить ошибки в коде C++
Здравствуйте. Пишу программу с структурой и вводом в файл. Выдает ошибку что не определены переменные: v, s, t, at. Помогите, пожалуйста, исправить эту ошибку. Эти данные вводятся с клавиатуры. #include<stdio.h> #include<conio.h> #include<string.h> struct seller { char FIO; float t, at;
C++ Конструктор и деструктор анонимного класса http://www.cyberforum.ru/cpp-beginners/thread1127776.html
Здравствуйте. Есть ли в С++ такая возможность? Очень нужна именно такая реализация класса, но если это невозможно, буду думать.
C++ Третий массив заполнить поэлементным сложением массивов с первого и второго Привет всем. Никак не получается у меня сложить 2 объекта. То есть мне нужно заполнить 2 массива ( каждый хранится в отдельном объекте), а в 3 массив ( который в третьем объекте) заполнить поэлементным сложением массивов с первого и второго объекта. #include <iostream> using namespace std; class my { private: unsigned int m=5; unsigned int n=5; unsigned int h=m+n; unsigned... подробнее

Показать сообщение отдельно
firefox123
0 / 0 / 0
Регистрация: 17.11.2013
Сообщений: 39

Написать методы, позволяющие вычислить след матрицы, детерминант, транспонировать, обратить матрицу - C++

23.03.2014, 22:34. Просмотров 334. Ответов 5
Метки (Все метки)

Нужно написать "Матрица". Перегрузить операторы сложения, вычитания, умножения.
Написать методы, позволяющие вычислить след матрицы, детерминант, транспонировать, обратить матрицу.

Вот что получилось пока. Почему не работает множественное присваивание c = a = a; и c = a * b;
Помогите исправить ошибки! Проблемные строки я отметил ниже.


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
#include <iostream>
 
class matrix {
    private:
            
    int nrows_;
    int ncols_;
    double *mini_;
          
    public:
 
    matrix(int r = 2, int c = 2) { 
        nrows_ = r;
        ncols_ = c;
        mini_  = new double[r * c];
        for(int i = 0; i < nrows_; i++) 
        for(int j = 0; j < ncols_; j++)
                mini_[i * ncols_ + j] = 0;
        
    }    
    
    double operator()(int r, int c){  
        return mini_[r * ncols_ + c];
    }
   
    void getall(){ 
        for(int i = 0; i < nrows_; i++) {
            for(int j = 0; j < ncols_; j++)
                    std::cout << mini_[i * ncols_ + j] << " ";
            std::cout << std::endl;
        }
    }
    
    void put(int r, int c, double d){
        mini_[r * ncols_ + c] = d;        
    }
    
    void putall(){  
        for(int i = 0; i < nrows_; i++) 
        for(int j = 0; j < ncols_; j++)
                std::cin >> mini_[i * ncols_ + j];     
    }
    
    matrix(matrix &mc) {  
        nrows_ = mc.rget();
        ncols_ = mc.cget();
        mini_ = new double[nrows_ * ncols_];
        for(int i = 0; i < nrows_; i++)
        for(int j = 0; j < ncols_; j++)
                mini_[i * ncols_ + j] = mc(i, j); 
    }
 
 
    matrix operator=(matrix &mc){  
        if(this != &mc) {
                delete [] mini_;
                nrows_ = mc.rget();
                ncols_ = mc.cget();
                mini_ = new double [nrows_ * ncols_];
                for(int i = 0; i < nrows_; i++)
                for(int j = 0; j < ncols_; j++)
                        mini_[i * ncols_ + j] = mc(i, j); 
        }
        return *this;
    }
    
    double trace(){ 
        double t = 0;
        for(int i = 0; i < nrows_; i++){
        for(int j = 0; j < ncols_; j++)
                if (i == j) t += mini_[i * ncols_ + j];}
        return t;
    }
    matrix operator+=(matrix &mc){ 
        for(int i = 0; i < nrows_; i++)
        for(int j = 0; j < ncols_; j++)
                mini_[i * ncols_ + j] += mc(i, j); 
        return *this;
    }
    matrix operator-=(matrix &mc){ 
        for(int i = 0; i < nrows_; i++)
        for(int j = 0; j < ncols_; j++)
                mini_[i * ncols_ + j] -= mc(i, j); 
        return *this;
    }
    matrix operator * (matrix &b){  
        int M = this->nrows_;
        int N = this->ncols_;
        int P = b.ncols_;
        matrix m(M, P);
        for(int i = 0; i < M; i++)
        for(int l = 0; l < P; l++)
        for(int j = 0; j < N; j++)
                m.put(i, l, m(i, l) + mini_[i * ncols_ + j] * b(j, l));
        return m;
    }
 
 
 
   int rget() { 
        return nrows_;
   }
   
   int cget() { 
        return ncols_;
   }
   
   ~matrix() {  
        delete [] mini_;
   }
   
};
 
int main() {
    matrix a(3, 2);
    a.putall();
    std::cout << std::endl;
    matrix b(2, 3);
    b.putall();
    std::cout << std::endl;
    matrix c(3, 2);
    c = a = a;   // НЕ КОМПИЛИРУЕТСЯ
    c = a * b;   // НЕ КОМПИЛИРУЕТСЯ
    
    system("pause");
    return 0;
}
Добавлено через 44 минуты
Помогите, пожалуйста!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru