![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Tinysik2009 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 2.5.2009 Репутация: нет Всего: нет |
Здравствуйте, подскажите пожалуйста как реализовать следующую задачу:
Класс должен реализовывать операции над матрицами: - методы, реализующие проверку типа матрицы(диагональная, нулевая,единичная); - операции сравнения на равенство/неравенство. Общими словами я хочу свою заданную матрицу проверить к какой матрице она относится к диагональной(это где все недиагональные элементы равны 0),единичной (элементы главной диагонали равны 1, а остальные равны нулю.) или нулевой (все элементы равны 0.), а затем сравнить их.
Как это реализовать? Задать все эти матрицы и через цикл сравнить матрицу А с единичной,диагональной и нулевой? |
|||
|
||||
Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 5 Всего: 24 |
в общем виде да. это будет выглядеть приблизительно так. т.е. должен быть класс матрицы и у него должны быть методы которые будут все это определять. в частности я бы наверное попробовал делать так: для нулевой матрицы считать сумму всех элементов, она должна быть равна 0. для диагональной считать сумму нужных элементов, она должна быть равна 0. самое сложное с единичной. но я бы наверное попробовал считать сумму всех элементов(очевидно что она должна быть не больше количества строк в матрице) и при этом проверял что бы именно диагональные элементы были равны 1(т.е. элементы matrix[i,i]==1). Это сообщение отредактировал(а) Экскалупатор - 24.1.2010, 22:55 |
|||
|
||||
KuMa1104 |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 541 Регистрация: 16.4.2009 Где: Ростов-на-Дону Репутация: 1 Всего: 3 |
Экскалупатор Привет!
Ам а можно вот это обяснить.Например матрица
как тут ноль получаеться? Имелся в виду определитель? Определитель диагональной матрицы равен произведению всех элементов диагонали. Это сообщение отредактировал(а) KuMa1104 - 24.1.2010, 23:15 -------------------- Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце. Время - штука относительная... а время обеда - ещё более относительная |
||||
|
|||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 18 Всего: 142 |
А если там кроме нулей есть две значащие величины, равные по модулю и противоположные по знаку, например? Нулевая сумма не всегда означает, что все слагаемые нули. Сумма модулей - другое дело, но и это ни к чему. Проще всё по правилам сделать не вижу тут никакой проблемы. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
Tinysik2009 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 2.5.2009 Репутация: нет Всего: нет |
запутали меня еще больше =)))
![]() |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 18 Всего: 142 |
Tinysik2009, тебе нужно создать класс, который будет представлять из себя матрицу. Элементы можно хранить в массиве. А методы проверки могут выглядеть примерно следующим образом
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
Экскалупатор |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 5 Всего: 24 |
KuMa1104, diadiavova, вы два маньяка, я предложил решение. оно не обязательно верное.
тут ноль получается если сложить все элементы кроме главной диагонали. это я исходя из определения:Диагональная матрица.
так можно же по модулю складывать... ![]() может сразу и не додумал, но ход мыслей в нужную сторону... Это сообщение отредактировал(а) Экскалупатор - 25.1.2010, 01:20 |
||||
|
|||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 18 Всего: 142 |
А зачем вообще что-то складывать? Я привёл пример как можно сделать. Это, конечно, набросок, но там вроде понятно всё и просто. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 5 Всего: 24 |
не заметил
Это сообщение отредактировал(а) Экскалупатор - 25.1.2010, 01:24 |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 18 Всего: 142 |
Опять таки в моём примере это дело проверяется и даже метод специальный есть ![]() Добавлено через 52 секунды А вообще: такие вопросы в центр помощи задавать надо. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 5 Всего: 24 |
мне тут, кстати, пришла в голову еще одна мысль. можно сказать, что единичная матрица это частный случай диагональной матрицы. отсюда можно упростить проверку на единичность, если перед этим вызвать проверку на диагональность. очевидно, что если матрица не диагональная то она и не единичная.
тогда можно так:
Это сообщение отредактировал(а) Экскалупатор - 25.1.2010, 02:19 |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | .NET для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |