Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 32, средняя оценка - 4.81
maks_b1
1 / 1 / 0
Регистрация: 26.11.2011
Сообщений: 29
#1

Класс "Матрица": конструктор, деструктор и перегрузка операторов - C++

20.12.2011, 22:02. Просмотров 5260. Ответов 22
Метки нет (Все метки)

Матрица – KMatrix
Методы:
конструкторы, деструктор;
операции: [], =, ==, !=, +, +=, –, –=, *, *=, <<, >>
функции:
Transpose – транспонирование матрицы,
Rows() – количество строк,
Cols() – количество колонок,
Swap() - обменять значения (т.е. матрицы).
Примечание:
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2011, 22:02
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Класс "Матрица": конструктор, деструктор и перегрузка операторов (C++):

Создать класс "Вектор" и реализовать конструктор по умолчанию, конструктор копирования и деструктор
Всем доброго времени суток! нужна ваша помощь! нужно создать класс вектор и...

Класс "Парабола", перегрузка операторов "||" и "/"
класс: парабола y=ax^2+bx+c; Члены класса: Коэффициенты a,b,c; Методы:...

Перегрузка операторов для класса "Матрица"
Доброго времени суток. Помогите довести до ума код: #include &quot;stdafx.h&quot;...

Класс "Дроби" и перегрузка операторов для этого класса
Всем Доброго времени суток. Есть учебная задача по условиям которой...

Класс "Матрица". Перегрузка оператора "минус"
Помогите дописать программу или исправить ее. Нужно было написать программу,...

Класс "динамический массив", перегрузка операторов +, =
Делаю класс динамического массива. Перегружая при этом операторы. На данный...

22
zss
Модератор
Эксперт С++
6959 / 6521 / 4139
Регистрация: 18.12.2011
Сообщений: 17,209
Завершенные тесты: 1
20.12.2011, 22:03 #2
А что конкретно Вам непонятно?
Не выписывать же сюда весь справочник по ООП.
0
maks_b1
1 / 1 / 0
Регистрация: 26.11.2011
Сообщений: 29
21.12.2011, 07:11  [ТС] #3
Я не понимаю,как это все реализовать?!
0
greeezz
274 / 167 / 21
Регистрация: 10.07.2011
Сообщений: 441
21.12.2011, 07:57 #4

Не по теме:


Цитата Сообщение от maks_b1 Посмотреть сообщение
Я не понимаю,как это все реализовать?!
вы наверное на одном курсе учитесь ТЫК Вам надо скооперироваться. Задачи то аналогичные. Хоть одна голова хорошо, а две - некрасиво. Зато шансов на решение больше.



Добавлено через 27 минут
как пример.
файл-заголовок в котором вы будете описывать ваш класс может выглядеть так.
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
#ifndef KMATRIX_H
#define KMATRIX_H
 
#include <iostream>
using std::ostream;
using std::istream;
 
class KMatrix {
public:
    KMatrix(int = 10, int = 10); //конструктор по умолчанию если не указан размер матрицы то создается матрица 10 на 10 
    ~KMatrix(); //деструктор
 
    friend ostream &operator<<(ostream &);
    friend istream &operator>>(istream &);
 
    //объявление функций перегрузки операторов
    int &operator[](int);
    const KMatrix &operator=(const KMatrix &);
    bool operator==(const KMatrix &) const;
    bool operator!=(const KMatrix &right) const;
    const KMatrix &operator+=(const KMatrix &);
    const KMatrix &operator-=(const KMatrix &);
    const KMatrix &operator+(const KMatrix &);
    const KMatrix &operator-(const KMatrix &);
    const KMatrix &operator*=(const KMatrix &);
    const KMatrix &operator*(const KMatrix &); //для умножения матрицы на матрицу
    const KMatrix &operator*(const int &); //это для умножения матрицы на целое число
    const KMatrix &operator*(const float &); //это для умножения матрицы на вещественное  число
                                             // и т.д.
 
    //get-еры set-еры
    int getColumns() const;
    void setColumns(int);
    int getRows() const;
    void setRows(int);
 
private:
    int **myMatrix;
    int rows;
    int columns;
 
};
 
#endif
теперь выполнить реализацию каждого метода класса. начиная с конструктора. Заканчия всем остальным. Работенки не мало одном словом.
1
maks_b1
1 / 1 / 0
Регистрация: 26.11.2011
Сообщений: 29
27.12.2011, 23:37  [ТС] #5
а можете , для примера описать какую либо функцию.
0
greeezz
274 / 167 / 21
Регистрация: 10.07.2011
Сообщений: 441
28.12.2011, 06:53 #6
Цитата Сообщение от maks_b1 Посмотреть сообщение
а можете , для примера описать какую либо функцию.
в качестве примеров написал перегрузку печати матрицы на стандартный вывод, умножения матрицы на целое число и оператора присвоения. Все выполнено в одном файле. (посчитал что так вам будет легче скомпилировать и запусить проект)
Прошу вас обратить внимание на способ перегрузки оператора [] для матрицы. Все дело в том что нельзя перегрузить оператор [][]. Возможно мой способ далек от совершенства но он работает. Если кто-то из людей знающих предложет что-то более простое но чтобы можно было использовать квадартные скобки, буду очень благодарен.
спрашивайте если что-то непонятно.
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
#include <iostream>
using std::istream;
using std::ostream;
using std::cout;
using std::cin;
using std::endl;
 
#include <iomanip>
using std::setw;
 
#include <cstdlib>
using std::rand;
using std::srand;
 
#include <ctime>
using std::time;
 
class KMatrix {
 
    //overloading >>  operators
    friend ostream &operator<<(ostream &, const KMatrix&);
 
private:
    int **myMatrix;
    int rows;
    int columns;
 
    int &getValue(int r, int c) {
        return this->myMatrix[r][c];
    }
 
    //this class is help class to overload  matrix subscript operator [][]
    class KMatrixRow {
    public:
        KMatrixRow(KMatrix &k, int row) :
                km(k) {
            if (row < 0 || row >= k.rows) {
                x = 0;
            } else {
                x = row;
            }
        }
        int &operator[](int y) {
            return km.getValue(x, y);
        }
    private:
        KMatrix &km;
        int x; // row number
    };
 
public:
    KMatrix(int = 4, int = 4); //конструктор по умолчанию если не указан размер матрицы то создается матрица 10 на 10
    ~KMatrix(); //деструктор
 
    void setToZero(); //set all values of matrix to 0
    void setRandValues(int = 0, int = 100); //fill matrix with random values
 
    //overload subscript operator.
    KMatrixRow operator[](int);
 
    //overload multiplication operator
    //multiply matrix with int value
    KMatrix &operator*(const int &);
 
    //overload assignment operator
    KMatrix &operator=(KMatrix &);
 
};
 
//constructor
KMatrix::KMatrix(int r, int c) :
        rows(r > 0 ? r : 4), columns(c > 0 ? c : 4) {
    myMatrix = new int*[r];
    for (int i = 0; i < rows; ++i) {
        myMatrix[i] = new int[columns];
    }
    setToZero();
}
 
//fill matrix with random values
void KMatrix::setRandValues(int from, int to) {
    srand(time(NULL));
    for (int i = 0; i < this->rows; ++i) {
        for (int j = 0; j < this->columns; ++j) {
            this->myMatrix[i][j] = (from + rand() % to);
        }
    }
}
 
//overload assignment operator
KMatrix &KMatrix::operator=(KMatrix &right) {
    if (&right != this) { // проверяем не присваиваем ли объект сам себе
        for (int i = 0; i < rows; ++i) { //deallocate memory
            delete[] this->myMatrix[i]; //for each row
        }
        delete[] this->myMatrix; //and matrix
 
        this->rows = right.rows;
        this->columns = right.columns;
 
        //create new matrix
        this->myMatrix = new int*[right.rows];
        for (int i = 0; i < this->rows; ++i) {
            this->myMatrix[i] = new int[right.columns];
        }
 
        //fill new matrix with values of right matrix
        for (int i = 0; i < this->rows; ++i) {
            for (int j = 0; j < this->columns; ++j) {
                this->myMatrix[i][j] = right[i][j];
            }
        }
    }
    return *this;
}
 
//overload multiplication operator
KMatrix &KMatrix::operator*(const int &num) {
 
    for (int i = 0; i < this->rows; ++i) {
        for (int j = 0; j < this->columns; ++j) {
            this->myMatrix[i][j] = this->myMatrix[i][j]*num;
        }
    }
    return *this;
}
 
//overload subscript operator
KMatrix::KMatrixRow KMatrix::operator[](int x) {
    return KMatrixRow(*this, x);
}
 
//overloaded outsream operator;
ostream &operator<<(ostream &out, const KMatrix &km) {
    for (int i = 0; i < km.rows; ++i) {
        for (int j = 0; j < km.columns; ++j) {
            out << setw(4) << km.myMatrix[i][j];
        }
        out << endl;
    }
    return out;
}
 
//set all elements of matrix to 0
void KMatrix::setToZero() {
    for (int i = 0; i < this->rows; ++i) {
        for (int j = 0; j < this->columns; ++j) {
            this->myMatrix[i][j] = 0;
        }
    }
}
 
//destructor
KMatrix::~KMatrix() {
}
 
int main(void) {
 
    //create KMatrix instance
    KMatrix km(5, 5);
 
    cout << "After initialising\n";
    cout << km;
 
    //set some values
    km[0][0] = 10;
    km[0][1] = 15;
    km[2][3] = 33;
 
    //print results
    cout << "\n\nAfter setting same elements";
    cout << "\n"<< km;
 
    //fill with random values
    km.setRandValues();
 
    //print matrix with random values
    cout << "\n\nAfter setting random values";
    cout << "\n" << km;
 
    int a = 2;
    KMatrix newMatrix;
 
    newMatrix = km * a;
 
    cout << "\n\nAfter multiplying by int value (2)";
    cout << "\n" << newMatrix;
 
    cin.get();
    return 0;
}

Не по теме:

С вам пиво С Наступающим!



Добавлено через 1 минуту
- = ВЫВОД = -

After initialising
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0


After setting same elements
10 15 0 0 0
0 0 0 0 0
0 0 0 33 0
0 0 0 0 0
0 0 0 0 0


After setting random values
77 97 36 14 78
39 96 41 41 43
10 43 6 1 34
94 62 16 91 83
67 53 38 51 29


After multiplying by int value (2)
154 194 72 28 156
78 192 82 82 86
20 86 12 2 68
188 124 32 182 166
134 106 76 102 58

1
dimcoder
Полярный
467 / 440 / 157
Регистрация: 11.09.2011
Сообщений: 1,142
28.12.2011, 10:32 #7
greeezz, прочитал код, класс row Имхо здесь не нужен.

Цитата Сообщение от greeezz Посмотреть сообщение
предложет что-то более простое но чтобы можно было использовать квадартные скобки
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
#include <iostream.h>
#include <conio.h>
 
class matrix
{
   public:
 
   matrix(int, int, int = 0);
   ~matrix();
 
   float*& operator[](int) const;
 
   void operator*=(matrix& b);
   void operator/=(matrix& b);
 
 
   private:
 
   float **mPtr;
 
   int n;
 
   int m;
}
 
matrix::matrix(int nk, int mk, int init)
{
   **mPtr = new (float[nk])[mk];
 
   n = nk;
 
   m = mk;
 
   for (int i = 0; i < n; i++)
      for (int j = 0; j < n; j++)
     mPtr[i][j] = init;
}
 
matrix::~matrix ()
{
   delete [] mPtr;
}
 
float*& matrix::operator[](int nk) const
{
   if ((nk > n-1) || (nk < 0))
      cout << "Error: array overflow..." << endl;
   return mPtr[nk];
}
 
 
 
 
 
main ()
{
   clrscr();
 
   matrix m(10, 15);
 
   m[3][3] = 32;
 
   cout << m[3][3] << endl;
 
   getch();
 
   return 0;
}
PS перегружал для float.
0
greeezz
274 / 167 / 21
Регистрация: 10.07.2011
Сообщений: 441
28.12.2011, 10:42 #8
dimcoder, строки 166, 167, 168 имеют место быть (а именно работать) только потому что я выполненил перегрузку оператора [].
но сама реализация перегрузки на мой взгляд не очевидная.

Добавлено через 9 минут
Цитата Сообщение от dimcoder Посмотреть сообщение
#include <iostream.h>
и такое бывает?
строка 24. нет точки с запятой.
строка 28. вообще не понял. буду благодарен за разъяснения.
строка 55. int main() ...
0
dimcoder
Полярный
467 / 440 / 157
Регистрация: 11.09.2011
Сообщений: 1,142
28.12.2011, 10:56 #9
Цитата Сообщение от greeezz Посмотреть сообщение
и такое бывает?
бывает. У меня только так и бывает, borland 3.0

Цитата Сообщение от greeezz Посмотреть сообщение
нет точки с запятой.
Странно, но у меня не требует. А так по идее конечно следовало бы её там стоять...


Цитата Сообщение от greeezz Посмотреть сообщение
строка 28. вообще не понял. буду благодарен за разъяснения.
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream.h>
#include <conio.h>
 
main ()
{
   float **mPtr;
   **mPtr = new (float[5])[6];
   mPtr[3][5] = 23;
   cout << mPtr[3][5];
   getch();
   return 0;
}
Ну как объяснить, выделяем динамическую память...
Цитата Сообщение от greeezz Посмотреть сообщение
строка 55. int main() ...
Старая привычка
0
greeezz
274 / 167 / 21
Регистрация: 10.07.2011
Сообщений: 441
28.12.2011, 11:06 #10
Цитата Сообщение от dimcoder Посмотреть сообщение
borland 3.0
ну тогда понятно.
такое по всей видимости только в борланде и бывает. а у меня например
C++
1
**mPtr = new (float[5])[6];
error: array bound forbidden after parenthesized type-id
error: cannot convert 'float*' to 'float' in assignment

Добавлено через 4 минуты
вроде как в обычном с++ строки
C++
1
2
float **mPtr;
**mPtr = new (float[5])[6]
будут выглядеть
C++
1
2
3
4
5
   float **mPtr;
   mPtr = new float*[5];
   for(int i = 0; i < 5; ++i){
       mPtr[i] = new float[6];
   }
0
dimcoder
Полярный
467 / 440 / 157
Регистрация: 11.09.2011
Сообщений: 1,142
28.12.2011, 11:08 #11
Цитата Сообщение от greeezz Посмотреть сообщение
error: array bound forbidden after parenthesized type-id
error: cannot convert 'float*' to 'float' in assignment
C++
1
*mPtr = new (float[5])[6];//Bez odnoy *
Если не пройдёт, создавайте как положено.
0
greeezz
274 / 167 / 21
Регистрация: 10.07.2011
Сообщений: 441
28.12.2011, 11:11 #12
Цитата Сообщение от dimcoder Посмотреть сообщение
C++
1
*mPtr = new (float[5])[6];//Bez odnoy *
Если не пройдёт, создавайте как положено.
error: array bound forbidden after parenthesized type-id

так вот в том и дело что, как положено, у меня получилось перегрузить оператор [] только с использованием так скажем вспомогательного класса.
0
dimcoder
Полярный
467 / 440 / 157
Регистрация: 11.09.2011
Сообщений: 1,142
28.12.2011, 11:36 #13
greeezz, вы же сами написали как правильно создать динамическую матрицу. Короче попробуйте это в http://liveworkspace.org/
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
#include <iostream>
using namespace std;
 
class matrix
{
   public:
 
   matrix(int, int, int = 0);
   ~matrix();
 
   float*& operator[](int) const;
 
   void operator*=(matrix& b);
   void operator/=(matrix& b);
 
 
   private:
 
   float **mPtr;
 
   int n;
 
   int m;
};
 
matrix::matrix(int nk, int mk, int init)
{
   //**mPtr = new (float[nk])[mk];
   mPtr = new float*[nk];
   for (int x = 0; x < nk; x++)
      mPtr[x] = new float[6];
 
   n = nk;
 
   m = mk;
 
   for (int i = 0; i < n; i++)
      for (int j = 0; j < n; j++)
    mPtr[i][j] = init;
}
 
matrix::~matrix ()
{
   delete [] mPtr;
}
 
float*& matrix::operator[](int nk) const
{
   if (nk > n-1)
      cout << "Error: array overflow..." << endl;
   return mPtr[nk];
}
 
 
 
 
 
main ()
{
   
 
   matrix m(10, 15);
 
   m[3][3] = 32;
 
   cout << m[3][3] << endl;
 
   return 0;
}
1
greeezz
274 / 167 / 21
Регистрация: 10.07.2011
Сообщений: 441
28.12.2011, 11:36 #14
dimcoder,
спасибо!
а можете объяснить float*& operator[](int) ...
меня интересует *& в данной функции.

если сказать правильнее у меня ощущение что я не понимаю что возвращает функция
0
dimcoder
Полярный
467 / 440 / 157
Регистрация: 11.09.2011
Сообщений: 1,142
28.12.2011, 11:43 #15
Цитата Сообщение от greeezz Посмотреть сообщение
*&
Вовращает указатель на разыменованный указатель. Хотя это заморочки... Можете амперсанд(&)убрать, не знаю нахрен я его туда вообще влепил :-D Надо подумать ________
Короче так работать тоже будет:
C++
1
float* operator[](int)
Но смысл вот в чём. Значит функция возвращает указатель, а там уж дела c++ и стандартного типа float, всё как у обычного массива. Хотя казалось бы...
0
greeezz
274 / 167 / 21
Регистрация: 10.07.2011
Сообщений: 441
28.12.2011, 11:50 #16
dimcoder, считайте меня датошным.. но!
ваша функция
C++
1
2
3
4
5
6
float* matrix::operator[](int nk) const
{
   if (nk > n-1)
      cout << "Error: array overflow..." << endl;
   return mPtr[nk];
}
корректна только для квадратной матрицы.
а как быть если количество колонок и строк разное?
0
dimcoder
Полярный
467 / 440 / 157
Регистрация: 11.09.2011
Сообщений: 1,142
28.12.2011, 12:06 #17
Вы имеете ввиду проверку на выход за границы? Здесь да, но в 7-едьмом сообщении я исправил эту ошибку (46-строка).
Цитата Сообщение от greeezz Посмотреть сообщение
корректна только для квадратной матрицы.
О_о Отожгли... ЛайвВоркСпэйс вам в помощь:
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
#include <iostream>
using namespace std;
 
class matrix
{
   public:
 
   matrix(int, int, int = 0);
   ~matrix();
 
   float*& operator[](int) const;
 
   void operator*=(matrix& b);
   void operator/=(matrix& b);
 
 
   private:
 
   float **mPtr;
 
   int n;
 
   int m;
};
 
matrix::matrix(int nk, int mk, int init)
{
   //**mPtr = new (float[nk])[mk];
   mPtr = new float*[nk];
   for (int x = 0; x < nk; x++)
      mPtr[x] = new float[6];
 
   n = nk;
 
   m = mk;
 
   for (int i = 0; i < n; i++)
      for (int j = 0; j < n; j++)
    mPtr[i][j] = init;
}
 
matrix::~matrix ()
{
   delete [] mPtr;
}
 
float*& matrix::operator[](int nk) const
{
   if ((nk > n-1) || (nk < 0))
      cout << "Error: array overflow..." << endl;
   return mPtr[nk];
}
 
 
 
 
 
main ()
{
   
 
   matrix m(10, 15); //NE KVAdratnYA MATRICA!
 
   m[4][3] = 32;
 
   cout << m[4][3] << endl;   //RABOTAET!
 
   return 0;
}
0
greeezz
274 / 167 / 21
Регистрация: 10.07.2011
Сообщений: 441
28.12.2011, 12:30 #18
Цитата Сообщение от dimcoder Посмотреть сообщение
Вы имеете ввиду проверку на выход за границы? Здесь да, но в 7-едьмом сообщении я исправил эту ошибку (46-строка).
из седьмого сообщения:
C++
1
2
3
4
5
6
float*& matrix::operator[](int nk) const
{
   if ((nk > n-1) || (nk < 0))
      cout << "Error: array overflow..." << endl;
   return mPtr[nk];
}
в этой функции вы делаете проверку только на валидность количества колонок. а не строк и колонок. именно по этому я и говорю что будет корректно только для квадратной матрицы. когда nk равно mk

попробуйте
C++
1
2
3
4
5
6
7
8
9
10
11
int main ()
{
 
   matrix m(10, 15); //NE KVAdratnYA MATRICA!
 
   m[4][28] = 32;   // NE RABOTAET!
 
   cout << m[4][28] << endl;   // NE RABOTAET!
 
   return 0;
}
Добавлено через 11 минут
Цитата Сообщение от greeezz Посмотреть сообщение
if ((nk > n-1) || (nk < 0))
еще хотелось бы добавить.
к примеру в вашем объекте m = 10 (строки), n = 5 (колонки), так вот если
a[9][5] - ваше условие вернет ошибку. потому что (nk > n-1) будет истина.

Добавлено через 1 минуту
в свзяи с этим мой вопрос остается открытым. как быть если матрица не квадратная. (кроме той перегруки которую я сделал в самам начале с использование вспомагательного класса.)
0
dimcoder
Полярный
467 / 440 / 157
Регистрация: 11.09.2011
Сообщений: 1,142
28.12.2011, 12:36 #19
Цитата Сообщение от greeezz Посмотреть сообщение
cout << m[4][28] << endl; // NE RABOTAET!
Так я и не спорю. Как не переделывайте функцию
Цитата Сообщение от dimcoder Посмотреть сообщение
float*& matrix::operator[](int nk) const
, проверку не проведёте. Мы получаем доступ к элементу при помощи перегруженного оператора [] типа float и ничего мы с этим не сделаем. Кстати, имхо непроверка на выход за границы это единственный минус.
0
greeezz
274 / 167 / 21
Регистрация: 10.07.2011
Сообщений: 441
28.12.2011, 20:59 #20
вроде все понял. спасибо большое.
Однако минус того что проверяется только количество строк и нельязя проверить количество колонок мне кажется существенным.
0
28.12.2011, 20:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2011, 20:59
Привет! Вот еще темы с решениями:

Класс "Прямая". Перегрузка операторов
Очень нужна ваша помощь, скоро сдавать лабораторную, а у меня затруднения.. Не...

Класс "Точка", перегрузка операторов
не могу найти где накосячил. тестил только арифметику. при выполнении получаю...

Класс "Дата", перегрузка операторов
Доброго времени суток,многоуважаемые форумчане! Делали лабу, по перегрузке...

Класс "Матрица", перегрузка оператора "+"
Здравствуйте. Создаю класс матрица, в нём перегружаю оператор &quot;+&quot;. На этапе...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru