Guest User

Untitled

a guest
Oct 25th, 2016
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.34 KB | None | 0 0
  1. #include<iostream>
  2. #include<fstream>
  3. #include <cmath>
  4. using namespace std;
  5.  
  6. class Matrix {
  7. private:
  8. void method();
  9.  
  10. private:
  11. double** matr; //matrix
  12. int rown; //rown
  13. int column; //column
  14.  
  15. std::string m_name;
  16. public:
  17. Matrix(const char *name)
  18. {
  19. m_name = name;
  20.  
  21. matr = NULL;
  22. rown = column = 0;
  23.  
  24. cout << __FILE__ << ":" << __LINE__ << " CONSTRUCTOR " << m_name.data() << " " << matr << endl;
  25. }
  26.  
  27. void allocate(int in_rown, int in_column)
  28. {
  29. rown = in_rown;
  30. column = in_column;
  31.  
  32. matr = new double*[rown];
  33. for (int i = 0; i < rown; i++) {
  34. matr[i] = new double[column];
  35. }
  36.  
  37. cout << __FILE__ << ":" << __LINE__ << " ALLOCATOR " << m_name.data() << " " << matr << endl;
  38. }
  39.  
  40. Matrix operator*(Matrix & mult);
  41. void read_matrix(const char*filename);
  42. void write_matrix(const char*filename) const;
  43.  
  44. ~Matrix()
  45. {
  46. cout << __FILE__ << ":" << __LINE__ << " DESTRUCTOR " << m_name.data() << " " << matr << endl;
  47.  
  48. if (matr != NULL) {
  49. for (int i = 0; i < rown; i++) {
  50. delete[] matr[i];
  51. }
  52.  
  53. delete[] matr;
  54. }
  55. }
  56. };
  57.  
  58. Matrix Matrix::operator*(Matrix & mult) {
  59. Matrix result("result");
  60.  
  61.  
  62. result.allocate(rown, mult.column);
  63.  
  64. for (int i = 0; i < result.rown; i++)
  65. {
  66. for (int k = 0; k < result.column; k++)
  67. {
  68. result.matr[i][k] = 0;
  69. for (int j = 0; j < result.column; j++)
  70. {
  71. result.matr[i][k] += matr[i][j] * mult.matr[j][k];
  72. }
  73. }
  74. }
  75.  
  76. return result;
  77. }
  78.  
  79. void Matrix::read_matrix(const char* filename) {
  80. ifstream in(filename);
  81.  
  82. in >> rown;
  83. in >> column;
  84.  
  85. allocate(rown, column);
  86.  
  87. //Считаем матрицу из файла
  88. for (int i = 0; i < rown; i++)
  89. for (int j = 0; j < column; j++)
  90. in >> matr[i][j];
  91.  
  92. in.close();
  93. return;
  94. }
  95.  
  96. void Matrix::write_matrix(const char* filename) const {
  97. ofstream on(filename);
  98.  
  99. on << rown << 't' << column << endl;
  100.  
  101. //запишем матрицу в файл
  102. for (int i = 0;i < rown;i++) {
  103. for (int k = 0;k < column;k++) {
  104. on << matr[i][k] << 't';
  105. }
  106. on << endl;
  107. }
  108.  
  109. on.close();
  110. return;
  111. }
  112.  
  113. int main(int argc, char*argv[])
  114. {
  115. if (argc == 4) {
  116.  
  117. Matrix input1("input1");
  118. Matrix input2("input2");
  119. input1.read_matrix(argv[1]);
  120. input2.read_matrix(argv[2]);
  121.  
  122. Matrix a("a");
  123. a = input1*input2;
  124. /*Matrix b;*/
  125. a.write_matrix(argv[3]);
  126. }
  127. system("pause");
  128. return 0;
  129. }
  130.  
  131. a = input1*input2;
Add Comment
Please, Sign In to add comment