#include #include // setw #include // abs using namespace std; const int N = 3; double a [N][N] = { {1, 2, 3}, {1, 2, 1}, {3, 1, 2} }; double b [N] = {6, 3, 6}; string name [N] = { "x", "y", "z"}; void tisk () { int i,k; for (i=0; i= 0 ) { cout << "+"; } cout << a[i][k] << "*" << name[k] << " "; } cout << " = " << b[i] << endl; } } void deleni (int r, double q) // r-tou radku delime cislem q { for (int k = 0; k < N; k++) { a[r][k] = a[r][k]/q; } b [r] = b [r]/q; } void odcitani (int c, int r, double f) // od c-te radky odecitame f nasobek r-te radky { for (int k = 0; k < N; k++) { a[c][k] = a[c][k] - a[r][k]*f; } b[c] = b [c] - b[r]*f; } void swap (double & u, double & v) { double t = u; u = v; v = t; } void prehod (int z, int r) // prehodit z-tou a r-tou radku { for (int k = 0; k < N; k++) { swap (a[z][k], a[r][k]); } swap (b[z], b[r]); } const double eps = 1e-9; // cisla v absolutni hodnote mensi nez 10^9 povazujeme za nulu int main() { tisk (); int r = 0; int s = 0; while (r < N && s < N) { if (abs (a[r][s]) < eps) { int t = r+1; while (t < N && abs (a[t][s]) < eps) { t ++; } if (t < N) prehod (r, t); } if (abs (a[r][s]) >= eps) // pokud muzeme delit { deleni (r, a[r][s]); // a[r][s] upravime na jednicku for (int i=0; i