KvanTTT

Matrix Ramiel 2

Dec 1st, 2013
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.16 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. int** load_matrix(int n, int m);
  7. void print_matrix(int n, int m, int** matrix);
  8. void free_matrix(int n, int** matrix);
  9. int* get_row(int m, int row, int** matrix);
  10. int* get_column(int n, int column, int** matrix);
  11. int min_element_column(int size, int* row);
  12. int sum_of_positive_column(int size, int* column);
  13.  
  14. int main(int argc, char* argv[])
  15. {
  16.     int n, m, k;
  17.     cout << "Enter n, m: ";
  18.     cin >> n >> m;
  19.  
  20.     int** matrix = load_matrix(n, m);
  21.     cout << "Matrix: " << endl;
  22.     print_matrix(n, m, matrix);
  23.     cout << endl;
  24.  
  25.     cout << "Enter k: ";
  26.     cin >> k;
  27.  
  28.     int* row = get_row(m, k, matrix);
  29.     int min_ind_column = min_element_column(m, row);
  30.     int *column = get_column(n, min_ind_column, matrix);
  31.     int sum = sum_of_positive_column(n, column);
  32.  
  33.     cout << endl;
  34.     cout << "Result: " << sum;
  35.  
  36.     free_matrix(n, matrix);
  37.     delete row;
  38.     delete column;
  39.  
  40.     return 0;
  41. }
  42.  
  43. int** load_matrix(int n, int m)
  44. {
  45.     int** result  = new int*[n];
  46.  
  47.     ifstream file("Matrix.txt");
  48.  
  49.     for (int i = 0; i < n; i++)
  50.     {
  51.         result[i] = new int[m];
  52.         for (int j = 0; j < m; j++)
  53.             file >> result[i][j];
  54.     }
  55.  
  56.     return result;
  57. }
  58.  
  59. void print_matrix(int n, int m, int** matrix)
  60. {
  61.     for (int i = 0; i < n; i++)
  62.     {
  63.         for (int j = 0; j < m; j++)
  64.             cout << matrix[i][j] << "   ";
  65.         cout << endl;
  66.     }
  67. }
  68.  
  69. void free_matrix(int n, int** matrix)
  70. {
  71.     for (int i = 0; i < n; i++)
  72.         delete matrix[i];
  73.     delete matrix;
  74. }
  75.  
  76. int* get_row(int m, int row, int** matrix)
  77. {
  78.     int* result = new int[m];
  79.  
  80.     for (int i = 0; i < m; i++)
  81.         result[i] = matrix[row][i];
  82.  
  83.     return result;
  84. }
  85.  
  86. int* get_column(int n, int column, int** matrix)
  87. {
  88.     int* result = new int[n];
  89.  
  90.     for (int i = 0; i < n; i++)
  91.         result[i] = matrix[i][column];
  92.  
  93.     return result;
  94. }
  95.  
  96. int min_element_column(int size, int* row)
  97. {
  98.     int min = row[0];
  99.     int min_ind = 0;
  100.  
  101.     for (int i = 1; i < size; i++)
  102.     {
  103.         if (min > row[i])
  104.         {
  105.             min = row[i];
  106.             min_ind = i;
  107.         }
  108.     }
  109.  
  110.     return min_ind;
  111. }
  112.  
  113. int sum_of_positive_column(int size, int* column)
  114. {
  115.     int result = 0;
  116.  
  117.     for (int i = 0; i < size; i++)
  118.         if (column[i] > 0)
  119.             result += column[i];
  120.    
  121.     return result;
  122. }
Advertisement
Add Comment
Please, Sign In to add comment