Форум программистов, компьютерный форум, киберфорум
Наши страницы

Матрица, перегрузка операторов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Разработать программу, которая выводит на экран горизонтальную линию из символов http://www.cyberforum.ru/cpp-beginners/thread325514.html
Разработать программу, которая выводит на экран горизонтальную линию из символов. Число символов, какой использовать символ, и какая будет линия- вертикальная, или горизонтальная - указывает...
C++ Исчеpли свойства в окне Properties Помогите пожалуйста... Проблема с Visual Studio!! Раньше когда я например в resorce view тыкал на любой элемент и окне propeties менял его название, свойства... а сейчас у меня просто пустое окно... http://www.cyberforum.ru/cpp-beginners/thread325494.html
C++ Замена getch()
Здравствуйте. Решил повысить переносимость своего кода и задался вопросом: на что заменить getch? Насколько я понимаю, эта функция откажется работать в юникс-системах и тп. Хочу добиться эффекта...
C++ C++ моя контрольная
Вот задачи: ------ Есть ошибки при использовании параметров шаблона функций в прототипе? почему? template <class D, class C> D func2(int,C); ------ Напишите указатель на ф-цию,...
C++ protected или не protected : ) http://www.cyberforum.ru/cpp-beginners/thread325437.html
собстно не могу решить как поступить. есть абстрактный класс окошка, являющийся базовым для всех окошек. есть 3 варианта организации/реализации иерархии классов(на примере хранения размера...
C++ Дан Двухмерный массив.Определить: 1) В каком столбце массива сумма элементов меньше: в первом или в последнем; 2) В какой строке массива сумма элементов больше: во второй или в третьей? подробнее

Показать сообщение отдельно
silent_1991
Эксперт С++
4987 / 3044 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
24.06.2011, 22:00
Я предлагал так:

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
#include <iostream>
 
class Row
{
public:
    Row(size_t size = 1):
    m_size(size),
    m_row(new double [m_size])
    {
        for (size_t i = 0; i < m_size; ++i)
            m_row[i] = 0.0;
    }
 
    Row(const Row &source):
    m_size(source.m_size),
    m_row(new double [m_size])
    {
        for (size_t i = 0; i < m_size; ++i)
            m_row[i] = source.m_row[i];
    }
 
    ~Row()
    {
        delete [] m_row;
    }
 
    void resize(size_t new_size)
    {
        double *new_row = new double [new_size];
 
        for (size_t i = 0; i < m_size; ++i)
            new_row[i] = m_row[i];
 
        for (size_t i = m_size; i < new_size; ++i)
            new_row[i] = 0.0;
        
        delete [] m_row;
 
        m_row = new_row;
        m_size = new_size;
    }
 
    double &operator[](size_t index)
    {
        return m_row[index];
    }
 
    const double &operator[](size_t index) const
    {
        return m_row[index];
    }
 
private:
    size_t m_size;
    double *m_row;
};
 
class Matrix
{
public:
    Matrix(size_t rows = 1, size_t cols = 1):
    m_rows(rows),
    m_matrix(new Row [m_rows])
    {
        for (size_t i = 0; i < m_rows; ++i)
            m_matrix[i].resize(cols);
    }
 
    ~Matrix()
    {
        delete [] m_matrix;
    }
 
    Row &operator[](size_t index)
    {
        return m_matrix[index];
    }
 
    const Row &operator[](size_t index) const
    {
        return m_matrix[index];
    }
 
private:
    size_t m_rows;
    Row *m_matrix;
};
 
int main()
{
    const size_t rows = 2;
    const size_t cols = 2;
 
    Matrix m(rows, cols);
 
    for (size_t i = 0; i < rows; ++i)
        for (size_t j = 0; j < cols; ++j)
            m[i][j] = i + j;
 
    for (size_t i = 0; i < rows; ++i)
    {
        for (size_t j = 0; j < cols; ++j)
            std::cout << m[i][j] << "  ";
 
        std::cout << std::endl;
    }
 
    return 0;
}
Добавлено через 3 минуты
Метод pito211:

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
#include <iostream>
 
class Matrix
{
public:
    Matrix(size_t rows = 1, size_t cols = 1):
    m_rows(rows),
    m_cols(cols),
    m_matrix(new double *[m_rows])
    {
        for (size_t i = 0; i < m_rows; ++i)
            m_matrix[i] = new double [m_cols];
    }
 
    ~Matrix()
    {
        for (size_t i = 0; i < m_rows; ++i)
            delete [] m_matrix[i];
 
        delete [] m_matrix;
    }
 
    double *operator[](size_t index)
    {
        return m_matrix[index];
    }
 
    const double *operator[](size_t index) const
    {
        return m_matrix[index];
    }
 
private:
    size_t m_rows;
    size_t m_cols;
    double **m_matrix;
};
 
int main()
{
    const size_t rows = 2;
    const size_t cols = 2;
 
    Matrix m(rows, cols);
 
    for (size_t i = 0; i < rows; ++i)
        for (size_t j = 0; j < cols; ++j)
            m[i][j] = i + j;
 
    for (size_t i = 0; i < rows; ++i)
    {
        for (size_t j = 0; j < cols; ++j)
            std::cout << m[i][j] << "  ";
 
        std::cout << std::endl;
    }
 
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru