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

Класс для работы с матрицей - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Последовательность из 40 нулей и единиц http://www.cyberforum.ru/cpp-beginners/thread767356.html
Всем доброго времени суток. Дали задание курсовой, даже нет идей как это реализовать. Задание: Найти последовательность из 40 нулей и единиц, в которой никакой отрезок не повторяется три раза подряд или установить, что такой последовательности не существует. Буду благодарен на любые идеи реализации.
C++ Описать структуру Animal, которая содержит данные о животном Помогите пожалуйста, очень нужно решении вот такой задачи: объявите структуру Animal, которая должна содержать следующие данные о животном возраст пол, имя, есть/нет хозяина. пользователь должен иметь возможность: 1.формировать любое количество животных в программе 2.подсчитывать количество животных с заданным полом 3.сохранять данные в файле 4.считывать данные из файла 5.сортировать... http://www.cyberforum.ru/cpp-beginners/thread767335.html
Функция Аккермана без рекурсии C++
Задача: A(0, n) = n + 1; A(m, 0) = A(m–1, 1); при m > 0; A(m, n) = A(m–1, A(m, n–1)); при m > 0 и n > 0. С рекурсией она решается так (размер стека пришлось увеличить, дабы хотя бы (4;1), (5;0) считало): int AkkR(int m, int n) { if(m==0 && n>0) return n+1; if(n==0 && m>0) return AkkR(m-1, 1); else return AkkR(m-1,AkkR(m, n-1));
C++ Нужно составить программу вычисления выражения
нужно составить программу вычисления Z,
C++ Проверка открытия файла вывода http://www.cyberforum.ru/cpp-beginners/thread767288.html
#include <iostream> #include <fstream> #include <stdio.h> #include <string> using namespace std; int main () { cout <<"enter way: ";
C++ Неадекватное поведение цикла Предсавляю вашему вниманию код программы: #include <iostream> #include <stdlib.h> int main() { for (int i=1; i<=999; i++) printf ("%d\n", i); подробнее

Показать сообщение отдельно
_andrew_
22 / 22 / 3
Регистрация: 14.11.2012
Сообщений: 64
20.01.2013, 20:14     Класс для работы с матрицей
Ввести класс для работы с прямоугольной матрицей(3х3).
Реализовать оперцию : ввод матрицы с консоли (оператор >>). Продемонстрируйте выполнение операции с объектами этого класса.
Код:
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
#include <iostream>
#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;
}
кучу ошибок выдает(((
Если у кого-нибудь есть похожая задача, поделитесь, если не сложно
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru