2016-09-12 3 views
0

Ich versuche 2 Matrizen zu implementieren, die ich verwenden muss, ohne Benutzereingaben zu haben und sie miteinander zu multiplizieren. Sie haben jedoch unterschiedliche Dimensionen. Wie könnte ich das programmieren? Ich habe buchstäblich alles versucht, dass ich meinen Code gelöscht und neu gestartet habe.Matrizen: Verschiedene Dimensionen + Implementierung

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

Also hast du das versucht. Es hat nicht funktioniert oder du würdest nicht hier sein. Aber Arbeit ist kein Symptom, sondern ein Ergebnis. Zukünftige Leser für Ihre Frage sollten begabt sein mit dem Wissen, was * passiert * ist, als Sie das versucht haben. Fehlermeldungen? Warnungen? Ohne Bezug, ein großes Lob für das, was Sie vorher gemacht haben und bis zu diesem absolut minimalen Code. – WhozCraig

+1

ist es nicht möglich, 4x3 Matrix mit 4x1 zu multiplizieren. Die inneren Dimensionen müssen übereinstimmen (z. B. 3x4 mit 4x1) –

+0

Ja, ich erinnere mich daran, es ist ein 1x4, ich verwechsle nur Zeilen und Spalten zu Zeiten. –

Antwort

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

ist nicht richtig. Das wäre für ein 4 x 1 Array gut.

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

Was Sie brauchen, ist:

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

Jetzt können Sie multiplizieren.

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

Ah okay! Ich sehe jetzt! –

+0

Müsste ich Matrix B nicht transponieren, damit es ein 3X4 ist? und dann multiplizieren Y-Matrix transponieren, so dass es 3X4 und ein 4X1 sein kann? –

Verwandte Themen