C ++ Mnożenie macierzy
Ostatnio zmodyfikowano 2016-01-19 14:18
skibixd Temat założony przez niniejszego użytkownika |
C ++ Mnożenie macierzy » 2016-01-19 12:20:28 Witam, program ma dodawać i mnożyć macierze. Z dodawaniem jest ok, ale mnożenie podaje niepoprawne wyniki. Mogę prosic o pomoc? #include <iostream> #include <cstdlib> using namespace std; struct macierz { int m; int n; int wsp[ 10 ][ 10 ]; }; struct macierz suma( struct macierz M, struct macierz N ) { struct macierz W; if(( M.m != N.m ) ||( M.n != N.n ) ) { cout << "#### Blad: Rozmiary nie sa takie same" << endl; exit( 1 ); } for( int i = 0; i < M.m; i++ ) { for( int j = 0; j < M.n; j++ ) { W.wsp[ i ][ j ] = M.wsp[ i ][ j ] + N.wsp[ i ][ j ]; } } return W; };
struct macierz mnozenie( struct macierz M, struct macierz N ) { struct macierz D; for( int i = 0; i < M.m; i++ ) { for( int j = 0; j < M.m; j++ ) { for( int k = 0; k < M.m; k++ ) { D.wsp[ i ][ j ] = D.wsp[ i ][ j ] + M.wsp[ i ][ k ] * M.wsp[ k ][ j ]; } } } return D; };
void wypisz( struct macierz M ) { for( int i = 0; i < M.m; i++ ) { for( int j = 0; j < M.n; j++ ) { cout.width( 5 ); cout << M.wsp[ i ][ j ]; } cout << endl; } }
struct macierz wczytaj() { struct macierz M; cout << "Podaj wymiary macierzy" << endl; cout << "Liczba wierszy: "; cin >> M.m; cout << "Liczba kolumn: "; cin >> M.n; for( int i = 0; i < M.m; i++ ) { for( int j = 0; j < M.n; j++ ) { cout << "Wsp [" <<( i + 1 ) << "," <<( j + 1 ) << "]" << endl; cin >> M.wsp[ i ][ j ]; } } return M; };
int main() { struct macierz A, B, C, D; A = wczytaj(); B = wczytaj(); cout << "Macierz A" << endl; wypisz( A ); cout << "Macierz B" << endl; wypisz( B ); C = suma( A, B ); cout << "Macierz C=A+B" << endl; wypisz( C ); D = mnozenie( A, B ); cout << "Macierz A*B" << endl; wypisz( D ); return 0; }
|
|
mateczek |
» 2016-01-19 14:06:03 struct macierz mnozenie( struct macierz M, struct macierz N ) { struct macierz D; for( int i = 0; i < M.m; i++ ) { for( int j = 0; j < M.m; j++ ) { D.wsp[ i ][ j ] = 0; for( int k = 0; k < M.m; k++ ) { D.wsp[ i ][ j ] = D.wsp[ i ][ j ] + M.wsp[ i ][ k ] * N.wsp[ k ][ j ]; } } } return D; };
|
|
skibixd Temat założony przez niniejszego użytkownika |
» 2016-01-19 14:18:27 No tak, wyzerować. Dziękuję bardzo!!! :) |
|
« 1 » |