0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 9
1

Написать класс «матрица»

10.07.2014, 17:51. Показов 2860. Ответов 26
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день я новичок помогите мне Написать класс «матрица». В классе реализовать следующие методы: конструкторы (по умолчанию, с
параметрами, копирования), деструктор, ввод с клавиатуры, поиск элемента по ключу,
вывод на экран (в виде методов класса и при помощи перегруженных операций
потокового ввода и вывода), перегрузить следующие операции: +, += (сложение матриц),
– (вычитание), = (присвоение), = = (сравнение по элементам), [] (взятие элемента с
заданным индексом).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2014, 17:51
Ответы с готовыми решениями:

Написать класс Матрица. Массив объектов класса Массив
Написать класс Матрица (в данном случае матрица – массив объектов класса Массив из предыдущего...

Написать класс "матрица"
Написать класс "матрица" В классе реализовать методы: конструкторы (по умолчанию, с параметрами,...

Определить базовый класс "Матрица" и класс-потомок "Треугольная матрица"
Нужно определить класс "матрица" с возможностью динамического выделения и освобождения памяти,...

Класс: Реализовать класс Matrix - матрица, на основе двухмерного массива размерности M на N...
1) Реализовать класс Matrix - матрица, на основе двух-мерного целочисленного массива int ...

26
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
14.07.2014, 08:06 21
Author24 — интернет-сервис помощи студентам
Kukurudza, Тогда объясните мне, чем
C++
1
using namespace std;
хуже
C++
1
2
using std::cout;
using std::cin;
?
0
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 539
14.07.2014, 08:17 22
где-то в моем коде:
C++
1
2
3
4
5
6
7
файл some_cool_massive.h
 
namespace cool_containers {
template <typename T>
class vector {
};
}
где-то в твоем коде:

C++
1
2
3
4
5
6
7
#include <vector>
#include <some_cool_massive.h>
 
using namespace std;
using namespace cool_containers;
 
vector<int> v;
компилируй

Добавлено через 1 минуту
ты пытаешься использовать using как противоядие от namespace. namespace это не яд.
0
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
14.07.2014, 08:21 23
Kukurudza, Все, теперь понял. Ну я имел в виду такие проги, где не нужно подключать библиотеки, подобные вашей То есть проги, в которых нужно только одно пространство имен std.
0
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 539
14.07.2014, 08:25 24
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
Kukurudza, Все, теперь понял. Ну я имел в виду такие проги, где не нужно подключать библиотеки, подобные вашей То есть проги, в которых нужно только одно пространство имен std.
через месяц к вы придете к преподу а он вам скажет, поиспользуйте это...
0
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
14.07.2014, 08:32 25
Kukurudza, Я разберусь и "поиспользую" в таком случае Я вам говорю про легкие программы, где ведь можно не заморачиваться с
C++
1
2
using std::cin;
using std::cout;
а написать
C++
1
using namespace std;
Или тогда вообще не писать все выше написанное, а писать где надо
C++
1
std::...
Просто для меня непривычно смотрится
C++
1
2
using std::cout;
using std::cin;
0
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 539
14.07.2014, 08:38 26
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
а написать
Код C++
1
using namespace std;
плохо
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
Или тогда вообще не писать все выше написанное, а писать где надо
Код C++
1
std::...
хорошо. хороший тон.
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
Просто для меня непривычно смотрится
Код C++
1
2
using std::cout;
using std::cin;
плохо. дурной тон
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
15.07.2014, 02:30 27
Частично какая-то реализация уже есть тут:
Класс матрица (не работает конструктор копирования)

Добавлено через 10 минут
Полностью задание мне делать влом, поэтому по мелочи. На поиграться хватит, остальные перегрузки можешь дописать сама:
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
#include <iostream>
#include <cstring>
 
template<typename T>
class Matrix
{
private:
    size_t rows_count, columns_count;
    T **data;
 
public:
    Matrix(size_t rows=5, size_t columns=5);
    Matrix(const Matrix<T>& matrix_obj);
    virtual ~Matrix();
    T* operator[](size_t index);
    bool operator ==(const Matrix<T>& matrix_obj);
 
    template<typename T2>
    friend std::istream& operator>>(std::istream&, const Matrix<T2>&);
    template<typename T2>
    friend std::ostream& operator<<(std::ostream&, const Matrix<T2>&);
};
 
template<typename T>
Matrix<T>::Matrix(size_t rows, size_t columns): rows_count{rows}, columns_count{columns}, data{new T*[rows]}
{
    data[0] = new T[rows*columns];
    for(size_t i=1;i<rows;++i)
        data[i] = data[0]+(i * columns);
}
 
template<typename T>
Matrix<T>::~Matrix()
{
    delete[] data[0];
    delete[] data;
}
 
template<typename T>
T* Matrix<T>::operator [](size_t index) { return data[index]; }
 
template<typename T>
Matrix<T>::Matrix(const Matrix<T>& matrix_obj): rows_count{matrix_obj.rows_count},
        columns_count{matrix_obj.columns_count}, data{new T*[rows_count]}
{
    data[0] = new T[rows_count*columns_count];
    std::memcpy(data[0], matrix_obj.data[0], sizeof(T)*rows_count*columns_count);
    for(size_t i=1;i<rows_count;++i)
        data[i] = data[0]+(i * columns_count);
}
 
template<typename T>
bool Matrix<T>::operator ==(const Matrix& matrix_obj)
{
    if(rows_count != matrix_obj.rows_count || columns_count != matrix_obj.columns_count)
        return false;
    return (memcmp(data[0], matrix_obj.data[0], sizeof(T)*rows_count*columns_count)==0)?true:false;
}
 
template<typename T>
std::istream& operator>>(std::istream& in_stream, const Matrix<T>& matrix_obj)
{
    for(size_t i=0;i!=matrix_obj.rows_count;++i)
        for(size_t j=0;j!=matrix_obj.columns_count;++j)
            std::cout<<"Matrix["<<i<<"]["<<j<<"] = ", std::cin>>matrix_obj.data[i][j];
    return in_stream;
}
 
template<typename T>
std::ostream& operator<<(std::ostream& out_stream, const Matrix<T>& matrix_obj)
{
    for(size_t i=0;i!=matrix_obj.rows_count;++i)
    {
        std::cout<<std::endl;
        for(size_t j=0;j!=matrix_obj.columns_count;++j)
            std::cout<<matrix_obj.data[i][j]<<" ";
    }
    return out_stream;
}
Пример использования:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    Matrix<int> a(2,2);
    std::cin>>a;
    std::cout<<a;
    Matrix<int> c(2,2);
    std::cin>>c;
    std::cout<<c;
    if(a==c)
        std::cout<<std::endl<<"equal"<<std::endl;
    else
        std::cout<<std::endl<<"not equal"<<std::endl;
    a[1][1] = 10;
    std::cout<<a;
    return 0;
}
Pay attention, это просто набросок, нет никаких проверок. И к элементу матрицы 10x10 можно обратиться через [0][25] и так далее.
0
15.07.2014, 02:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.07.2014, 02:30
Помогаю со студенческими работами здесь

Создать класс матрица Данный класс содержит указатель на int...
Помогите решить хотя бы часть задачи. Создать класс матрица Данный класс содержит указатель на...

Класс: Нужно написать класс,который будет вычислять заданную функцию...
Нужно написать класс,который будет вычислять вот такую функцию y= \sqrt{1/x^n} , также приложу...

Класс: Написать класс с использованием объекта класса Integer с обработкой исключения.
Написать класс с использованием объекта класса Integer с обработкой исключения (блок try-catch)

Написать класс строка и производный класс, ее шифрующий
Добрый день уважаемые форумчане. Вопрос стоит в решении данной задачи. Мне очень нужна ваша помощь...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru