Форум программистов, компьютерный форум, киберфорум
Наши страницы

Матрицы - перегрузка оператора * - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Методы и классы http://www.cyberforum.ru/cpp-beginners/thread614348.html
добрый день) код выдает ошибку "E2089 Identifier 'proc' cannot have a type qualifier". не могу понять в чем проблема. int main() { class myclass { int num; public:...
C++ Бинарное дерево (отладка) Прога работает и всё запускает (здесь фрагмент), но, к сожалению, выводит некие символы и т.д. Где что надо поправить? struct prod { char FI; int tnum,date,sum; }; http://www.cyberforum.ru/cpp-beginners/thread614332.html
Мышь да Клава C++
Помогите написать программу, котороя считает каждое нажатие на клавиатуру и мышь.
C++ Написать алгоритм
1. Написать алгоритм, находящий список вершин, находящийся на удалении 3 ребра от заданной вершины 2. Написать алгоритм, находящий в графе список вершин, образующих треугольник. 3. Написать...
C++ Создать класс http://www.cyberforum.ru/cpp-beginners/thread614307.html
Ребятки пожааааалуйст!!!!!!!!!!Очень-очень прошу напишите как ее решать!!!!Я сама нечерта не понимааю!!! Создайте класс account, который должен хранить номер банковского счета, фамилию...
C++ Функция для смены обоев рабочего стола Вот хочу написать программу которая автоматически меняет обои рабочего стола. но у меня возникла пару вопросов: 1)WinApi Функция для смены обоев ? я думал применить SystemParametersInfo(); или... подробнее

Показать сообщение отдельно
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6511 / 3148 / 308
Регистрация: 04.12.2011
Сообщений: 8,715
Записей в блоге: 5
02.07.2012, 21:09
Fedor N, вот класс в котором, к массиву можно обратиться индексно. Конечно одномерный массив + указательная арифметика универсальней. Но с индексами легче работать. Я то и в начале подумал, что Вы делаете это же. Посмотрите как вариант. Может понравится.
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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
#include "stdafx.h"
#include<iostream>
#include<cstdlib>
#include<locale.h>
#include<conio.h>
#include<cstdio>
#include<windows.h>
 
using namespace std;
class MyArr2D  {
public:
double **m_pArr;
int sizex;
int sizey;
//----------------------------------------
MyArr2D();
MyArr2D(int a, int b);
MyArr2D(double **ar, int a, int b);//передача указателя на 2D динамический массив
MyArr2D(const MyArr2D& a);
~MyArr2D();
//----------------------------------------
void show();
MyArr2D operator=(MyArr2D a);
MyArr2D operator+(MyArr2D a);
MyArr2D operator+(double a);
MyArr2D operator*(MyArr2D a);
MyArr2D operator*(double a);
};
//----------------------------------------
MyArr2D MyArr2D::operator*(MyArr2D a){
int nszx=sizex<a.sizex?sizex:a.sizex;
int nszy=sizey<a.sizey?sizex:a.sizey;
MyArr2D temp(nszx,nszy);    
for(int i=0; i<nszx; i++){
for(int j=0; j<nszy; j++){
temp.m_pArr[i][j]=m_pArr[i][j]*a.m_pArr[i][j];
}
}
return temp;
}
MyArr2D MyArr2D::operator*(double a){
MyArr2D temp(sizex,sizey);  
for(int i=0; i<sizex; i++){
for(int j=0; j<sizey; j++){
temp.m_pArr[i][j]=m_pArr[i][j]*a;
}
}
return temp;
}
MyArr2D MyArr2D::operator+(MyArr2D a){
int nszx=sizex<a.sizex?sizex:a.sizex;
int nszy=sizey<a.sizey?sizex:a.sizey;
 
MyArr2D temp(nszx,nszy);    
for(int i=0; i<nszx; i++){
for(int j=0; j<nszy; j++){
temp.m_pArr[i][j]=m_pArr[i][j]+a.m_pArr[i][j];
}
}
return temp;
}
MyArr2D MyArr2D::operator+(double a){
MyArr2D temp(sizex,sizey);  
for(int i=0; i<sizex; i++){
for(int j=0; j<sizey; j++){
temp.m_pArr[i][j]=m_pArr[i][j]+a;
}
}
return temp;
}
MyArr2D MyArr2D::operator=(MyArr2D a){
    if(sizex!=a.sizex||sizey!=a.sizey){
for(int i=0; i<sizex; i++){
delete  [] m_pArr[i];
}
sizex=a.sizex; sizey=a.sizey;
m_pArr=new double* [sizex];
for(int i=0; i<sizex; i++){
m_pArr[i]=new double[sizey];
}
}
for(int i=0; i<sizex; i++){
for(int j=0; j<sizey; j++){
m_pArr[i][j]=a.m_pArr[i][j];
}
}
return *this;
}
//--------------------------------------
void MyArr2D::show(){
cout<<"\nВ массиве такие элементы"<<"\n";
for(int i=0; i<sizex; i++){
for(int j=0; j<sizey; j++){
cout<<m_pArr[i][j]<<"\t";
}
cout<<"\n";
}
}
//----------------------------------------
MyArr2D::MyArr2D(){
sizex=0;
sizey=0;
m_pArr=0;
}
MyArr2D::MyArr2D(int sx, int sy){
sizex=sx;
sizey=sy;
m_pArr=new double* [sizex];
for(int i=0; i<sizex; i++){
m_pArr[i]=new double[sizey];
}
for(int i=0; i<sizex; i++){
for(int j=0; j<sizey; j++){
m_pArr[i][j]=0;
}
}
}
MyArr2D::MyArr2D(double **ar, int sx, int sy){
sizex=sx;
sizey=sy;
m_pArr=new double* [sizex];
for(int i=0; i<sizex; i++){
m_pArr[i]=new double[sizey];
}
for(int i=0; i<sizex; i++){
for(int j=0; j<sizey; j++){
m_pArr[i][j]=ar[i][j];
}
}
}
MyArr2D::MyArr2D(const MyArr2D& a){
 
    sizex=a.sizex ; sizey=a.sizey;
    if(a.m_pArr){
m_pArr=new double* [sizex];
for(int i=0; i<sizex; i++){
m_pArr[i]=new double[sizey];
}
for(int i=0; i<sizex; i++){
for(int j=0; j<sizey; j++){
m_pArr[i][j]=a.m_pArr[i][j];
        }
    }
    }else{
m_pArr=0;
    }
}
//--------------------------------------
MyArr2D::~MyArr2D(){
    
for(int i=0; i<sizex; i++){
delete  [] m_pArr[i];
}
delete [] m_pArr;
}
//---------------------------------------
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"");
MyArr2D mAr=MyArr2D(4,4);
mAr.show();
double arr[3][2]={1,2,3,4,5,6};
 
int sizex=10;
int sizey=5;
double **m_pArrd=new double* [sizex];
for(int i=0; i<sizex; i++){
m_pArrd[i]=new double[sizey];
}
for(int i=0; i<sizex; i++){
for(int j=0; j<sizey; j++){
m_pArrd[i][j]=i*i+j*j;
}
}
MyArr2D mAr1=MyArr2D(m_pArrd,sizex,sizey);
mAr1.show();
MyArr2D mAr2=MyArr2D(mAr1);
mAr2.show();
mAr.m_pArr[0][0]=23;
mAr.m_pArr[0][1]=35;
mAr.m_pArr[0][3]=11;
mAr1=mAr;
mAr1.show();
mAr1=mAr2+mAr1;
mAr1.show();
mAr2.show();
mAr1=mAr1+mAr2;
mAr1.show();
mAr2.show();
mAr1=mAr2*mAr1;
mAr1.show();
mAr2.show();
mAr1=(mAr1+3)*10;
mAr1.show();
system("pause");
    return 0;
}
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.