#include <iostream>
#include <iomanip>
using namespace std;
// Function to calculate the determinant of a 2x2 matrix
float determinant2x2( float a, float b, float c, float d) {
return a * d - b * c;
}
int main( ) {
int n;
cout << "Enter the order of square matrix: " ;
cin >> n;
if ( n ! = 2 ) {
cout << "This implementation currently supports only 2x2 matrices.\n " ;
return 1 ;
}
float A[ 2 ] [ 2 ] , B[ 2 ] , invA[ 2 ] [ 2 ] , detA;
cout << "Enter coefficients of matrix A:\n " ;
for ( int i = 0 ; i < 2 ; i++ )
for ( int j = 0 ; j < 2 ; j++ )
cin >> A[ i] [ j] ;
cout << "Enter constants of vector B: " ;
for ( int i = 0 ; i < 2 ; i++ )
cin >> B[ i] ;
// Calculate determinant of A
detA = determinant2x2( A[ 0 ] [ 0 ] , A[ 0 ] [ 1 ] , A[ 1 ] [ 0 ] , A[ 1 ] [ 1 ] ) ;
cout << "Determinant of A: " << detA << endl;
if ( detA == 0 ) {
cout << "Matrix is singular; the system is not uniquely solvable." << endl;
return 1 ;
}
// Calculate inverse of A (adjoint/det)
invA[ 0 ] [ 0 ] = A[ 1 ] [ 1 ] / detA;
invA[ 0 ] [ 1 ] = - A[ 0 ] [ 1 ] / detA;
invA[ 1 ] [ 0 ] = - A[ 1 ] [ 0 ] / detA;
invA[ 1 ] [ 1 ] = A[ 0 ] [ 0 ] / detA;
cout << "Inverse of matrix A:\n " ;
for ( int i = 0 ; i < 2 ; i++ ) {
for ( int j = 0 ; j < 2 ; j++ )
cout << fixed << setprecision( 4 ) << setw( 8 ) << invA[ i] [ j] << " " ;
cout << endl;
}
// Solve using Cramer's Rule
float x1, x2;
float D1 = determinant2x2( B[ 0 ] , A[ 0 ] [ 1 ] , B[ 1 ] , A[ 1 ] [ 1 ] ) ;
float D2 = determinant2x2( A[ 0 ] [ 0 ] , B[ 0 ] , A[ 1 ] [ 0 ] , B[ 1 ] ) ;
x1 = D1 / detA;
x2 = D2 / detA;
cout << "The solution using Cramer's Rule:\n " ;
cout << "x1 = " << x1 << endl;
cout << "x2 = " << x2 << endl;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIEZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSB0aGUgZGV0ZXJtaW5hbnQgb2YgYSAyeDIgbWF0cml4CmZsb2F0IGRldGVybWluYW50MngyKGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IGMsIGZsb2F0IGQpIHsKICAgIHJldHVybiBhICogZCAtIGIgKiBjOwp9CgppbnQgbWFpbigpIHsKICAgIGludCBuOwogICAgY291dCA8PCAiRW50ZXIgdGhlIG9yZGVyIG9mIHNxdWFyZSBtYXRyaXg6ICI7CiAgICBjaW4gPj4gbjsKCiAgICBpZiAobiAhPSAyKSB7CiAgICAgICAgY291dCA8PCAiVGhpcyBpbXBsZW1lbnRhdGlvbiBjdXJyZW50bHkgc3VwcG9ydHMgb25seSAyeDIgbWF0cmljZXMuXG4iOwogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIGZsb2F0IEFbMl1bMl0sIEJbMl0sIGludkFbMl1bMl0sIGRldEE7CgogICAgY291dCA8PCAiRW50ZXIgY29lZmZpY2llbnRzIG9mIG1hdHJpeCBBOlxuIjsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKQogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgMjsgaisrKQogICAgICAgICAgICBjaW4gPj4gQVtpXVtqXTsKCiAgICBjb3V0IDw8ICJFbnRlciBjb25zdGFudHMgb2YgdmVjdG9yIEI6ICI7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykKICAgICAgICBjaW4gPj4gQltpXTsKCiAgICAvLyBDYWxjdWxhdGUgZGV0ZXJtaW5hbnQgb2YgQQogICAgZGV0QSA9IGRldGVybWluYW50MngyKEFbMF1bMF0sIEFbMF1bMV0sIEFbMV1bMF0sIEFbMV1bMV0pOwoKICAgIGNvdXQgPDwgIkRldGVybWluYW50IG9mIEE6ICIgPDwgZGV0QSA8PCBlbmRsOwoKICAgIGlmIChkZXRBID09IDApIHsKICAgICAgICBjb3V0IDw8ICJNYXRyaXggaXMgc2luZ3VsYXI7IHRoZSBzeXN0ZW0gaXMgbm90IHVuaXF1ZWx5IHNvbHZhYmxlLiIgPDwgZW5kbDsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAvLyBDYWxjdWxhdGUgaW52ZXJzZSBvZiBBIChhZGpvaW50L2RldCkKICAgIGludkFbMF1bMF0gPSBBWzFdWzFdIC8gZGV0QTsKICAgIGludkFbMF1bMV0gPSAtQVswXVsxXSAvIGRldEE7CiAgICBpbnZBWzFdWzBdID0gLUFbMV1bMF0gLyBkZXRBOwogICAgaW52QVsxXVsxXSA9IEFbMF1bMF0gLyBkZXRBOwoKICAgIGNvdXQgPDwgIkludmVyc2Ugb2YgbWF0cml4IEE6XG4iOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDI7IGorKykKICAgICAgICAgICAgY291dCA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oNCkgPDwgc2V0dyg4KSA8PCBpbnZBW2ldW2pdIDw8ICIgIjsKICAgICAgICBjb3V0IDw8IGVuZGw7CiAgICB9CgogICAgLy8gU29sdmUgdXNpbmcgQ3JhbWVyJ3MgUnVsZQogICAgZmxvYXQgeDEsIHgyOwogICAgZmxvYXQgRDEgPSBkZXRlcm1pbmFudDJ4MihCWzBdLCBBWzBdWzFdLCBCWzFdLCBBWzFdWzFdKTsKICAgIGZsb2F0IEQyID0gZGV0ZXJtaW5hbnQyeDIoQVswXVswXSwgQlswXSwgQVsxXVswXSwgQlsxXSk7CgogICAgeDEgPSBEMSAvIGRldEE7CiAgICB4MiA9IEQyIC8gZGV0QTsKCiAgICBjb3V0IDw8ICJUaGUgc29sdXRpb24gdXNpbmcgQ3JhbWVyJ3MgUnVsZTpcbiI7CiAgICBjb3V0IDw8ICJ4MSA9ICIgPDwgeDEgPDwgZW5kbDsKICAgIGNvdXQgPDwgIngyID0gIiA8PCB4MiA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9