Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 9

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

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

Студворк — интернет-сервис помощи студентам
Добрый день я новичок помогите мне Написать класс «матрица». В классе реализовать следующие методы: конструкторы (по умолчанию, с
параметрами, копирования), деструктор, ввод с клавиатуры, поиск элемента по ключу,
вывод на экран (в виде методов класса и при помощи перегруженных операций
потокового ввода и вывода), перегрузить следующие операции: +, += (сложение матриц),
– (вычитание), = (присвоение), = = (сравнение по элементам), [] (взятие элемента с
заданным индексом).
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.07.2014, 17:51
Ответы с готовыми решениями:

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

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

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

26
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
14.07.2014, 08:06
Студворк — интернет-сервис помощи студентам
Kukurudza, Тогда объясните мне, чем
C++
1
using namespace std;
хуже
C++
1
2
using std::cout;
using std::cin;
?
0
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 538
14.07.2014, 08:17
где-то в моем коде:
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
Kukurudza, Все, теперь понял. Ну я имел в виду такие проги, где не нужно подключать библиотеки, подобные вашей То есть проги, в которых нужно только одно пространство имен std.
0
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 538
14.07.2014, 08:25
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
Kukurudza, Все, теперь понял. Ну я имел в виду такие проги, где не нужно подключать библиотеки, подобные вашей То есть проги, в которых нужно только одно пространство имен std.
через месяц к вы придете к преподу а он вам скажет, поиспользуйте это...
0
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
14.07.2014, 08:32
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
Сообщений: 538
14.07.2014, 08:38
Цитата Сообщение от 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
Частично какая-то реализация уже есть тут:
Класс матрица (не работает конструктор копирования)

Добавлено через 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.07.2014, 02:30

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru