Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.96 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4. #include <iomanip>
  5.  
  6. void setDim(int* pRows, int* pColumns) {
  7.     std::cout << "Enter the number of rows: ";
  8.     std::cin >> *pRows;
  9.     std::cout << "Enter the number of columns: ";
  10.     std::cin >> *pColumns;
  11. }
  12.  
  13. int** initializeMatrix(int rows, int columns) {
  14.     int** matrix = new int*[rows];
  15.     for (int i = 0; i < rows; i++) {
  16.         matrix[i] = new int[columns];
  17.     }
  18.     return matrix;
  19. }
  20.  
  21. void fillMatrix(int** matrix, int rows, int columns) {
  22.     for (int i = 0; i < rows; i++) {
  23.     for (int j = 0; j < columns; j++) {
  24.         matrix[i][j] = std::rand() % 5 + 1;
  25.     }
  26.     }
  27. }
  28.  
  29. void printMatrix(int** matrix, int rows, int columns) {
  30.     for (int i = 0; i < rows; i++) {
  31.         for (int j = 0; j < columns; j++) {
  32.             std::cout << std::setw(3) << matrix[i][j] << " ";
  33.         }
  34.         std::cout << std::endl;
  35.     }
  36.     std::cout << std::endl;
  37. }
  38.  
  39. void multiplicateMatrix(int** multiplicand, int** multiplier, int** product, int productRows, int productColumns, int multiplicandColumns) {
  40.     int temp = 0;
  41.     for (int i = 0; i < productRows; i++) {
  42.         for (int j = 0; j < productColumns; j++) {
  43.             for (int k = 0; k < multiplicandColumns; k++) {
  44.                 temp += multiplicand[i][k] * multiplier[k][j];
  45.             }
  46.             product[i][j] = temp;
  47.             temp = 0;
  48.         }
  49.  
  50.     }
  51. }
  52.  
  53. void deleteMatrix(int** matrix, int rows) {
  54.     for (int i = 0; i < rows; i++) {
  55.         delete[] matrix[i];
  56.     }
  57.     delete[] matrix;
  58. }
  59.  
  60. int main(int argc, char **argv) {
  61.     int matrix1rows, matrix1columns;
  62.     int matrix2rows, matrix2columns;
  63.     int matrix3rows, matrix3columns;
  64.     std::srand(std::time(NULL));
  65.    
  66.     std::cout << "First matrix:" << std::endl;
  67.     setDim(&matrix1rows, &matrix1columns);
  68.    
  69.     std::cout << "Second matrix:" << std::endl;
  70.     setDim(&matrix2rows, &matrix2columns);
  71.  
  72.     // проверка согласованости матриц
  73.     if (matrix1columns != matrix2rows) {
  74.       std::cout << "Матрицы не согласованы";
  75.       return 1;
  76.     }
  77.  
  78.     int **matrix1 = initializeMatrix(matrix1rows, matrix1columns);
  79.     fillMatrix(matrix1, matrix1rows, matrix1columns);
  80.    
  81.     int **matrix2 = initializeMatrix(matrix2rows, matrix2columns);
  82.     fillMatrix(matrix2, matrix2rows, matrix2columns);
  83.  
  84.     printMatrix(matrix1, matrix1rows, matrix1columns);
  85.     printMatrix(matrix2, matrix2rows, matrix2columns);
  86.    
  87.    
  88.    
  89.     matrix3rows = matrix1rows;
  90.     matrix3columns = matrix2columns;
  91.     int **matrix3 = initializeMatrix(matrix3rows, matrix3columns);
  92.    
  93.     multiplicateMatrix(matrix1, matrix2, matrix3, matrix3rows, matrix3columns, matrix1columns);
  94.  
  95.     printMatrix(matrix3, matrix3rows, matrix3columns);
  96.  
  97.     // освобождение памяти
  98.     deleteMatrix(matrix1, matrix1rows);
  99.     deleteMatrix(matrix2, matrix2rows);
  100.     deleteMatrix(matrix3, matrix3rows);
  101.     return 0;
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement