#include #include #include #define Max 10 /***************************************************/ void Moarrefi( void ) { clrscr(); cout << "\t\t\t\tBe Name Khoda\n" << "\n\nBarname Nevis : marzie sabet" << "\n\nReshteye Tahsili : mohandesi Computer" << "\n\nMaghtae Tahsili : Karshenasi" << "\n\nE-Mail : marzie.sabet@gmail.com" << "\n\n\n\nlotfan Kelidi Ra Befesharid"; getch(); clrscr(); } /***************************************************/ struct Node { float Roll, Port; }A[Max][Max]; int m, n; char Choise; /***************************************************/ void PrintMatrix( struct Node D[Max][Max] ) { int i, j, k = -1; if( Choise == '2' ) k = n / 2; for( i = 0; i <= n; i++ ) { cout << "[" << i << "]\t"; if( ( k != -1 ) && ( i == k ) ) cout << "|\t"; } for( i = 0; i < m; i++ ) { cout << "\n\n[" << ( i+1 ) << "]"; for( j = 0; j < n; j++) { if( ( k != -1 ) && ( j == k ) ) cout << "\t|"; cout << "\t" << setprecision( 3 ) << D[i][j].Roll / D[i][j].Port; } } } /***************************************************/ int MinRenge( void ) { int n1 = n; if( m < n1 ) return m; return n1; } /***************************************************/ void ChengeRow( int k, int t ) { int i; struct Node temp[Max]; for( i = 0; i < n; i++ ) { temp[i] = A[k][i]; A[k][i] = A[t][i]; A[t][i] = temp[i]; } } /***************************************************/ void G_J( void ) { int i, j, k, t, Min; Min = MinRenge(); for( k = 0; k < Min; k++ ) { t = k + 1; do { if( ( A[k][k].Roll == 0 ) && ( t < m ) ) ChengeRow( k, t++ ); else if( A[k][k].Roll == 0 ) { cout << "\n\n# Matris R :\n\n"; PrintMatrix( A ); return; } } while( A[k][k].Roll == 0 ); for( j = n-1; j >k ; j-- ) { A[k][j].Roll = A[k][j].Roll * A[k][k].Port; A[k][j].Port = A[k][j].Port * A[k][k].Roll; } A[k][k].Roll = A[k][k].Port = 1; for( i = 0; i < m; i++ ) { if( i != k ) { for( j = k + 1; j < n; j++ ) { A[i][j].Roll = ( A[i][j].Roll * A[k][j].Port * A[i][k].Port ) - ( A[i][j].Port * A[k][j].Roll * A[i][k].Roll ); A[i][j].Port = A[i][j].Port * A[k][j].Port * A[i][k].Port; } } } for( i = 0; i < m; i++ ) { if( i != k ) { A[i][k].Roll = 0; A[i][k].Port = 1; } } } if( Choise == '2' ) cout << "\n\n# Matris [ I|A' ] :\n\n"; PrintMatrix( A ); } /***************************************************/ void ReadMatrix( void ) { int i, j; cout << " Be dast avardane matris makoos\n"; Choise = '2'; clrscr(); cout << "Lotfan renge matris [ A ] ra adadi bozorgtar mosavi 3 vared konid : "; if( Choise == '2' ) { cin >> m; if(m>=3) n = m; else return; } cout << "\nLotfan anasore matris [ A ] ra vared konid :\n\n"; cout << " i\t j\tMeghdar\n"; for( i = 0; i < m; i++ ) { cout << "\n[" << ( i + 1 ) << "]"; for( j = 0; j < n; j++ ) do { cout << "\t[" << ( j + 1 ) << "]\t"; cin >> A[i][j].Roll; cout << "\t\t /\n\t\t "; cin >> A[i][j].Port; if( A[i][j].Port == 0 ) cout << "\t\tERROR : Makhraj nemitavanad '0' bashad .\n"; } while( A[i][j].Port == 0 ); } if( Choise == '2' ) { n = 2 * m; for( i = 0; i < m; i++ ) A[i][i + 3].Roll = 1; for( i = 0; i < m; i++ ) for( j = m; j < n; j++ ) A[i][j].Port = 1; clrscr(); cout << "# Matris [ A|I ] :\n\n"; } PrintMatrix( A ); getch(); G_J(); } /***************************************************/ void main( void ) { Moarrefi(); ReadMatrix(); getch(); }