Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.14 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #include <fstream>
  3. using namespace std;
  4. ifstream f("prob3.in");
  5. ofstream g("prob3.out");
  6.  
  7. int prim(int a)
  8. {
  9. if (a < 2)
  10. return 0;
  11. for (int i = 2; i * i <= a; i++)
  12. if (a % i == 0)
  13. return 0;
  14. return 1;
  15. }
  16.  
  17. int determinant(int mat[10][10], int n)
  18. {
  19. int num1, num2, det = 1, index, total = 1;
  20.  
  21. int temp[n + 1];
  22.  
  23. for (int i = 0; i < n; i++) {
  24. index = i;
  25.  
  26. while (mat[index][i] == 0 && index < n) {
  27. index++;
  28. }
  29. if (index == n) {
  30.  
  31. continue;
  32. }
  33. if (index != i) {
  34.  
  35. for (int j = 0; j < n; j++) {
  36. swap(mat[index][j], mat[i][j]);
  37.  
  38. det = det * pow(-1, index - i);
  39. }
  40. }
  41.  
  42. for (int j = 0; j < n; j++) {
  43. temp[j] = mat[i][j];
  44. }
  45.  
  46. for (int j = i + 1; j < n; j++) {
  47. num1 = temp[i];
  48. num2 = mat[j][i];
  49.  
  50. for (int k = 0; k < n; k++) {
  51.  
  52. mat[j][k] = (num1 * mat[j][k]) - (num2 * temp[k]);
  53. }
  54. total = total * num1;
  55. }
  56. }
  57.  
  58. for (int i = 0; i < n; i++) {
  59. det = det * mat[i][i];
  60. }
  61. return (det / total);
  62. }
  63.  
  64. int main()
  65. {
  66. int n, i, j, x;
  67. int matrix[10][10];
  68.  
  69. f >> n;
  70.  
  71. for (i = 0; i < n; i++) {
  72. for (j = 0; j < n; j++) {
  73.  
  74. f >> matrix[i][j];
  75. }
  76. }
  77. g << " Ati introdus matricea : " << endl;
  78. for (i = 0; i < n; i++) {
  79. for (j = 0; j < n; j++)
  80. g << matrix[i][j] << " ";
  81. g << endl;
  82. }
  83. int k = 0;
  84. x = determinant(matrix, n);
  85. g << " Determinantul : " << x << endl;
  86.  
  87. if (x == 0) {
  88. g << " De la diagonala in jos e zero " << endl;
  89. }
  90. else {
  91. for (i = 0; i < n; i++) {
  92. if (prim(abs(matrix[i][i])))
  93. k++;
  94. }
  95. g << " Numere prime pe diagonala dupa zerografiere : " << k << endl;
  96. }
  97. for (i = 0; i < n; i++) {
  98. for (j = 0; j < n; j++)
  99. g << matrix[i][j] << " ";
  100. g << endl;
  101. }
  102. return 0;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement