Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define cin fin
- #define cout fout
- ifstream fin("prob.in");
- ofstream fout("prob.out");
- int n;
- float a[100][100];
- void out() {
- for (int i = 1; i <= n; i++) {
- for (int j = 1; j <= n; j++)
- cout << setw(7) << a[i][j];
- cout << endl;
- }
- cout << endl;
- }
- float determinant() {
- int flag = 0;
- float det = 1;
- for (int i = 1; i <= n; i++)
- for (int k = i + 1; k <= n; k++)
- if (abs(a[i][i]) < abs(a[k][i])) {
- flag++;
- for (int j = 1; j <= n; j++)
- swap(a[i][j], a[k][j]);
- }
- for (int i = 1; i <= n - 1; i++) // loopul principal a lu gauss
- for (int k = i + 1; k <= n; k++) {
- float t = a[k][i] / a[i][i];
- for (int j = 1; j <= n; j++)
- a[k][j] = a[k][j] - t * a[i][j];
- }
- for (int i = 1; i <= n; i++)
- det = det * a[i][i];
- if (flag % 2 == 0)
- det = det;
- else
- det = -det;
- return det;
- }
- bool prim(int m) {
- if (m < 2) return false;
- for (int i = 2; i < m; i++)
- if (m % i == 0)
- return false;
- return true;
- }
- int main() {
- std::vector<int> prime;
- cout << "Dati n: "; cin >> n;
- cout << "Dati matricea:\n";
- for (int i = 1; i <= n; i++)
- for (int j = 1; j <= n; j++) {
- cin >> a[i][j];
- if (i == j) prime.push_back(a[i][j]);
- }
- cout << "Avem matricea:\n"; out();
- double det = determinant();
- cout << "Det(A) = " << setw(6) << setprecision(4) << determinant() << endl;
- if (det != 0) {
- int index = 0;
- while (index < prime.size()) {
- if (!prim(prime[index])) {
- prime.erase(prime.begin()+index);
- } else {
- index++;
- }
- }
- if (prime.size() == 0)
- cout << "Nu avem numere prime pe diagonala principala\n";
- else {
- cout << "Numere prime pe diagonala principala: " << prime.size() << ":" << endl;
- for (auto &it: prime) cout << it << " ";
- cout << endl;
- }
- } else {
- cout << "De la diagonala in jos e zero" << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement