![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
yorgan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 5.6.2008 Репутация: нет Всего: нет |
Всем привет.
Есть такое задание: Нужно написать шаблонный класс "матрица", в котором будет: 1. конструктор (матрица размером 10 на 20). 2. деструктор. 3. нахождение детерминанта матрицы (определителя). 4. нахождение обратной матрицы. 5. Вывод элемента [][]; 6. Умножение матрицы А на B. У меня такие вопросы: Как выделять в конструкторе память динимически под матрицу заданной размерности (соответственно как освобождать помять в деструкторе)? Как находить определитель матрицы (на сколько я понимаю это будет рекурсивная функция)? Если была бы матрица 3 на 3, я нашел бы без проблем, а вот 10 н 20... не знаю :( Вывод элемента... вот тут я не очень понял. Если просто написать функцию-член, которая будет по заданным [i][j] выводить на экран элемент, то это просто, а если нужо переопределить операцию [][]...??? Помогите пожалуйста. |
|||
|
||||
dragomir |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 28.1.2007 Где: Брянск Репутация: нет Всего: нет |
||||
|
||||
yorgan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 5.6.2008 Репутация: нет Всего: нет |
На сколько я помню курс линейной алгебры... методом Гаусса ищется корни СЛАУ (систем линейных алгебраических уравнений)
|
|||
|
||||
bronislav |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 334 Регистрация: 29.1.2008 Где: Украина::Донецк Репутация: 2 Всего: 3 |
Насколько я знаю можно найти (без до определения) только определитель квадратной матрицы. Посмотри тут. Добавлено через 35 секунд
Именно так Добавлено через 4 минуты и 2 секунды и тут -------------------- ![]() иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes |
|||
|
||||
IKM2007 |
|
||||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca Репутация: 3 Всего: 40 |
На остальное нет ни идей,ни времени(Завтра экзамен). -------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
||||
|
|||||
bronislav |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 334 Регистрация: 29.1.2008 Где: Украина::Донецк Репутация: 2 Всего: 3 |
Я бы рекомендовал размер матрицы задавать в параметрах конструктора. А их можно сделать со значениями по умолчанию, если тебе так нужен размер 10 x 20. -------------------- ![]() иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes |
|||
|
||||
bronislav |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 334 Регистрация: 29.1.2008 Где: Украина::Донецк Репутация: 2 Всего: 3 |
IKM2007,
Ключевое слово тут шаблонный. Например вот так:
А использовать так:
-------------------- ![]() иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes |
||||
|
|||||
Dmi3ev |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 13 Всего: 41 |
можно так создавать матрицу динамически, как вариант. а вообще не понятно зачем это делать, если размерность заранее известна? Добавлено через 1 минуту и 51 секунду а вот так если:
-------------------- |
||||
|
|||||
bronislav |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 334 Регистрация: 29.1.2008 Где: Украина::Донецк Репутация: 2 Всего: 3 |
А что если размерность заранее известна, то ее лучше в стеке создать? А если экземпляров класса будет 100-200. ИМХО такой подход не есть гуд. -------------------- ![]() иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes |
|||
|
||||
yorgan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 5.6.2008 Репутация: нет Всего: нет |
Пока писал, уже несколько людей ответили. Сейчас буду разбираться. Всем большое спасибо за желание помочь!!!
![]()
Да, вы правы. Сейчас еще посмотрел учебник по математике. Значит преподаватель ошибся. IKM2007, спасибо. Уже что-то... а то голова гудит, не знаю даже с чего начать. Тогда вопрос таков: как найти детерминант квадратной матрицы 10 на 10? Мне бы посмотреть на код, где вычисляется хотя бы определитель матрицы 4 на 4 (как я понял есть только один метод нахождения определителя матрицы N-го порядка - с помощью суммы произведений элементов некоторого ряда на соотвествующие им алгебраические дополнения). Это сообщение отредактировал(а) yorgan - 5.6.2008, 18:14 |
|||
|
||||
Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 13 Всего: 41 |
ну если говорить о матрице 4*4, то тогда формула определителя такова:
det A=a11*(-1)^(1+1)*(det (та же матрица, только надо вычеркнуть строку и столбец где расположен a11))+ a12*(-1)^(1+2)*(det (та же матрица, только надо вычеркнуть строку и столбец где расположен a12))+ a13*(-1)^(1+3)*(det (та же матрица, только надо вычеркнуть строку и столбец где расположен a13))+ a14*(-1)^(1+4)*(det (та же матрица, только надо вычеркнуть строку и столбец где расположен a12)) а как считать определитель для матрицы 3*3, которая получается в скобках я написал в описании класса Matrix (метод Determ), я считал по правилу Саррюса Добавлено через 3 минуты и 44 секунды
вообще да, но если 10 на 20 и в массиве хранятся числа, а не большие боъекты , то, мне кажется, по барабану -------------------- |
|||
|
||||
bronislav |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 334 Регистрация: 29.1.2008 Где: Украина::Донецк Репутация: 2 Всего: 3 |
Мне кажется, что даже для небольших матриц это не хорошая практика ибо привыкнешь ![]() -------------------- ![]() иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes |
|||
|
||||
yorgan |
|
||||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 5.6.2008 Репутация: нет Всего: нет |
Функции нахождения детерминатна и обратной матрицы, ввода матриц и перемножения матриц:
У меня еще пока плохо с ООП в целом и с шаблонами в частности, может кто-то может подсказать как притулить эту функцию как метода класса к коду bronislav'а:
И если не сложно, то не могли бы объяснить что есть exception.h и почему такой синтаксис в этой строке: : rows( _rows ), cols( _cols )? Это сообщение отредактировал(а) yorgan - 5.6.2008, 23:39 |
||||
|
|||||
bronislav |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 334 Регистрация: 29.1.2008 Где: Украина::Донецк Репутация: 2 Всего: 3 |
Это код проводит инициализацию членов данных класса параметрами конструктора. Во первых просто exception без h. Это заголовочный файл про обработку исключений. Вопросы по обработке исключений уже много раз поднимались на форуме, воспользуйся поиском или посмотри вот в этой теме например. Добавлено через 1 минуту и 40 секунд Да и умножение и ввод матриц можно, даже скорее нужно реализовать через перегрузку операторов. -------------------- ![]() иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes |
|||
|
||||
yorgan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 5.6.2008 Репутация: нет Всего: нет |
Вот что-то навоял. Посмотрите пожалуйста в чем ошибки?
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |