Problem z programem [mnozenie macierzy]
Ostatnio zmodyfikowano 2014-03-29 00:20
RodzynR Temat założony przez niniejszego użytkownika |
Problem z programem [mnozenie macierzy] » 2014-03-28 23:56:17 Potrzebuję pomocy z programem. Napisałem program który wymnaża macierze. Jednakże program źle wyświetla drugą tablicę oraz źle mnoży. Bardzo bym był wdzięczny gdyby ktoś wychwycił błąd. #include<iostream> #include<cstdlib> #include<ctime> using namespace std; int main() { srand( time( NULL ) ); cout << "PROGRAM MNOZENIE MACIERZY" << endl << endl << endl; int rozmiar = 50; int tab1[ rozmiar ][ rozmiar ]; int tab2[ rozmiar ][ rozmiar ]; int tab3[ rozmiar ][ rozmiar ]; int wiersz1, wiersz2, kolumna1, kolumna2, i, j, k, sumamno = 0; do { cin.clear(); cin.sync(); cout << "Wprowadz rozmiar wiersza pierwszej macierzy" << endl; cin >> wiersz1; cout << "Wprowadz rozmiar kolumny pierwszej macierzy" << endl; cin >> kolumna1; cout << "Wprowadz rozmiar wiersza drugiej macierzy" << endl; cin >> wiersz2; cout << "Wprowadz rozmiar kolumny drugiej macierzy" << endl; cin >> kolumna2; cout << "***********************************************" << endl; } while( wiersz1 <= 0 or wiersz2 <= 0 or kolumna1 <= 0 or kolumna2 <= 0 or wiersz1 > rozmiar or wiersz2 > rozmiar or kolumna1 > rozmiar or kolumna2 > rozmiar ); for( i = 0; i < wiersz1; i++ ) { for( j = 0; j < kolumna1; j++ ) tab1[ i ][ j ] = rand() % 10; } for( i = 0; i < wiersz2; i++ ) { for( j = 0; j < kolumna2; j++ ) tab2[ i ][ j ] = rand() % 10; } for( i = 0; i < rozmiar; i++ ); { for( j = 0; j < rozmiar; j++ ) tab3[ i ][ j ] = 0; } if( kolumna1 == wiersz2 ) { for( i = 0; i < wiersz1; i++ ) { for( j = 0; j < kolumna2; j++ ) { for( k = 0; k < kolumna1; k++ ) sumamno += tab1[ i ][ k ] * tab2[ k ][ j ]; tab3[ i ][ j ] = sumamno; } } cout << "Pierwsza macierz" << endl; for( i = 0; i < wiersz1; i++ ) { { for( j = 0; j < kolumna1; j++ ) cout << tab1[ i ][ j ] << " "; } cout << endl; } cout << "Druga macierz" << endl; for( i = 0; i < wiersz2; i++ ) { { for( j = 0; j < kolumna2; j++ ) cout << tab2[ i ][ j ] << " "; } cout << endl; } cout << "Macierze po wymnozeniu" << endl; for( i = 0; i < wiersz1; i++ ) { { for( j = 0; j < kolumna2; j++ ) cout << tab3[ i ][ j ] << " "; } cout << endl; } } else cout << "Zle wymiary macierzy" << endl; }
|
|
docentpp |
» 2014-03-29 00:20:07 W tym fragmencie kodu nie zerujesz zmiennej sumamno, i dlatego mnożenie jest nieprawidłowe. for( k = 0; k < kolumna1; k++ ) sumamno += tab1[ i ][ k ] * tab2[ k ][ j tab3[ i ][ j ] = sumamno;
powinno byc tak sumamno = 0;
for( k = 0; k < kolumna1; k++ ) sumamno += tab1[ i ][ k ] * tab2[ k ][ j ];
tab3[ i ][ j ] = sumamno;
|
|
« 1 » |