Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2020
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.07 KB | None | 0 0
  1. #define NMAX 310
  2. #include <iostream>
  3. #include <cstdio>
  4. using namespace std;
  5.  
  6. int n, m;
  7. double a[NMAX][NMAX];
  8. double rez[NMAX];
  9.  
  10. void make1_onLine(int line)
  11. {
  12. int for1 = a[line][line];
  13. for(int j = line; j <= n; ++j)
  14. a[line][j] /= for1;
  15. rez[line] /= for1;
  16.  
  17. }
  18.  
  19. void make0_onLine(int line, int column, int relativeToLine)
  20. {
  21. double multipl = -a[line][column];
  22. for(int j = column; j <= n; ++j)
  23. a[line][j] = a[line][j] + a[relativeToLine][j] * multipl;
  24. rez[line] = rez[line] + rez[relativeToLine] * multipl;
  25. }
  26.  
  27.  
  28. void diff_startingOn(int line, int column)
  29. {
  30. for(int i = line; i <= n; ++i)
  31. if(a[i][column] != 0)
  32. make0_onLine(i, column, line-1);
  33. }
  34.  
  35.  
  36.  
  37. void swp(int i, int l)
  38. {
  39. for(int j = 1; j <= n; ++j)
  40. swap(a[i][j], a[l][j]);
  41. }
  42.  
  43.  
  44.  
  45. void read()
  46. {
  47. scanf("%d %d", &n, &m);
  48. for(int i = 1; i <= n; ++i)
  49. {
  50. for(int j = 1; j <= n; ++j)
  51. scanf("%lf", &a[i][j]);
  52. scanf("%lf", &rez[i]);
  53. }
  54. }
  55.  
  56. void form_a()
  57. {
  58. int plusJ = 0;
  59. for(int l_to_solve = 1; l_to_solve <= n; ++l_to_solve)
  60. {
  61. if(a[l_to_solve][l_to_solve + plusJ] != 0)
  62. {
  63. make1_onLine(l_to_solve);
  64. diff_startingOn(l_to_solve+1, l_to_solve + plusJ);
  65. }
  66. else{
  67. bool findn0 = 0;
  68. for(int i = l_to_solve+1; i <= n; ++i)
  69. if(a[i][l_to_solve] != 0)
  70. {
  71. swp(i, l_to_solve);
  72. make1_onLine(l_to_solve);
  73. diff_startingOn(l_to_solve+1, l_to_solve + plusJ);
  74. findn0 = 1;
  75. break;
  76. }
  77. if(findn0 == 0)
  78. plusJ ++;
  79. }
  80. }
  81. }
  82.  
  83. void write()
  84. {
  85. for(int i = 1; i <= n; ++i)
  86. {
  87. for(int j = 1; j <= n; ++j)
  88. printf("%lf ", a[i][j]);
  89. printf("\n");
  90. }
  91. }
  92. int main()
  93. {
  94. freopen("gauss.in", "r", stdin);
  95. freopen("gauss.out", "w", stdout);
  96. read();
  97. form_a();
  98. write();
  99. return 0;
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement