[ plavooki @ 19.12.2005. 19:46 ] @
Moze li mi neko uraditi ovaj zadatak please: Razviti kalsu matrica sa nadogradjenim (overloading) operatorima + - = Znaci ono standardno unos matrice sa ovim redefinisanim operatorima. Hvala!! |
[ plavooki @ 19.12.2005. 19:46 ] @
[ Buffy @ 19.12.2005. 23:37 ] @
pogledaj temu:
http://www.elitesecurity.org/tema/92698 Tu sam dao primjer jedne ne potpune klase! [Ovu poruku je menjao Buffy dana 20.12.2005. u 00:41 GMT+1] [ Nina012 @ 23.10.2008. 09:41 ] @
Ovo je za one koji se već snalaze u klasama i potrebna je samo pomoć :
Code: class matrica { private: unsigned _sirina; // Sirina matrice unsigned _visina; // Visina matrice protected: void promeni_dimenzije(unsigned sirina, unsigned visina); // promena promenljivih sirina/visina public: #if defined BROJANJE static unsigned long broj_get_operacija; // staticke promenljive (zajednicke static unsigned long broj_set_operacija; // za sve instance klase matrice ) static unsigned long broj_sabiranja; // koje se koriste za vremensku static unsigned long broj_mnozenja; // analizu algoritma #endif matrica(unsigned _sirina, unsigned _visina); // podrazumevani konstruktor // apstraktne metode koje nece biti implementirane u ovoj klasi moraju biti navedene u svakoj // podklasi da bi klasa mogla biti instancirana kao objekat virtual T get(unsigned x, unsigned y) const = 0; // get/set - uzimanje/postavljanje virtual void set(unsigned x, unsigned y, T broj) = 0; // broja na koordinate x,y virtual unsigned size() const = 0; // size vraca realno zauzece memorije // koju dati objekat koristi 8 virtual void nule() = 0; // postavlja sve elemente na nulu // redimenzionise matricu (promena dimenzije, i alociranje novog sadrzaja) virtual void postaviNovuMatricu(unsigned sirina, unsigned visina) = 0; inline unsigned sirina() const { return _sirina; } // vraca dimenzije matrice inline unsigned visina() const { return _visina; } void randomN(T max=10, T min=0); // ispuna matrice slucajnim brojevima void napraviJedinicnu(); // pravi jedinicnu matricu void zameniKolone(unsigned k1, unsigned k2); // osnovne manipulacije sa void zameniRedove(unsigned r1, unsigned r2); // redovima i kolonama matrice void pomnoziIDodajKolonu(unsigned k1, T faktor, unsigned k2); void pomnoziKolonu(unsigned k, T faktor); void pomnoziIDodajRed(unsigned r1, T faktor, unsigned r2); void pomnoziRed(unsigned r, T faktor); void izvadiKolonu(unsigned k, matrica & b) const; // metode potrebne za kramerovo void zameniKolonu(unsigned k, const matrica & b); // pravilo T absSumaReda(unsigned r); // racunanje norme matrice T absSumaKolone(unsigned k); T normaRedova(); T normaKolona(); bool normaRedovaZaJacobi( T & norma ); bool normaKolonaZaJacobi( T & norma ); bool kvadratna() const; // vraca true ukoliko je matrica kvadratna bool gaussDoleNule(matrica * M=0); // familija funkcija za gausovu bool gaussGoreNule(matrica * M=0); // metodu eliminacija bool gaussDoleNulePivot(matrica * M=0, short * sgn=0); bool gaussGoreNulePivot(matrica * M=0); bool gaussDiag(matrica * M=0); bool gaussInverzna(matrica & A1); // A^-1 bool gaussResiSistem(matrica * b,matrica * x); // resava sistem T gaussDeterminanta(); // racuna determinantu void pripremiZaJacobi(matrica &b); // funkcije za jacobi-evu metodu iteracija void jacobiIteracija(matrica &b, matrica &x, vector<T> & maxRazlike, bool gausSaidel=false) const; ostream & ispisi(ostream & ostr, matrica * b=0) const ; // izlaz (tip matlab) ostream & ispisi1(ostream & ostr) const ; // izlaz (tip mathematica) friend ostream & operator << ( ostream & ostr , const matrica & M ); // ulaz (tip matlab) }; Copyright (C) 2001-2024 by www.elitesecurity.org. All rights reserved.
|