Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

C ++ Mnożenie macierzy

Ostatnio zmodyfikowano 2016-01-19 14:18
Autor Wiadomość
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?
C/C++
#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;
}
P-143773
mateczek
» 2016-01-19 14:06:03
C/C++
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; // :-P
            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;
};
P-143775
skibixd
Temat założony przez niniejszego użytkownika
» 2016-01-19 14:18:27
No tak, wyzerować. Dziękuję bardzo!!! :)
P-143776
« 1 »
  Strona 1 z 1