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

Matrix. Комментарии к программе - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Перегруженный оператор () для std::set http://www.cyberforum.ru/cpp-beginners/thread572815.html
Зачем в СТЛ в контейренах типу SET и других перегружать оператор () вот код struct WordEntryLessById { bool operator () (const WordsEntry& lhs, const WordsEntry& rhs) const { return lhs.id < rhs.id; }
C++ Вводится последовательность чисел Вводится последовательность чисел. Подсчитать количество положительных и отрицательных чисел. http://www.cyberforum.ru/cpp-beginners/thread572800.html
Простое двухпутевое слияние.Сортировка. Реализация C++
Привет всем. Возникла такая проблема: пытаюсь реализовать сортировку простым двухпутевым слиянием по алгоритму из книжки Кнута. Даже сместил индексы(чтобы не с 0 начинаться, как в С) и, за что стыдно, расставил метки, но она все равно не работает на некоторых длинах массивов. Вот реализация: int s,p,i,j,k,l,d,q,r; s=0; p=1; Label2: if(s==0){i=1;j=n;k=n;l=2*n+1;} ...
Динамическое создание таймеров и обработка их событий C++ Builder
Здравствуйте, заранее прошу - не ругайте... По нажатию кнопки создаётся объект (инициализируя поля значениями из edit`ов), динамически создаётся таймер, задаётся интервал и обработчик события ontime. void __fastcall TForm5::Button1Click(TObject *Sender) { Count++; TTimer ** Timers = new TTimer * ;//здесь наверное ошибка, Timers = new TTimer(this);//так наверное нельзя писать......
C++ Ошибка при вводе разного кол-ва строк и столбцов в матрицы. Динамич. матрицы/массивы http://www.cyberforum.ru/cpp-beginners/thread572778.html
Дана матрица, размерность вводит пользователь, данные тоже. Осуществить сортировку вставками, массива, который будет получен из суммы модулей элементов строк. код написал, но когда ввожу размер матрицы 2*3 или 3*4, т.е. не одинаковое кол-вао строк и столбцов, то вылетает ошибка в этом месте программы: (matrix > 0)?Summa += matrix: Summa += (-1)*matrix; // молдули элементов строк, если...
C++ Приведение типов В паскале можно привести типы: type ts = 0..9; chislo = array of ts; Как это сделать на С++? подробнее

Показать сообщение отдельно
Дмитрий12
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 70
13.05.2012, 12:02  [ТС]     Matrix. Комментарии к программе
Цитата Сообщение от UFO94 Посмотреть сообщение
Ну, вы бы тогда и программу уже писали...
И еще, если вам известно, для чего она в целом, то это тоже напишите.
Создать класс Matrix, содержащий следующие элементы:
- поле «размер» Size s;
- поле «данные» int Data[s.Raw, s.Column];
- метод получения кол-во строк int GetRaw();
- метод получения кол-во столбцов int GetColumn();
- метод получения значения ячейки int GetValue(int i, int j);
- конструктор с параметрами Matrix(Size s, int InitialValue);
Создать класс Size, содержащий элементы:
- поле «кол-во строк» int Raw;
- поле «кол-во столбцов» int Column;
- конструктор с параметрами Size(int Raw, int Column);
В классе 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
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
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include "Size.cpp"
 
using namespace std;
 
 
class Matrix {
    Size sz;
    int **values;
 
public:
 
    Matrix(Size s, int value) {
        sz = s;
        init_matrix(value);
    }
    ~Matrix() {
        delete [] values;
    }
 
    void init_matrix(int value = 0) {
        
        try {
            values = new int*[sz.get_row()];
        } catch(bad_alloc xa) {
            exit(1);
        }
        int i;
        for(i = 0; i < sz.get_row(); i++) {
            try {
            values[i] = new int[sz.get_column()];
            } catch(bad_alloc xa) {
                exit(1);
            }
        }
        srand(time(0));
        for(i = 0; i < sz.get_row(); i++) {
            for(int j = 0; j < sz.get_column(); j++) {
                values[i][j]= rand()%20;
            }
        }
    }
 
    int get_rows() {
        return sz.get_row();
    }
    int get_columns() {
        return sz.get_column();
    }
    int get_value(int i, int j) {
        if(i < 0 || i >= sz.get_row()) return 0;
        if(j < 0 || j >= sz.get_column()) return 0;
        return values[i][j];
    }
    Matrix operator++() {
        for(int i = 0; i < sz.get_row(); i++) {
            for(int j = 0; j < sz.get_column(); j++) {
                values[i][j]++;
            }
        }
        return *this;
    }
 
    Matrix(const Matrix& copy) {
        sz = copy.sz;
        try {
            values = new int*[sz.get_row()];
        } catch(bad_alloc xa) {
            exit(1);
        }
 
        for(int i = 0; i < sz.get_row(); i++) {
            try {
                values[i] = new int[sz.get_column()];
            } catch(bad_alloc xa) {
                exit(1);
            }
 
            for(int j = 0; j < sz.get_column(); j++) {
                values[i][j] = copy. values[i][j] ;
            }
        }
    }
 
    Matrix& operator = (const Matrix& Copy){
        if (&Copy==this) return *this;
        int i;
        for(i = 0; i < sz.get_row(); i++) {
            delete[] values[i];
        }
 
        delete[] values;
        sz = Copy.sz;
            
        try {
            values = new int*[sz.get_row()];
        } catch(bad_alloc xa) {
            exit(1);
        }
 
        for(i = 0; i < sz.get_row(); i++) {
            try {
                values[i] = new int[sz.get_column()];
            } catch(bad_alloc xa) {
                exit(1);
            }
            for(int j = 0; j < sz.get_column(); j++) {
                values[i][j] = Copy. values[i][j] ;
            }
        }
        return *this;
    }
};
 
void main(int argc, char *argv[]) {
    
    Size sz(5, 5);
    Matrix m(sz, 12);
    //++m;
    char c;
    setlocale(LC_ALL, "Russian");
    while (1>0)
    {
        system("cls");
        cout << "Codepganue menu:\n";
        cout << "1. vetod nolychenuya kol-va ctpok int GetRaw();\n";
        cout << "2. metod nolychenuya kol-va ctolbcov int GetColumn();\n";
        cout << "3. metod nolychenuya znachenuya yacheuku int GetValue(int i, int j)\n";
        cout << "4. Matrix+nepegpyzka\n";
        cout << "5. Exit\n";
        cout << "Vesti nynkt menu->";
        cin>>c;
        switch(c)
        {
        case '1':
            cout<<sz.get_row()<<endl;
            system("pause");
            break;
        case '2':
            cout<<sz.get_column()<<endl;
            system("pause");
            break;
        case '3':
            int i, j;
            cout<<"Введите i: ";
            cin>>i;
            cout<<"Введите j: ";
            cin>>j;
 
            cout<<m.get_value(i, j)<<endl;
            system("pause");
 
            break;
        case '4':
cout << "ucxodnaya matrix\n";
            for(i = 0; i < sz.get_row(); i++) {
                for(int j = 0; j < sz.get_column(); j++) {
                    cout << m.get_value(i, j) << "\t";
                }
                cout << endl;
            }
            cout<<endl;
            ++m;
cout << "nepegrygenaya matrix\n";
            for(i = 0; i < sz.get_row(); i++) {
                for(int j = 0; j < sz.get_column(); j++) {
                    cout << m.get_value(i, j) << "\t";
                }
                cout << endl;
            }
            system("pause");
            break;
        case '5':
            return;
            break;
        }
    }
 
    system("pause");
}
Size.cpp
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
#include <iostream>
#include <stdio.h>
#include <conio.h>
 
using namespace std;
 
class Size {
    int column;
    int row;
    
public:
    Size() {
        column = 1;
        row = 1;
    }
 
    Size(int i, int j) {
        column = i;
        row = j;
    }
 
    void set(int i, int j) {
        column = i;
        row = j;
    }
 
    int get_column() {
        return column;
    }
 
    int get_row() {
        return row;
    }
};
 
Текущее время: 18:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru