2016-09-12 4 views
0

Я пытаюсь реализовать 2 матрицы, которые я должен использовать без ввода пользователя и умножения их друг на друга. Однако они имеют разные размеры. Как я могу это кодировать? Я буквально пробовал все, что я удалил свой код и перезапустил его.Матрицы: Различные размеры + реализация

main(void){ 
int B[4][3] = {{1,0,0}, {1,0,1},{1,1,0},{1,1,1}}; 
int Y[1][4] = {{1}, {1}, {1}, {0}}; 
} 
+0

Итак, вы попробовали это. Он, должно быть, не сработал, или вы бы этого не сделали. Но «не-работа» является симптомом как результат. Будущие читатели для вашего вопроса должны обладать знаниями о том, что на самом деле произошло *, когда вы пробовали это. Сообщения об ошибках? Предупреждения? Unrelated, kudos для того, чтобы сломать то, что вы делали раньше, и начиная с этого абсолютно минимального кода. – WhozCraig

+1

невозможно умножить матрицу 4x3 с 4x1. Внутренние размеры hav соответствуют (например, 3x4 с 4x1) –

+0

Да, я помнил, что это 1x4, я просто путаю строки и столбцы время от времени. –

ответ

4
int Y[1][4] = {{1}, {1}, {1}, {0}}; 

не прав. Это было бы полезно для массива 4 x 1.

int Y[4][1] = {{1}, {1}, {1}, {0}}; 

Что вам нужно:

int Y[1][4] = {{1, 1, 1, 0}}; 

Теперь вы можете размножаться.

int main() 
{ 
    int B[4][3] = {{1,0,0}, {1,0,1},{1,1,0},{1,1,1}}; 
    int Y[1][4] = {{1, 1, 1, 0}}; 
    int R[1][3] = {0}; 

    for (int i = 0; i < 1; ++i) 
    { 
     for (int j = 0; i < 3; ++j) 
     { 
     for (int k = 0; i < 4; ++k) 
     { 
      R[i][j] += Y[i][k]*B[k][j] 
     } 
     } 
    } 
} 
+0

Ну ладно! Я вижу сейчас! –

+0

Не нужно ли мне переставлять матрицу B, чтобы она была 3X4? , а затем умножьте транспонированную матрицу Y так, чтобы она могла быть 3X4 и 4X1? –

Смежные вопросы