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

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

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

Показать сообщение отдельно
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 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;
}
 
Текущее время: 15:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru