#ifdef HAVE_CONFIG_H #include #endif #include #include #include using namespace std; class macierz; class wektor{ friend void wyswW(wektor & w); public: friend class macierz; double *tab; int wier; wektor(int n); void wysw(wektor & w); wektor & wektor::operator=(wektor w); wektor & wektor::operator=(double liczba); void fill(); wektor operator++(int); wektor operator++(); }; class macierz{ public: int wier,kol; double **tab; macierz(int n,int m); friend void uzup(macierz & m,wektor & w,double d); friend void wyswM(macierz &m); void trojD(); void U(macierz & m); void D(macierz & m); void macierz::L(macierz & m); void Dminus1(); void fill(); macierz operator*(double liczba); macierz & macierz::operator=(macierz m); double operator()(int a,int b); }; macierz operator+(macierz & m1,macierz & m2); macierz operator-(macierz & m1,macierz & m2); macierz operator*(macierz & m1,macierz & m2); macierz operator++(macierz &m,int); wektor operator+(wektor &w1,wektor &w2); wektor operator*(macierz &m,wektor &w); class lepsza_macierz: private macierz{ int superkolumna; lepsza_macierz(int n,int m); public: using macierz:: tab; }; wektor::wektor(int n) { wier=n; tab=new double[wier]; for(int i=0;itab[i]=w.tab[i]; return *this; } wektor & wektor::operator=(double liczba) { for(int i=0;itab[i]=liczba; return *this; } macierz & macierz::operator=(macierz m) { for(int i=0;itab[i][j]=m.tab[i][j]; return *this; } void macierz::Dminus1() { for(int i=0;iwier;i++) *(*(tab+i)+i)=pow(*(*(tab+i)+i),-1); } void wektor::fill() { cout << "podaj wartosci wektora:\n"; for(int i=0;i> tab[i]; } void macierz::fill() { cout << "podaj wartosci macierzy:\n"; for(int i=0;i> tab[i][j]; } } macierz macierz::operator*(double liczba) { for(int i=0;i>(istream& kw,wektor &w) { for(int i=0;i> w.tab[i]; } return kw; } int main(int argc, char *argv[]) { int n; cout << "podaj ilosc niewiadomych:"; cin >> n; macierz A(n,n),L(n,n),D(n,n),U(n,n); wektor x(n),b(n),X(n); cin >> b; cout << (A); A++; cout << A; A.fill(); L.L(A); U.U(A); D.D(A); wyswM(D); wyswM(U); D.Dminus1(); wyswM(D); b=D*b; L=(L+U); wyswM(L); L=L*(-1); wyswM(L); wyswW(b); D=D*L; wyswM(D); wektor pomocniczy=X; for(int i=0;i<20;i++) { cout << "wektor X:\n"; X=D*pomocniczy; x=X+b; wyswW(X); pomocniczy=x; x=0; } wyswW(pomocniczy); system("PAUSE"); return EXIT_SUCCESS; }