Maciekb Temat założony przez niniejszego użytkownika |
Mnożenie macierzy » 2017-02-27 19:14:26 #include <iostream> using namespace std; int wczytlkola() { int lkol; cout << "Podaj liczbe kolumn A:"; cin >> lkol; return lkol; }
int wczytlwiera() { int lwier; cout << "Podaj liczbe wierszy A:"; cin >> lwier; return lwier; } int wczytlwierb() { int lwier; cout << "Podaj liczbe wierszy B:"; cin >> lwier; return lwier; }
int wczytlkolb() { int lkol; cout << "Podaj liczbe kolumn B:"; cin >> lkol; return lkol; }
double ** utworzmac( int lw, int lk ) { double ** m; m = new double *[ lw ]; for( int j = 0; j < lw; j++ ) m[ j ] = new double[ lk ]; return m; } void wczytmac( double ** m, int lk, int lw ) { for( int j = 0; j < lw; j++ ) { cout << "" << endl; for( int i = 0; i < lk; i++ ) { cin >> m[ j ][ i ]; } } } void wyswietlmac( double ** m, int lk, int lw ) { for( int j = 0; j < lw; j++ ) { for( int i = 0; i < lk; i++ ) { cout << m[ j ][ i ] << '\t'; } cout << "" << endl; } } double ** mnozenie( double ** A, double ** B, int lka, int lwa, int lkb, int lwb ) { double ** W; if( lka != lwb ) cout << "Zle dane!"; W = new double *[ lwb ]; for( int j = 0; j < lwa; j++ ) W[ j ] = new double[ lka ]; for( int j = 0; j < lwb; j++ ) { for( int i = 0; i < lkb; i++ ) { for( int m = 0; m < lwb; m++ ) { W[ j ][ i ] += A[ j ][ m ] * B[ m ][ i ]; } } } return W; } int main() { int lwiea, lkola, lwieb, lkolb; double ** maca; double ** macb; lwiea = wczytlwiera(); lkola = wczytlkola(); lwieb = wczytlwierb(); lkolb = wczytlkolb(); maca = utworzmac( lwiea, lkola ); macb = utworzmac( lwieb, lkolb ); cout << "Wczytaj macierz A:" << endl; wczytmac( maca, lkola, lwiea ); cout << "Wczytaj macierz B:" << endl; wczytmac( macb, lkolb, lwieb ); cout << "Macierz A:" << endl; wyswietlmac( maca, lkola, lwiea ); cout << "Macierz B:" << endl; wyswietlmac( macb, lkolb, lwieb ); cout << "Macierz A*B:" << endl; wyswietlmac( mnozenie( maca, macb, lkola, lwiea, lkolb, lwieb ), lkolb, lwieb ); }
Program nie wylicza pierwszej kolumny począwszy od wiersza pierwszego chciałbym się zapytać dlaczego, proszę o pomoc :) |
|
carlosmay |
» 2017-02-27 19:40:51 Debugger |
|
mateczek |
» 2017-02-27 20:41:13 poprawione #include <iostream> using namespace std; int wczytlkola() { int lkol; cout << "Podaj liczbe kolumn A:"; cin >> lkol; return lkol; }
int wczytlwiera() { int lwier; cout << "Podaj liczbe wierszy A:"; cin >> lwier; return lwier; } int wczytlwierb() { int lwier; cout << "Podaj liczbe wierszy B:"; cin >> lwier; return lwier; }
int wczytlkolb() { int lkol; cout << "Podaj liczbe kolumn B:"; cin >> lkol; return lkol; }
double ** utworzmac( int lw, int lk ) { double ** m; m = new double *[ lw ]; for( int j = 0; j < lw; j++ ) m[ j ] = new double[ lk ]; return m; } void wczytmac( double ** m, int lk, int lw ) { for( int j = 0; j < lw; j++ ) { cout << "" << endl; for( int i = 0; i < lk; i++ ) { cin >> m[ j ][ i ]; } } } void wyswietlmac( double ** m, int lk, int lw ) { for( int j = 0; j < lw; j++ ) { for( int i = 0; i < lk; i++ ) { cout << m[ j ][ i ] << '\t'; } cout << "" << endl; } } double ** mnozenie( double ** A, double ** B, int lka, int lwa, int lkb, int lwb ) { double ** W; if( lka != lwb ) cout << "Zle dane!"; W = new double *[ lwa ]; for( int j = 0; j < lwa; j++ ) W[ j ] = new double[ lkb ]; for( int j = 0; j < lwa; j++ ) { for( int i = 0; i < lkb; i++ ) { W[ j ][ i ] = 0; for( int m = 0; m < lwb; m++ ) { W[ j ][ i ] += A[ j ][ m ] * B[ m ][ i ]; } } } return W; } int main() { int lwiea, lkola, lwieb, lkolb; double ** maca; double ** macb; lwiea = wczytlwiera(); lkola = wczytlkola(); lwieb = wczytlwierb(); lkolb = wczytlkolb(); maca = utworzmac( lwiea, lkola ); macb = utworzmac( lwieb, lkolb ); cout << "Wczytaj macierz A:" << endl; wczytmac( maca, lkola, lwiea ); cout << "Wczytaj macierz B:" << endl; wczytmac( macb, lkolb, lwieb ); cout << "Macierz A:" << endl; wyswietlmac( maca, lkola, lwiea ); cout << "Macierz B:" << endl; wyswietlmac( macb, lkolb, lwieb ); cout << "Macierz A*B:" << endl; wyswietlmac( mnozenie( maca, macb, lkola, lwiea, lkolb, lwieb ), lkolb, lwiea ); }
|
|
« 1 » |