//--------------------------------------------------------------------- // Mnozenie macierzy liczbowych o losowych elementach // Kazimierz Kwiatkowski //--------------------------------------------------------------------- #include #include #include //--------------------------------------------------------------------- void zero_matrix(int**, int, int); void init_matrix(int**, int, int); void show_matrix(int**, int, int); void mult_matrix(int**, int, int**, int, int**, int, int); int main(int argc, char **argv) { int row_a, col_a, row_b, col_b, row_c = 0, col_c = 0; cout << "Rozmiar macierzy A:\n"; cout << "l. wierszy: "; cin >> row_a; cout << "l. kolumn: "; cin >> col_a; cout << "Rozmiar macierzy B:\n"; cout << "l. wierszy: "; cin >> row_b; cout << "l. kolumn: "; cin >> col_b; if(col_a == row_b) { row_c = row_a; col_c = col_b; } int** a; a = new int* [row_a]; for(int i = 0; i < row_a; i++) a[i] = new int [col_a]; init_matrix(a, row_a, col_a); cout << "\n\nMacierz A:\n\n"; show_matrix(a, row_a, col_a); int** b; b = new int* [row_b]; for(int i = 0; i < row_b; i++) b[i] = new int [col_b]; init_matrix(b, row_b, col_b); cout << "\nMacierz B:\n\n"; show_matrix(b, row_b, col_b); // -------------------------------------------------------------------- int** c; c = new int* [row_c]; for(int i = 0; i < row_c; i++) c[i] = new int [col_c]; zero_matrix(c, row_c, col_c); mult_matrix(a, col_a, b, row_b, c, row_c, col_c); show_matrix(c, row_c, col_c); // --------------------------------------------------------------------- for(int i = 0; i < row_a; i++) delete [] a[i]; delete [] a; for(int i = 0; i < row_b; i++) delete [] b[i]; delete [] b; for(int i = 0; i < row_c; i++) delete [] c[i]; delete [] c; cout << "\n\nPress Esc..."; while(27 != getch()); return 0; } void zero_matrix(int** t, int row, int col) { for(int i = 0; i < row; i++) for(int j = 0; j < col; j++) t[i][j] = 0; } void init_matrix(int** t, int row, int col) { randomize(); for(int i = 0; i < row; i++) for(int j = 0; j < col; j++) t[i][j] = random(100+ 10*i + j); } void show_matrix(int** t, int row, int col) { for(int i = 0; i < row; i++) { for(int j = 0; j < col; j++) cout << setw(8) << t[i][j]; cout << endl; } cout << endl; } void mult_matrix(int** a, int c_a, int** b, int r_b, int** c, int r_c, int c_c) { if(c_a == r_b) { cout << "\nIloczyn macierzy:\n\n"; for(int i = 0; i < r_c; i++) for(int j = 0; j < c_c; j++) for(int k = 0; k < c_a; k++) c[i][j] = c[i][j] + a[i][k] * b[k][j]; } else cout << "Mnozenie niewykonalne\n\n"; }