Advertisement
Guest User

Untitled

a guest
Dec 26th, 2017
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.64 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <fstream>
  4. #include <cstring>
  5. #include <iomanip>
  6.  
  7. using namespace std;
  8.  
  9. float det(float **arr, int row_number, int col_number) //тут особо комментить нечего, функция обсчитывает определитель
  10. {
  11. float koef;
  12. float answer = 1;
  13. int row;
  14. for (int k = 1; k < row_number; k++)
  15. {
  16. row = 0;
  17. for (int i = k; i < row_number; i++)
  18. {
  19. while (k + row < row_number && arr[k - 1][k - 1] == 0)
  20. {
  21. for (int j = 0; j < row_number; j++)
  22. {
  23. arr[k - 1][j] = arr[k - 1][j] + arr[k + row][j];
  24. }
  25. row++;
  26. }
  27. if (arr[k - 1][k - 1] != 0)
  28. {
  29. koef = -arr[i][k - 1] / arr[k - 1][k - 1];
  30. for (int j = 0; j < row_number; j++)
  31. {
  32. arr[i][j] = arr[i][j] + arr[k - 1][j] * koef;
  33. }
  34. }
  35. }
  36. }
  37. for (int i = 0; i < row_number; i++)
  38. {
  39. answer *= arr[i][i];
  40. }
  41. return answer;
  42.  
  43.  
  44. }
  45.  
  46. int main() {
  47.  
  48. float** arr;
  49. char* string = new char[255];
  50. char* buf;
  51. int row_number = 0;
  52. int col_number = 0;
  53. ifstream in("test.in");
  54. ofstream out("test.out");
  55. if (!in.is_open())
  56. {
  57. cout << "File not found";
  58. return 0;
  59. }
  60.  
  61.  
  62. while (!in.eof())
  63. {
  64. in.getline(string, 255); //считаем количество строчек
  65. ++row_number;
  66.  
  67. }
  68.  
  69. in.seekg(0, ios::beg);
  70. in.getline(string, 255);
  71.  
  72. char str[255] = { 0 };
  73. strcpy(str, string);
  74. buf = strtok(str, " ");
  75. while (buf)
  76. {
  77. buf = strtok(NULL, " ");
  78. ++col_number;
  79. }
  80.  
  81. cout << "NUMBESR" << row_number << " - " << col_number << endl; //просто проверка правильности считывания
  82.  
  83. arr = new float*[row_number];
  84. for (int i = 0; i < row_number; ++i) //выделяем память, имея данные о размерности массива
  85. arr[i] = new float[col_number];
  86.  
  87.  
  88. for (int i = 0; i < row_number; i++)
  89. {
  90. for (int j = 0; j < col_number; j++) //обнуление тут чисто для теста
  91. arr[i][j] = 0;
  92. }
  93.  
  94. in.seekg(0, ios::beg);
  95. in.clear();
  96.  
  97. for (int i = 0; i < row_number; i++) {
  98. for (int j = 0; j < col_number; j++) {
  99. in >> arr[i][j]; //ПОЧЕМУ ТЫ НЕ РАБОТАЕШЬ!?!? ВОТ ПОЧЕМУ ОНО СЧИТЫВАЕТ?
  100. cout << arr[i][j] << endl;
  101. }
  102. }
  103. if (row_number == col_number)
  104. {
  105. float d = det(arr, row_number, col_number);
  106. cout << "\nDeterminant is " << d << endl;
  107. out << setprecision(2) << d;
  108. }
  109.  
  110. else
  111. {
  112. cout << "Your matrix isn't square" << endl;
  113. return 0;
  114. }
  115.  
  116. in.close();
  117. out.close();
  118. system("pause");
  119. return 0;
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement