#include <iostream> #include <vector> #include <algorithm> using namespace std; typedef vector<double>Vect; typedef vector<Vect>Matr; int fact(int a); int main() { int i; int counter = 0; int nb = 0; cout << " number of rows or columns :\n"; cin >> nb; cout << " Enter the square matrix :\n"; Vect row(nb); Vect determinant; Matr a; int product = 1; int determ = 0; int ve1 = 0; for(i = 0; i < nb; i++) { for(int j = 0; j < nb; j++) { if(j<(nb-1)) cout << " enter element\n"; else cout << " enter last element of this row\n"; cin >> row[j]; } a.push_back(row); } for(i = 0; i < nb; i++) { cout << endl; for(int j = 0; j < nb; j++) { cout << a[i][j] << " "; } } cout << endl; vector<int>vec; for(i = 1; i <= nb; i++) vec.push_back(i); vector<int>::iterator iter1 = vec.begin(); vector<int>::iterator iter2 = vec.end(); for(i = 0; i < fact(nb); i++) { /* copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, " "));;*/ vector<int>vec1(nb); copy(vec.begin(), vec.end(), vec1.begin()); for(int j = 0; j < (nb); j++) cout << vec1[j]; for(int i = 0; i < vec1.size(); i++) { for(int j = i; j < vec1.size(); j++) { if(vec1[j]<vec1[i]) counter++; } } if(counter%2==0) cout << " even "; else cout << " odd "; for(int w = 0; w < nb; w++) { ve1 = (vec1[w])-1; product *= (a[w][ve1]); } if(counter%2!=0) product = (- product); determinant.push_back(product); counter = 0; product = 1; next_permutation(iter1, iter2); cout << endl; } for(int x = 0; x < determinant.size(); x++) { determ += determinant[x]; } for(i = 0; i < nb; i++)//print the matrix { cout << endl; for(int j = 0; j < nb; j++) { cout << a[i][j] << " "; } } cout << endl; cout << " The determinant is :\n"; cout << determ << endl; return 0; } int fact(int a) { if(a<=1) return a; return (a * fact(a - 1)); }
Rabu, 02 November 2011
Coding Determinan Matrik C++
Langganan:
Posting Komentar (Atom)
Tidak ada komentar:
Posting Komentar