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

Класс для работы с матрицами - Что дает перегруженный оператор индексирования? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Определить, какой из элементов повторяется в массиве наибольшее число раз http://www.cyberforum.ru/cpp-beginners/thread830198.html
Есть задание, но решить не могу, точнее не могу как задали. Можно задачу сделать с использование вложенного цикла, можно и без. Но вот до меня не доходит. Сама задача: Дан натуральный массив А размера n. Не создавая дополнительные массивы, определите, какой из элементов повторяется в массиве наибольшее число раз, и найдите его порядковый номер, ближайший к началу последовательности. Задачу...
C++ Перезагрузка операторов "неоднозначный operator" Не знаю в ту ли группу пишу, но все же.... Для моего класса есть несколько операторов присвоения const MyStr& operator +=(const MyStr& val); const MyStr& operator +=(const WCHAR *val); const MyStr& operator +=(const WCHAR val); const MyStr& operator +=(const char * val); const MyStr& operator +=(const char val); const MyStr& operator +=(const int val); все работает вроди бы нормально, но... http://www.cyberforum.ru/cpp-beginners/thread830191.html
Напечатать все слова последовательности, которые встречаются по одному разу C++
2)Дана последовательность слов. Напечатать все слова последовательности, которые встречаются в ней по одному разу.
Обнаружение повторяющихся слов C++
Здравствуйте! Никак не могу до конца понять пример из Страуструпа. Есть код, который обнаруживает повторяющиеся слова: // Обнаружение повторяющихся слов #include "std_lib_facilities.h" int main() { string previous = " ", current;
C++ Определить, сколько раз число, введенное пользователем, повторяется в массиве http://www.cyberforum.ru/cpp-beginners/thread830170.html
Как используя массивы создать программу, которая покажет сколько раз число, введенное пользователем повторяется в массиве? Например, есть массив int numbers = { {1,2,3,4,5}, {6,7,8,9,1}, {5,8,1,3,7} }; и когда программа просит ввести число, если мы вводим число 8, то программа показывает сообщение о том, что число 8 повторяется в массиве 2 раза. Помогите новичку (просьба написать легким языком...
C++ Определитель матрицы методом Гаусса Здравствуйте! Помогите написать программу на с++, которая на вычисляет определитель матрицы методом гаусса с выбором главного элемента по строке! подробнее

Показать сообщение отдельно
EvengarS
0 / 0 / 0
Регистрация: 02.04.2013
Сообщений: 33
07.04.2013, 21:18  [ТС]     Класс для работы с матрицами - Что дает перегруженный оператор индексирования?
У меня был почти такой вариант, только Matrix вместо Matrix&, это существенно?
В любом случае с таким вариантом тоже не работает, програма зависает.
Сейчас такой вариант, можете попробовать скомпилировать?
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
#include <iostream>
#include <stdlib.h>
using namespace std;
 
class Matrix
{
private:
    int row, col;
//  static int numb;
    int ** IntData;
public:
    friend Matrix operator+(const Matrix& l, const Matrix& r);
    Matrix() // конструктор по умолчанию
    {
//      numb++;
        row = 0; col = 0;
        IntData = new int*[row];
                for (int i = 0; i < row; i++){
                    IntData[i] = new int[col];
                }
    }
 
    Matrix(int _row, int _col): row(_row), col(_col) // конструктор c параметрами
    {
//      numb++;
        IntData = new int*[row];
        for (int i = 0; i < row; i++){
            IntData[i] = new int[col];
                 for (int j = 0; j < col; j++){
                     IntData[i][j] = rand();
                 }
             }
    }
    Matrix(const Matrix& m) // конструктор копирования
    {
//      numb++;
        if (row != m.row || col != m.col)
        {
            for(int i = 0; i < row; ++i)
            delete [] IntData[i];
            delete [] IntData;
            row = m.row;
            col = m.col;
            IntData = new int*[row];
            for(int i = 0; i < row; ++i)
                IntData[i] = new int[col];
        }
        for (int i = 0; i < row; ++i)
            for (int j = 0; j < col; ++j)
                IntData[i][j] = m.IntData[i][j];
        };
 
    ~Matrix()
    {
        for (int i = 0; i < row; i++){
        delete[] IntData[i];
        delete[] IntData;
//      numb--;
        }
    }
 
 
    int* operator[](int elem)
    {
        return IntData[elem];
    }
 
    Matrix& operator++() // префиксная
    {
        ++row;
        ++col;
        return *this;
    }
 
    Matrix& operator++(int notused) // постфиксная
    {
        row++;
        col++;
        return *this;
    }
 
    void Display()
    {
         cout << "\n Matrix \n";
         for (int i = 0; i < row; i++){
             cout << "\nRow: " << i << " >";
             for (int j = 0; j < col; j++){
                 cout << " " << IntData[i][j];
             }
         }
         return;
    }
 
    void SubMatrix()
    {
        int x, y, n, m;
        cout << "\nStart element [x][y]" << "\nx = ";
        cin >> x;
        cout << "y = ";
        cin >> y;
        cout << "Submatrix rows = ";
        cin >> m;
        cout << "Submatrix columns = ";
        cin >> n;
        cout << "\n SubMatrix \n";
             for (int i = x; i < m + x; i++){
                 cout << "\nRow: " << i << " >";
                 for (int j = y; j < n + y; j++){
                     cout << " " << IntData[i][j];
                 }
             }
             return;
    }
};
 
    Matrix operator+(const Matrix& l, const Matrix& r)
    {
        if (l.col != r.col || l.row != r.row)
        cout << "wrong matrix size";
        Matrix result(l.row, l.col);
        for (int i = 0; i < l.row; ++i)
        for (int j = 0; j < l.col; ++j)
            result.IntData[i][j] = l.IntData[i][j] + r.IntData[i][j];
        return result;
    };
 
 
int main()
{
    Matrix m1(4, 4);
    m1.Display();
    Matrix m2(5, 5);
    m2.Display();
    ++m1;
    m1.Display();
    Matrix m3 = m1 + m2;
    m3.Display();
 
    system("pause");
    return(0);
}
Без операции ++m1; в main() вполне себе работает
 
Текущее время: 06:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru