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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 1, средняя оценка - 5.00
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
#1

матрица. клас. 2 - C++

19.02.2012, 21:44. Просмотров 661. Ответов 7
Метки нет (Все метки)

в продолжение этой темы

вот заголовочный файл:
клац
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
#pragma once
 
#include <vector>
#include <iostream>
 
typedef std::vector<int>      T_vector;
typedef std::vector<T_vector> T_matrix;
///////////////////////////////////////////////////////////////////////////////
class matrix
{
public:
    matrix();
    explicit matrix(size_t size);
    //-------------------------------------------------------------------------
    matrix(const matrix& matr);
    //-------------------------------------------------------------------------
    bool      operator==   (const matrix& matr)   const;
    bool      operator!=   (const matrix& matr)   const;
    matrix&   operator=    (const matrix& matr); 
    matrix    operator+    (const matrix& matr)   const;
    matrix    operator*    (const matrix& matr)   const;
    matrix    operator-    (const matrix& matr)   const;
    matrix    operator-    ()                     const;
    matrix&   operator+=   (const matrix& matr);
    matrix&   operator-=   (const matrix& matr);
    matrix&   operator*=   (const matrix& matr);
    //-------------------------------------------------------------------------
    friend std::ostream& operator<< (std::ostream& stream, const matrix& matr);
    friend std::istream& operator>> (std::istream& stream,       matrix& matr);      
    //-------------------------------------------------------------------------
    inline size_t   size     ()           const;
    inline void     resize   (size_t n);
    //-------------------------------------------------------------------------
private:
    T_matrix _matrix;
};
///////////////////////////////////////////////////////////////////////////////

1) typedef где размещать? так или внутри класса?
2) где упущены квалификаторы const;
все ли перегруженные операторы возвращают правильные значения?
для каких случаев данный код может не работать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2012, 21:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос матрица. клас. 2 (C++):

матрица. клас - C++
Решил создать класс квадратных матриц. Вот что получилось. Все работает, но хотелось бы услышать Ваше мнение и любые(ВСЕ) замечания ...

клас Letter, клас Person - C++
Створити клас Letter, що мiстить наступнi елементи: - поле «вiдправник» Person*Sender; - поле «одержувач» Person*Receiver; - поле...

клас обработчик - C++
Написать класс обработчик исключительных ситуаций. Программа ловит ошибкуделения на нуль и выводитсообщение,вв какой части программы...

клас птиц - C++
Ребята помогите!!!!! 1)Создать консольный проект, в котором используется приведенный класс Student. Создать экземпляры этого класса и...

Векторы+клас - C++
Добрый вечер! Помогите пожалуйста кто-нибуть в написании или обьяснении создания програмы: Создать клас vector3D, какой задаеться троицей...

клас myDate - C++
Создайте класс Date, который будет содержать информацию о дате (день, месяц, год). С помощью механизма перегрузки операторов, определите...

7
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
20.02.2012, 00:19 #2
Цитата Сообщение от Mayonez Посмотреть сообщение
typedef где размещать? так или внутри класса?
Внутри. Описание типа строки можно сделать пабликом.

Цитата Сообщение от Mayonez Посмотреть сообщение
для каких случаев данный код может не работать?
Как обращаться к элементам матрицы?! Можно только ввести её из потока и вывести в поток?

Что делает функция resize? Какую размерность матрицы меняет? Она принимает один параметр, а у матрицы размерности две, afaik.
1
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
20.02.2012, 11:41  [ТС] #3
Цитата Сообщение от lemegeton Посмотреть сообщение
Как обращаться к элементам матрицы?!
упс... доделаю
Цитата Сообщение от lemegeton Посмотреть сообщение
Что делает функция resize? Какую размерность матрицы меняет? Она принимает один параметр, а у матрицы размерности две, afaik.
это только квадратные матрицы
0
golatin
266 / 223 / 43
Регистрация: 12.10.2011
Сообщений: 333
Завершенные тесты: 1
20.02.2012, 12:58 #4
Ну и добавьте
1) Умножение на число
2) Транспонирование
3) Нулевая матрица
4) Единичная матрица
5) Определитель
1
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
21.02.2012, 19:19  [ТС] #5
операторы сравнения.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bool matrix::operator==(const matrix& matr) const
{
    if(this->size() != matr.size())
        throw std::invalid_argument("Inadequate size of compared matrix");
    int sz = this->size();
    for(int i = 0; i < sz; i++)
        for(int j = 0; j < sz; j++) 
            if(_matrix[i][j] != matr._matrix[i][j])
                return false;
    return true;
}
///////////////////////////////////////////////////////////////////////////////
bool matrix::operator!=(const matrix& matr) const
{
    return !operator==(matr);
    //or maybe
    //return !(*this == matr);
}
как правильно?

Добавлено через 3 минуты
C++
1
2
3
4
inline size_t matrix::size() const
{
    return _matrix.size();
}
нужно ли писать inline?
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
21.02.2012, 19:29 #6
Цитата Сообщение от Mayonez Посмотреть сообщение
нужно ли писать inline?
Все равно компилятор будет сам решать. Я считаю, что не нужно.

Добавлено через 2 минуты
Цитата Сообщение от Mayonez Посмотреть сообщение
matrix * *operator* * *(const matrix& matr) * const;
Зачем? Будет ошибка.
0
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
21.02.2012, 19:39  [ТС] #7
Цитата Сообщение от go Посмотреть сообщение
Зачем? Будет ошибка.
??? ? ?

Добавлено через 2 минуты
Цитата Сообщение от go Посмотреть сообщение
Все равно компилятор будет сам решать. Я считаю, что не нужно.
но если функция описана внутри класса, то она всегда будет inline?
а если реализация вне класса, то решает компилятор? а как должно быть по стандарту?
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
21.02.2012, 20:16 #8
Цитата Сообщение от Mayonez Посмотреть сообщение
??? ? ?
Я не разобрался.

Добавлено через 17 минут
Цитата Сообщение от Mayonez Посмотреть сообщение
но если функция описана внутри класса, то она всегда будет inline?
Зачем писать inline, если функция определённая внутри тела класса, является inline по умолчанию.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2012, 20:16
Привет! Вот еще темы с ответами:

переделать клас - C++
Всем привет! Надо немножко доработать етот код #include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; const int count = 5; ...

Клас многочлен наследствие - C++
Помогите пожалуйсто. Нужно унаследствовать клас многочлен. Что можна унаследствовать (какой клас можно сделать потомком)?

создать клас HugeInt - C++
Описать класс, реализующий указанный ниже тип данных. Класс должен содержать множество конструкторов для создания объектов определенного...

Клас колода карт - C++
Класс CardDeck (колода карт). Класс сохраняет массив из 32 карт (cards), а также текущую карту (currentCard). Надо написать функцию для...


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

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
21.02.2012, 20:16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru