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

Перегрузить operator*() для перемножения матриц (объекты пользовательского типа Matrix) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Массив удаление. http://www.cyberforum.ru/cpp-beginners/thread323143.html
Помогите решить эти 2 задачки, мне это не как не дается. 1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел. 2) Распечатать полученный массив. 3) Удалить 5 первых элементы массива. 4) Добавить в конец массива 3 новых элемента. 5) Распечатать полученный массив. 1. Написать функцию, проверяющую есть ли отрицательные элементы в указанной строке двумерного...
C++ Функцыя в С++ Dev\Visual Написать програму с использованием функцый 1) В котором из 3-х чисел сума непарных цыфр минимальная? Написать програму с использованием рекурсии 2)Найти значение выражения sqrt(1+sqrt(1/2+sqrt(1/3+sqrt(1/4+...sqrt(1/pow(x,n)))))) для n корней http://www.cyberforum.ru/cpp-beginners/thread323137.html
C++ Массив сортировка по возростанию с удалением ненужных элементов.
Не как не могу разобраться.Необходимо в массиве произвести сортировку чисел в порядке возрастания причем лишнии элементы удаляются, первый элемент не изменяется. Вот что я немного набрасал из того что нашел. Помогите разобраться пожалуйста. #include<iostream.h> #include<conio.h> void main () { int p,j,max=0; int a={3,2,4,6,5,7,1,9,8,11};
однонаправленный циклический список C++
Здравствуйте, помогите с теорией, дано задание: Сравнить сложность добавления элемента в начало, конец и середину однонаправленного циклического списка. За первый элемент считать элемент, на который установлен специальный указатель, а последним – следующий элемент.
C++ На какой отметке остановится мотоциклист через определенное время? http://www.cyberforum.ru/cpp-beginners/thread323119.html
Длина Московской кольцевой автомобильной дороги —109 километров. Байкер Вася стартует с нулевого километра МКАД и едет со скоростью vкилометров в час. На какой отметке он остановится через t часов? Программа получает на вход значения v и t. Если v>0, то Вася движется в положительном направлении по МКАД, если же значение v<0, то в отрицательном. Программа должна вывести целое число от 0 до...
C++ Генерация PNG (проблема) //test3.cpp //---------------------------------------------------------- // #pragma pack(1) #include <stdio.h> #include <stdlib.h> struct _IHDR { подробнее

Показать сообщение отдельно
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
20.06.2011, 17:03     Перегрузить operator*() для перемножения матриц (объекты пользовательского типа Matrix)
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
#ifndef _MATRIX_H
#define _MATRIX_H
#include <iostream>
#include <vector>
#include <stdlib.h>
 
 
namespace external
{
    using namespace std;
 
    
 
    class matrix
    {
        vector<vector<int> > a;
        int n1,m1;
 
    public:
 
        matrix(const matrix&);
        matrix(const int&, const int&);
 
        ~matrix();
 
        matrix          operator*(const matrix&) const;
        vector<int>     operator[](const int&) const;
        matrix&         operator=(const matrix&);
 
        //friend matrix operator+ (matrix,int);
 
        friend ostream& operator <<(ostream& out, matrix& a)
        {
            cout.width(7);
            for (int i=0; i<a.n1; i++)
            {
                for (int j=0; j<a.m1; j++)
                    cout<<a.a[i][j];
                cout<<endl;
            }
            return out;
        }
    };
 
    matrix::matrix (const int& n=2, const int& m=2)
    {
        n1=n;
        m1=m;
 
        for (int i=0; i<n1; i++)
        {
            vector<int> tmp;
            for(int j=0; j<m1;j++)
            {
                tmp.push_back(rand() % 50);
            }
            a.push_back(tmp);
        }
 
    }
 
 
    matrix::matrix(const matrix& another) : a(another.a), n1(another.n1), m1(another.m1)
    {
        
    }
 
    matrix::~matrix()
    {
            //Nothing to do
    }
 
    vector<int> matrix::operator[](const int& index) const
    {
        return a[index];
    }
 
    matrix& matrix::operator=(const matrix& another)
    {
        a = another.a;
        n1 = another.n1;
        m1 = another.m1;
 
        return *this;
    }
    
 
    matrix matrix::operator *(const matrix& another) const
    {
        if (m1 != another.n1) throw 1;
        matrix c(n1, another.m1);
        for (int i=0; i < n1; i++)
            for (int j=0; j < another.m1; j++)
            {
                int Sum=0;
                for (int n=0; n < another.n1;n++)
                {
                    Sum += a[i][n] * another[n][j];
                }
                c[i][j]=Sum;
            }
 
        return c;
    }
}
#endif
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
#include "stdafx.h"
#include "module.h"
#include <iostream>
 
 
using external::matrix;
 
int main(int argc, char* argv[])
{
   matrix a;
   //cout<<a;
   matrix b (2,3);
   //cout<<b;
   matrix c;
   try
   {
        c=a*b;
   }
   catch (int e)
   {
        if(e)
            std::cout<<"Operation isn't possible";
   }
   
 
    return 0;
}
вот набросал чё то, должно работать
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru