Kselax.ru

Hacker Kselax — the best hacker in the world

Menu
  • Блог
  • Контакты
  • wp plugin генератор
  • Русский
    • Русский
    • English
Menu

Класс Matrix.

Posted on 25 марта, 201325 марта, 2013 by admin

Определите класс Matrix, аналогичный Mat4, но с размерами задаваемыми конструктором Matrix::Matrix(int,int).

Cсылка на класс Mat4: http://www.kselax.ru/2013/03/klass-mat4/.

Чото я подустал блин пара в парашу сходить 🙂 . Ладно как же быть? Что же нам делать? Нужно подумать. Мы наверно для начала построим Matrix на основе класса Vector ссылочка на класс: http://www.kselax.ru/2013/03/klass-vector/. Класс будет такой же самый как Mat4 на 4 элемента я короче копию сделаю просто его подредактирую. Когда ето все будет готово будет следующий этап. Мы уже введем конструктор Matrix::Matrix(int,int) и все — это самый простой будет этап. Ну что ж поехали.

Сделал я довольно таки быстро. Вот код. Файл Matrix.h:

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
//ob69vlenie Matrix
#ifndef Matrix_H
#define Matrix_H
 
#include <vector>
using std::vector;
 
#include "Vector.cpp"
 
class Matrix
{
public:
vector<Vector> mVec;//predctavlenie
int sStr;//kolichectvo ctrok v matrice
int sCtol;//kolichectvo ctolbcov
//konctryktor po ymolchaniyu
Matrix();
//konctryktor kopii
Matrix(const Matrix& a);
//konctryktor preobrazovani9 dl9 raznogo razmera
Matrix(int, int);
//pechat6
void print();
//vozvrachaet cculky na ob6ekt macciva a povtornui vuzov proicxodit dl9 Vector;
Vector& operator[](int i);
//vozvrachaet cculky na ob6ekt macciva a povtornui vuzov proicxodit dl9 Vector;
Vector operator[](int i)const;
 
};
 
Matrix operator+(const Matrix a, const Matrix b);
Matrix operator-(const Matrix a, const Matrix b);
Matrix operator*(const Matrix a, const float b);
 
#endif

файл Matrix.cpp:

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
//opredelenie Matrix
 
#include "Matrix.h"
 
//konctryktor po ymolchaniyu
Matrix::Matrix()
:sStr(4),sCtol(4)
{
Vector a(sCtol);
for(int i=0;i<sStr;i++)
{
mVec.push_back(a);
}
}
 
//konctryktor kopii
Matrix::Matrix(const Matrix& a)
:sStr(a.sStr),sCtol(a.sCtol)
{
for(int i=0;i<sStr;i++)
{
mVec.push_back(a.mVec[i]);
}
}
 
//konctryktor preobrazovani9 dl9 raznogo razmera
Matrix::Matrix(int c, int b)
:sStr(c),sCtol(b)
{
Vector a(sCtol);
for(int i=0;i<sStr;i++)
{
mVec.push_back(a);
}
}
 
//pechat6
void Matrix::print()
{
for(int i=0;i<sStr;i++)
{
for(int j=0;j<sCtol;j++)
{
cout <<mVec[i][j]<<' ';
}
cout <<endl;
}
}
 
//vozvrachaet cculky na ob6ekt macciva a povtornui vuzov proicxodit dl9 Vector;
Vector& Matrix::operator[](int i)
{
return mVec[i];
}
 
//vozvrachaet cculky na ob6ekt macciva a povtornui vuzov proicxodit dl9 Vector;
Vector Matrix::operator[](int i)const
{
return mVec[i];
}
 
 
 
Matrix operator+(const Matrix a, const Matrix b)
{
Matrix c;
for(int i=0;i<a.sStr;i++)
{
c[i]=a[i]+b[i];
}
return c;
}
 
Matrix operator-(const Matrix a, const Matrix b)
{
Matrix c;
for(int i=0;i<a.sStr;i++)
{
c[i]=a[i]-b[i];
}
return c;
}
 
Matrix operator*(const Matrix a, const float b)
{
Matrix c;
for(int i=0;i<a.sStr;i++)
{
for(int j=0;j<4;j++)
{
c[i][j]=a[i][j]*b;
}
}
return c;
}

файл main.cpp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//klacc Matrix
#include <iostream>
using std::cout;
using std::endl;
 
#include "Matrix.cpp"
 
int main()
{
Matrix a;
a.print();
Matrix b(7,8);
cout <<endl;
b.print();
return 0;
}

Все как вы видите я использую не раздельную компиляцию, а просто подключаю #include «Matrix.cpp» мне просто так удобнее тестить, когда уже оттестиш программу тогда уже можно подключить как положено и выполнить раздельную компиляцию. Мне просто так удобнее я делаю так, а вы как хотите, можете сразу делать раздельную компиляцию.

Решаем следующую.

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Рубрики

  • C++ (293)
  • JavaScript (1)
  • linux (1)
  • MFC (39)
  • node.js (2)
  • React (3)
  • uncategorized (2)
  • vBulletin (5)
  • Visual Studio (9)
  • wordpress (18)
  • Разное (35)

Метки

Ajax bootstrap CentOS CLI expressjs FormData GDlib google Invisible reCAPTCHA JWT media MFC php react-router-dom redux repository wordpress RTTI STL vBulletin vector Visual Studio WINAPI wordpress wp-plugins XMLHttpRequest Двоичное дерево Задачи С++ Игры С++ Исключения С++ О-большое Операторы_С++ Перегрузка операторов С++ Поиск С++ Потоки Проектирование_С++ С++ Типы_С++ Типы С++ Шаблоны С++ библиотеки локализация макросы С++ сортировка С++

Свежие комментарии

  • RA3PKJ к записи visual C++, создание диалоговых окон.
  • JasonReant к записи Создание и использование статических библиотек .lib в visual studio.
  • MyWin2020 к записи Программка для заполнения форума на vBulletin 3.8.7
  • ScottJip к записи Создание и использование статических библиотек .lib в visual studio.
  • ArnoldKig к записи Создание и использование статических библиотек .lib в visual studio.
©2021 Kselax.ru Theme by ThemeGiant