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

Матрицы - перегрузка оператора * - 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: void proc(); }; void myclass::proc() {
C++ Бинарное дерево (отладка) Прога работает и всё запускает (здесь фрагмент), но, к сожалению, выводит некие символы и т.д. Где что надо поправить? struct prod { char FI; int tnum,date,sum; }; http://www.cyberforum.ru/cpp-beginners/thread614332.html
Мышь да Клава C++
Помогите написать программу, котороя считает каждое нажатие на клавиатуру и мышь.
C++ Написать алгоритм
1. Написать алгоритм, находящий список вершин, находящийся на удалении 3 ребра от заданной вершины 2. Написать алгоритм, находящий в графе список вершин, образующих треугольник. 3. Написать алгоритм, строящий матрицу кратчайших путей для вершины графа, длина каждого ребра равна 1. 4. Выяснить существует ли путь из одной заданной вершины графа в другую заданную вершину. Граф задан: матрицей...
C++ Создать класс http://www.cyberforum.ru/cpp-beginners/thread614307.html
Ребятки пожааааалуйст!!!!!!!!!!Очень-очень прошу напишите как ее решать!!!!Я сама нечерта не понимааю!!! Создайте класс account, который должен хранить номер банковского счета, фамилию вкладчика, сумму на счете, дату открытия счета и дату последней операции. Фамилию вкладчика, дату открытия счета (число/месяц/год) и дату по-следней операции храните в виде символьной строки, а сумму на счете...
C++ Функция для смены обоев рабочего стола Вот хочу написать программу которая автоматически меняет обои рабочего стола. но у меня возникла пару вопросов: 1)WinApi Функция для смены обоев ? я думал применить SystemParametersInfo(); или может вы мне другую посоветуете. 2) Я хочу что бы программа меняла рабочие стол родными картинками windows, у меня возник вопрос, где они расположены в Windows 7 и Windows XP, и одинаково ли картинки... подробнее

Показать сообщение отдельно
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6176 / 2905 / 284
Регистрация: 04.12.2011
Сообщений: 7,730
Записей в блоге: 3
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;
}
 
Текущее время: 01:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru