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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задача и вывод:(! http://www.cyberforum.ru/cpp-beginners/thread953508.html
Задание: Дано вещественное число X (|X| < 1) и целое число N (> 0). Найти значение выражения 1 + X/2 − 1·X2/(2·4) + 1·3·X3/(2·4·6) − … + (−1)N−1·1·3·…·(2·N−3)·XN/(2·4·…·(2·N)). Полученное число является приближенным значением функции (1+X)1/2. Проверьте, что значение суммы для достаточно больших N близко к значению этой функции. Указание: в теле функции не использовать стандартную функцию...
C++ Подсчет количества символов написать программу какая с позиционной системы счисления выводит как число в десятичной системе счисления. То есть когда вводишь символы программа считает сколько символов и выводит на экран количество символов. Пример: ***** = 5 http://www.cyberforum.ru/cpp-beginners/thread953464.html
C++ Объясните работу кода
Здравствуйте, не могу понять работу следующего кода: #include <iostream> using namespace std; int main() { char buff = "0123456789"; char* ptr = buff; ptr += 5; cout<<1+ptr++<<endl;
Определить возраст по введенным данным C++
Везде искал, нигде не нашел. Итак, инициализируем три переменные int day, month, year ; и даем пользователю право их ввести cin >> day > month >> year; задача: по введенным данным определить возраст человека в годах, месяцах и днях.
C++ Перегрузка операторов: что к чему? http://www.cyberforum.ru/cpp-beginners/thread953404.html
Здравствуйте, не могу разобраться с сабжем. Вот здесь во втором примере, например, что за char data? Каким именно образом этот член класса учавствует в перегруженном операторе "==" ? Моя задача сводится также к перегрузке оператора "==". Вот как сравнить два объекта класса с тройкой данных-членов на эквивалентность? Я правильно понял, что логичнее перегрузить вышеозначенный оператор? Я не...
C++ Код для обновления своего .exe на новую версию Раскрываю сабж: есть программа.exe, она в автозагрузке, она работает, допустим я пишу новую версию этой программы и теперь мне нужно обновить программу на новую версию .exe, я даю команду на обновление этой программе, а далее нужна идея как построить алгоритм обновления? варианта вижу 2: 1й, простой, вариант. (алгоритм и реализация мне ясна) По команде обновиться, запускается другая... подробнее

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

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

13.09.2013, 00:02. Просмотров 519. Ответов 3
Метки (Все метки)

Доброго времени суток.
Есть класс матрица с указателем и размерностями строк и столбцов.
Проблема в том что не работает функция перемножения матриц void mul(matrix obj, matrix obj_1)
Подскажите пожалуйста в чем может быть проблема
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
#include <iostream>
 
using namespace std;
 
class matrix
{
    double **ptr;
    int m,n;
    bool error;
public:
    matrix():ptr(NULL),m(0),n(0){};
    matrix(int m)
    {
        ptr = new double * [m];
        for(int i=0; i<m; i++)
            ptr[i] = new double [1];
    }
    matrix(int m, int n)
    {
        this->m = m;
        this->n = n;
        ptr = new double * [m];
        for(int i=0; i<m; i++)
            ptr[i] = new double [n];
    }
    /*matrix(const matrix & obj)    //конструктор копирования
    {
        ptr = new double * [n];
        for(register int i=0; i<n; i++)
            ptr[i] = new double [m];
 
        for(int i=0; i<n; i++)
        {
            for(int j=0; j<m; j++)
            {
                ptr[i][j]=obj.ptr[i][j];
            }
        }
    }*/
    ~matrix()
    {
        for(int i=0; i<m; i++)
            delete [] ptr[i];
        delete [] ptr;
    }
    void inmtr()
    {
        for(int i=0; i<m; i++)
            for(int j=0; j<n; j++)
            {
                cout << "Input element matrix [" << i << "]" << "[" << j << "]" << ": ";
                cin >> ptr[i][j];
            }
    }
    void print()
    {
        cout << "Matrix:" << endl;
        for(int i=0; i<m; i++)
        {
            for(int j=0; j<n; j++)
                cout << ptr[i][j] << " ";
            cout << endl;
        }
    }
    void ret(int i, int j)  //функция получения елемента и его адреса
    {
        if (error == true)
            cout << "Error!" << endl;
        else
            cout << "Element = "<< ptr[i][j] << " Adress = " << &ptr[i][j] << endl;
        system("pause");
    }
    void add(matrix obj)
    {
        for(int i=0; i<m; i++)
            for(int j=0; j<n; j++)
                ptr[i][j] += obj.ptr[i][j];
    }
    void del(matrix obj)
    {
        for(int i=0; i<m; i++)
            for(int j=0; j<n; j++)
                ptr[i][j] -= obj.ptr[i][j];
    }
    void chl(int value)
    {
        for(int i=0; i<m; i++)
            for(int j=0; j<n; j++)
                ptr[i][j]*=value;
 
    }
    void mul(matrix obj, matrix obj_1)
    {
        for(int i=0; i<m; i++)
            for(int j=0; j<n; j++)
            {
                ptr[i][j]=0;
                for(int l=0; l<m; l++)
                    ptr[i][j] += obj.ptr[i][l]*obj_1.ptr[l][j];
            }
    }
};
 
void main()
{
    matrix obj(); //без параметров  
 
    matrix obj1(3); //строка
    obj1.inmtr();
    obj1.~matrix();
 
    matrix obj2(2,2); //с двумя параметрами
    obj2.inmtr();   //ввод
    obj2.print();   //печать
    obj2.ret(1,1);  //возвращение значения элемента 1-1 
 
    matrix obj2_1(2,2); //с двумя параметрами
    obj2_1.inmtr(); //ввод  
    obj2.add(obj2_1);   //сумма матриц obj2 и obj2_1
    obj2.print();
    
    matrix obj2_2(2,2); //с двумя параметрами
    obj2_2.inmtr(); //ввод
    obj2.del(obj2_2); //разность obj2 - obj2_2
    obj2.print();   //печать
 
    obj2.chl(3);    //умножение матрицы obj2 на 3
    obj2.print();   //печать
    
    matrix obj3(2,2);
    obj3.mul(obj2_2,obj2_1);    //умножение матрицы 2_2 на 2_1 и запись результата в матрицу 2
    obj3.print();               // печать
 
    obj2.~matrix(); //деструкторы
    obj2_1.~matrix();
    obj2_2.~matrix();
 
    system("pause");
};
Во вложении скрины ошибок при запуске из студии и из *.exe файла
Миниатюры
Класс матрица  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru