Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

перевести код на C#

42K
25 февраля 2010 года
Mr_Ser_Win
3 / / 19.10.2008
Нашел у вас на форуме код, полезный, только написан на С, а я его не помню. Помогите перевести плз.
Код:
int multMatrixBlock(double *a, const int n, double *b, const int m, double *res, double *c, double *d, double*e){
        int n_block=n/m;
        int m_small;
        int i,j,k,o;
        m_small=n-n_block*m;
        clearMatrix(res, n*n);
        for ( i = 0; i <= n_block; i++)
        {
                for ( j = 0; j <= n_block; j++)
                {
                        for ( k = 0; k <=n_block; k++)
                        {
                                if (i<n_block && j<n_block && k<n_block) {
                                        getSubMatrix(a, n, c, m, i, k);
                                        getSubMatrix(b, n, d, m, k, j);
                                        multMatrixSq(c, m, d, e);
                                        setSubMatrixAdded(res, n, e, m, i, j);
                                }
                                else if (i<n_block && j<n_block && k==n_block) {
                                        getSubMatrix(a, n, c, m, i, k);
                                        getSubMatrix(b, n, d, m, k, j);
                                        multMatrixRect(c, m, d,m_small, m, e);
                                        setSubMatrixAdded(res, n, e, m, i, j);  
                                }
                                else if (i==n_block && j<n_block && k<n_block) {
                                        getSubMatrix(a, n, c, m, i, k);
                                        getSubMatrix(b, n, d, m, k, j);
                                        multMatrixRect(c, m_small, d,m, m, e);
                                        setSubMatrixAdded(res, n, e, m, i, j);
                                }
                                else if (i==n_block && j<n_block && k==n_block) {      
                                        getSubMatrix(a, n, c, m, i, k);
                                        getSubMatrix(b, n, d, m, k, j);
                                        multMatrixRect(c, m_small, d,m_small, m, e);
                                        setSubMatrixAdded(res, n, e, m, i, j);  
                                }
                                else if (i<n_block && j==n_block && k<n_block) {
                                        getSubMatrix(a, n, c, m, i, k);
                                        getSubMatrix(b, n, d, m, k, j);
                                        multMatrixRect(c, m, d,m, m_small, e);
                                        setSubMatrixAdded(res, n, e, m, i, j);
                                }
                                else if (i<n_block && j==n_block && k==n_block) {
                                        getSubMatrix(a, n, c, m, i, k);
                                        getSubMatrix(b, n, d, m, k, j);
                                        multMatrixRect(c, m, d,m_small, m_small, e);
                                        setSubMatrixAdded(res, n, e, m, i, j);
                                }
                                else if (i==n_block && j==n_block && k<n_block) {
                                        getSubMatrix(a, n, c, m, i, k);
                                        getSubMatrix(b, n, d, m, k, j);
                                        multMatrixRect(c, m_small, d,m, m_small, e);
                                        setSubMatrixAdded(res, n, e, m, i, j);  
                                }
                                else if (i==n_block && j==n_block && k==n_block) {
                                        getSubMatrix(a, n, c, m, i, k);
                                        getSubMatrix(b, n, d, m, k, j);
                                        multMatrixSq(c, m_small, d, e);
                                        setSubMatrixAdded(res, n, e, m, i, j);  
                                }
                        }
                }
        }
        return 0;
}
11
25 февраля 2010 года
oxotnik333
2.9K / / 03.08.2007
ну хоть бы сам чего нидь попробовал сделать...
а по теме: меняешь звездочки на квадратные скобочки.
42K
25 февраля 2010 года
Mr_Ser_Win
3 / / 19.10.2008
сам то я пытался... ну спасибо, сейчас покалдую... как я понимаю getSubMatrix, multMatrixRect отдельные методы.. которого тут нет?
842
04 октября 2010 года
sigmov
301 / / 16.09.2008
Цитата: Mr_Ser_Win
сам то я пытался... ну спасибо, сейчас покалдую... как я понимаю getSubMatrix, multMatrixRect отдельные методы.. которого тут нет?



Совершенно верно.

Более того. Еще тут нету:
clearMatrix
getSubMatrix
getSubMatrix
multMatrixSq
setSubMatrixAdded

Так что переводить все это будет очень весело. ))))

Поэтому варианты:
1. Это алгоритм блочного перемножения матриц. Его легко можно найти на C#. Мне не раз попадались.
2. Есть специальные конвертеры для кода подобного рода с С++ на С#

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог