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

Создать класс для работы с прямоугольной матрицей размером 3х3 - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
mayaksl
0 / 0 / 0
Регистрация: 12.04.2012
Сообщений: 4
13.04.2012, 19:07     Создать класс для работы с прямоугольной матрицей размером 3х3 #1
ввести класс для работы с прямоугольной матрицей(3х3)
Реализовать оперцию : ввод матрицы с консоли (оператор >>)продемонстрируйте выполнение операции
с объектами этого класса
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2012, 19:07     Создать класс для работы с прямоугольной матрицей размером 3х3
Посмотрите здесь:

C++ Описать класс CFMATRIX1 для работы с матрицей вещественных чисел
C++ Описать класс для работы с матрицей вещественных чисел.
Составить класс для работы с целочисленной матрицей C++
[C++] класс для работы с целочисленной матрицей произвольного размера C++
C++ Составить класс для работы с целочисленной матрицей размера 3х3.
Написать программу в С++ Ввести класс для работы с прямоугольной матрицей C++
создать класс для работы с матрицей C++
C++ Создать класс для работы с матрицами

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
14.04.2012, 10:28     Создать класс для работы с прямоугольной матрицей размером 3х3 #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
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
#include <iostream>
#include <initializer_list>
#include <stdexcept>
#include <iomanip>
 
template<typename T>
class M3
{
private:
    typedef typename std::initializer_list<std::initializer_list<T>>::const_iterator cListIter;
    typedef typename std::initializer_list<T>::const_iterator cIter;
    T** p;
    static std::size_t const msize;
    void allocate()
    {
        p = new T*[msize];
        std::size_t i, j;
        try
        {
            for(i = 0; i < msize; ++i)
            {
                p[i] = new T[msize];
            }
        }
        catch (std::bad_alloc const&)
        {
            while(i--)
            {
                delete[] p[i];
            }
            delete[] p;
            throw;
        }
        return;
    }
public:
    M3(std::initializer_list<std::initializer_list<T>> l = std::initializer_list<std::initializer_list<T>>({{T(), T(), T()}, {T(), T(), T()}, {T(), T(), T()}}))
    {
        if(msize != l.size())
        {
            throw std::invalid_argument("matrix must be 3 x 3");
        }
        for(auto const& lst : l)
        {
            if(msize != lst.size()) throw std::invalid_argument("matrix must be 3 x 3");
        }
        allocate();
 
        std::size_t i = 0, j;
        for(cListIter it = l.begin(); i < msize; ++i, ++it)
        {
            j = 0;
            for(cIter subIt = it->begin(); j < msize; ++j, ++subIt)
            {
                p[i][j] = *subIt;
            }
        }
        return;
    }
 
    M3(M3 const& m)
    {
        allocate();
        for(std::size_t i = 0; i < msize; ++i)
        {
            for(std::size_t j = 0; j < msize; ++j)
            {
                p[i][j] = m.p[i][j];
            }
        }
        return;
    }
 
    virtual ~M3()
    {
        for(std::size_t i = 0; i < msize; ++i)
        {
            delete[] p[i];
        }
        delete[] p;
        return;
    }
 
    M3& operator=(M3 const& m)
    {
        if(this != &m)
        {
            this->~M3();
            new(this) M3(m);
        }
        return *this;
    }
 
    T* operator[](std::size_t ind)
    {
        if(ind >= msize)
        {
            throw std::out_of_range("ind >= msize");
        }
        else return p[ind];
    }
 
    friend std::istream& operator>>(std::istream& is, M3& m)
    {
        for(std::size_t i = 0; i < msize; ++i)
        {
            for(std::size_t j = 0; j < msize; ++j)
            {
                std::cout << "p[" << i << "][" << j << "] = ";
                is >> m.p[i][j];
            }
        }
        return is;
    }
 
    friend std::ostream& operator<<(std::ostream& os, M3 const& m)
    {
        for(std::size_t i = 0; i < msize; ++i)
        {
            for(std::size_t j = 0; j < msize; ++j)
            {
                std::cout << std::setw(5) << std::left << m.p[i][j];
            }
            std::cout << std::endl;
        }
        return os;
    }
};
 
template<typename T>
std::size_t const M3<T>::msize(3);
 
int main()
{
    M3<int> m({{-19,-5,19},{22,22,22},{3,3,3}}), m1({{5,5,5},{6,6,6},{7,7,7}}), m2;
    std::cin >> m2;
    m2[0][1] = -78;
    std::cout << m2 << std::endl;
    return 0;
}
mayaksl
0 / 0 / 0
Регистрация: 12.04.2012
Сообщений: 4
02.05.2012, 16:15  [ТС]     Создать класс для работы с прямоугольной матрицей размером 3х3 #3
выдает ошибки помогите исправить,некоторые я исправил)
unable to open include file INITIALIZER_LIST
unable to open include file STDEXCEPT
, expected
Undefined sumbol M3
Expression syntax
Type qualifer std must be a struct or class name
stalement missing ;
Undefined sumbol m2
Yandex
Объявления
02.05.2012, 16:15     Создать класс для работы с прямоугольной матрицей размером 3х3
Ответ Создать тему
Опции темы

Текущее время: 13:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru