Форум программистов, компьютерный форум 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; Как это сделать на С++? подробнее

Показать сообщение отдельно
UFO94
 Аватар для UFO94
263 / 252 / 13
Регистрация: 04.04.2012
Сообщений: 546
13.05.2012, 12:27     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) {//Метод получения элемента [i;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++() {//Оператор инкремента: увеличение на 1 каждого элемента матрицы
        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");
}
Добавлено через 2 минуты
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() {//Конструктор, создающий Size с размерами 1 на 1
        column = 1;
        row = 1;
    }
 
    Size(int i, int j) {//Конструктор, создающий Size с размерами i на j
        column = i;
        row = j;
    }
 
    void set(int i, int j) {//Назначение Size размеров i на j
        column = i;
        row = j;
    }
 
    int get_column() {//Метод получения количества столбцов
        return column;
    }
 
    int get_row() {//Метод получения количества строк
        return row;
    }
};
 
Текущее время: 14:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru