Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 24.04.2020
Сообщений: 23
1

Сложение двух матриц и присвоение результата третьей переменной-матрице осуществляется одной строкой C=A+B

11.10.2020, 09:19. Показов 927. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Реализовать на языке C++ параметризованный класс «Матрица»

вектор в декартовой системе N координат. Вектор в полярных координатах.

Сложение двух матриц и присвоение результата третьей переменной-матрице осуществляется одной строкой C=A+B

Помогите написать код программы на языке C++

Пример программы:

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
140
141
142
143
144
145
//класс вещество, содержащий температуру и массу
 
class Substance {
 
double Mass;
 
double Temperature;
 
public:
 
//требуется перегрузка оператора сложения для класса Substance, так как данная операция совершается в классе Matrix. Без данной перегрузки компилятор выдаст ошибку
 
Substance operator + (Substance c) {
 
Substance res;
 
res.Mass = this->Mass + c.Mass;
 
res.Temperature = (this->Temperature*this->Mass +
 
c.Temperature*c.Mass) / (this->Mass + c.Mass);
 
return res;
 
}
 
//так как метод rand_val вызывается из класса Matrix, то данный метод должен обязательно присутствовать в классе Substance
 
static Substance rand_val() {
 
Substance res;
 
res.Mass = (rand() % 2000) / 100.0 + 5;
 
res.Temperature = (rand() % 2000) / 100.0 + 10;
 
return res;
 
}
 
//так как метод to_str вызывается из класса Matrix, то данный метод должен обязательно присутствовать в классе Substance
 
void to_str(char* bufer) {
 
sprintf(bufer, "M=%.2lf;T=%.2lf", Mass, Temperature);
 
}
 
};
 
 
 
//определение шаблонного класса Matrix, который позволяет хранить матрицу из объектов, которые имеются тип T
 
template <class T>
 
class Matrix{
 
//определение массива элементов типа T
 
T m[4][4];
 
public:
 
Matrix() {
 
for (int i = 0; i < 4; i++)
 
for (int j = 0; j < 4; j++)
 
m[i][j] = T::rand_val();
 
}
 
//запись T::rand_val() в шаблонном классе предполагает наличие у класса T публичного статического метода rand_val. Программа не может быть собрана, если у класса T нет данного метода.
 
 
 
void print() {
 
char *bufer = new char[100];
 
printf("Matrix\n");
 
for (int i = 0; i < 4; i++) {
 
for (int j = 0; j < 4; j++) {
 
m[i][j].to_str(bufer);
 
printf("%s\t", bufer);
 
}
 
printf("\n");
 
}
 
printf("\n");
 
delete bufer;
 
}
 
//запись m[i][j].to_str(bufer) для элемента (он имеет тип T) массива m предполагает наличие метода to_str у класса T. Программа не может быть собрана, если у класса T нет данного метода.
 
 
 
Matrix operator + (Matrix &b) {
 
Matrix<T> res;
 
for (int i = 0; i < 4; i++)
 
for (int j = 0; j < 4; j++)
 
res.m[i][j] = this->m[i][j] + b.m[i][j];
 
return res;
 
}
 
//операция сложения между экземплярами класса T (это - this->m[i][j] и b.m[i][j]) предполагает наличие у класса T перегруженного оператора сложения. Программа не может быть собрана, если у класса T нет данного перегруженного оператора.
 
};
 
 
 
//класс Substance имеет статический метод rand_val(), метод to_str() и перегруженный оператор сложения, поэтому он может быть использован в качестве параметра шаблонного класса Matrix.
 
void main() {
 
Matrix<Substance> m1;
 
m1.print();
 
Matrix<Substance> m2;
 
m2.print();
 
Matrix<Substance> m3 = m1 + m2;
 
m3.print();
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.10.2020, 09:19
Ответы с готовыми решениями:

Объявление переменной и присвоение ей значения одной строкой кода
Здравствуйте! Подскажите пожалуйста как объявить переменную и сразу же присвоить ей значение в...

Поиск файлов с нужной строкой и присвоение им переменной
Есть папка с подкаталогами и в них 12к текстовых файлов, нужно найти два(или больше) из них в...

Транспонирование, умножение матриц, сложение матриц Реализовать в одной программере
транспонирование, умножение матриц, сложение матриц; B^3-A^T Реализовать в одной программере....

Присвоение переменной результата запроса
Подскажите как переменной присвоить результат SQL запроса?

0
11.10.2020, 09:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.10.2020, 09:19
Помогаю со студенческими работами здесь

Присвоение переменной результата запроса
Подскажите, пожалуйста, а то что-то встал в ступор, есть следующий код: Private Sub...

Присвоение переменной результата запроса
Подскажите как присвоить значение результата запроса переменной, причём чтоб переменная...

Сложение матриц и транспонирование результата
В задании данные считываются из файла (ов) и результат выводится в файл. Даны матрицы А(4,4) и...

Присвоение переменной vb результата SQL-запроса
Здрасте! Такая проблема: не могу присвоить переменной vb результат SQL-запроса (подсчет кол-ва...

Присвоение значения одной переменной значению другой переменной
Здравствуйте! При загрузке приложение считывает значения узлов в xml файле (например,...

Симметрия и присвоение переменной в матрице
Доброго времени суток. Задание состоит в том, чтобы транспонированная матрица сравнивалась с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru