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

Класс матриц - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создание bmp файлов на С++ http://www.cyberforum.ru/cpp-beginners/thread523412.html
Поделитесь пожалуйста информацией о том как создавать bmp файл на языке С++, а точнее создать файл bmp содержащий текст. Заранее благодарен.
C++ Случайные числа. Есть числа 2,4,6,8,0 - из них нужно случайно выбрать одно. Как это сделать? Google'ил, нашел только что то по типу #include <stdlib.h> ... randomize(); int a = random(N); //генерит число в промежутке но честно говоря не чего не понял :),так что еще помогите понят этот код. Зарание спасибо. http://www.cyberforum.ru/cpp-beginners/thread523408.html
Найти размер самого длинного слова в строке. C++
Строка состоит из нескольких слов, разделенных одним или несколькими пробелами.
C++ Определить сколько символов стоят после двоеточия
С клавиатуры вводится строка символов, содержащая " : " Определить сколько символов стоят после двоеточия.
C++ Класс "Денежная сумма" http://www.cyberforum.ru/cpp-beginners/thread523389.html
#include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv) class Densum {private: long double summa; public: Densum();
C++ Функция создающая новую матрицу Нужна функция которая создает новую квадратную матрицу, где элементы вычисляются по формуле B=1/(i+j-1) Не уверен правильно ли функция возвращает значение. И еще нужно вывести получившуюся матрицу в main-e. Помогите найти ошибку и правильно вывести новую матрицу. double createB(int n) { int i,j; double **B; B=new double *; for(i=0; i<n;i++) { подробнее

Показать сообщение отдельно
dota
3 / 3 / 0
Регистрация: 20.09.2010
Сообщений: 100
20.03.2012, 21:41     Класс матриц
Пишу класс для работы с матрицами . Не могу понять , почему не работают функции power и swap_rows (функции возвращают ту же матрицу без изменений) . Вот код :
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
#include<iostream.h>
class Matrix
{
    private : 
        int n_rows;
        int n_columns;
        double **mData;
 
    public :
        Matrix() : n_rows(0), n_columns(0), mData(0) {}
        Matrix(int n , int m) : n_rows(n), n_columns(m) {
            mData = new double * [n_rows];
            for ( int i = 0; i < n_rows; i++ )
                mData[i] = new double [n_columns];
        }
        double get_element(int i,int j){return mData[i][j];}
        void print(char name[]) {
            cout<<"The matrix"<<"\t"<<name<<endl;
            for(int i=0;i<n_rows;i++){
                for(int j=0;j<n_columns;j++){
                    cout<<mData[i][j]<<"\t";
                }
                cout<<endl;
            }
        }
        void input(char name[]) {
            cout<<"Enter the matrix"<<"\t"<<name<<endl;
            for(int i=0;i<n_rows;i++)
                for(int j=0;j<n_columns;j++)
                    cin>>mData[i][j];
        }
 
        Matrix operator + (const Matrix & m) const {
            if(n_rows != m.n_rows || n_columns != m.n_columns ) {
                cout << "Different sizes!" <<endl;
            }
            Matrix res(n_rows,n_columns);
             for ( int i = 0; i < n_rows; i++ )
                for ( int j = 0; j < n_columns; j++ )
                    res.mData[i][j] = mData[i][j] + m.mData[i][j];
                    return res;
        }
        Matrix operator - (const Matrix & m) const {
                    if(n_rows != m.n_rows || n_columns != m.n_columns ) {
                        cout << "Different sizes!" <<endl;
                    }
                    Matrix res(n_rows,n_columns);
                     for ( int i = 0; i < n_rows; i++ )
                        for ( int j = 0; j < n_columns; j++ )
                            res.mData[i][j] = mData[i][j] - m.mData[i][j];
                            return res;
                }
        Matrix operator * (const Matrix & m) const {
                            if(n_columns != m.n_rows ) {
                                cout << "Different sizes!" <<endl;
                            }
                            Matrix res(n_rows,m.n_columns);
                             for ( int i = 0; i < n_rows; i++ )
                                 for ( int j = 0; j < n_columns; j++ ) {
                                    res.mData[i][j] =0;
                                    for(int k = 0; k < n_columns; k++)
                                        res.mData[i][j] += mData[i][k] * m.mData[k][j];
                                 }
                                    return res;
                        }
        Matrix & operator = (const Matrix & m) const {
            Matrix res(m.n_rows,m.n_columns);
            for ( int i = 0; i < n_rows; i++ )
                for ( int j = 0; j < n_columns; j++ ) res.mData[i][j] = m.mData[i][j];
        }           
        Matrix trans() {
            Matrix res(n_columns,n_rows);
            for ( int i = 0; i < n_rows; i++ )
                for ( int j = 0; j < n_columns; j++ ) res.mData[j][i] = mData[i][j];
                return res;
        }
        Matrix swap_rows(int i,int j) {
            Matrix res(n_rows,n_columns);
            double tmp = 0;
            for(int k=0;k<n_columns;k++) {
                tmp = res.mData[i][k];
                res.mData[i][k] = res.mData[j][k];
                res.mData[j][k] = tmp;
            }
            return res;
        }
 
        Matrix power(int n) {
            Matrix res(n_rows,n_columns);
            if(n==1) return res;
            if(n==2) return res*res;
            else return res*res.power(n-1);
        }
 
};
 
int main()
{
    Matrix A(2,2),B(2,2);
    A.input("A");A.print("A");
    B.input("B");B.print("B");
    Matrix C=A+B;
    C.swap_rows(0,1);C.print("C=A+B");
    C.power(3);C.print("");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru