/////////////////////////////////////////////////////////////////////////////////////// // GONGU MIHAI gr 1051, an3 BILET 7 // // clasa matrice (pt operatii cu matrice) // // vezi enuntul in fisierul text atasat // /////////////////////////////////////////////////////////////////////////////////////// #include #include #include #include class matrice {private: //nr de linii si coloane int diml,dimc; //pointer la pointer //matricea se va aloca dinamic double **mat; public: //pentru generarea matricei nule zero(); //pentru generarea matricei unitate unu(); //constructor de initializare cu zero a tuturor elementelor matricei matrice(int nrl,int nrc); //constructor de copiere matrice(const matrice&); //constructor implicit matrice(); //constructor cu preluare de date din fisier matrice(char*); //destructor ~matrice(); int linii(){return diml;} int coloane(){return dimc;} //spraicarcarea operatorului + matrice &operator+(double a); matrice &operator+(matrice a); friend matrice operator+(double aa,matrice a); //supraincarcarea operatorului - matrice &operator-(double a); matrice &operator-(matrice a); friend matrice operator-(double aa,matrice a); //supraincarcarea operatorului * matrice &operator*(double a); matrice &operator*(matrice a); friend matrice operator*(double aa,matrice a); //supraincarcarea operatorului / matrice &operator/(double a); matrice &operator/(matrice a); friend matrice operator/(double aa,matrice a); //supraincarcarea operatorilor << si >> friend ostream& operator<<(ostream&,matrice); friend istream& operator>>(istream&,matrice&); //transpunere matrice &transp(); //inversare matrice &invers(); //supraincarcarea lui (double) pt calcularea determinatului operator double(); //rezolvarea matriceala a sistemelor de ecuatii liniare void sistem(); int* operator[](int i); int& operator[](int* ); }; matrice::matrice(int nrl,int nrc) {mat=new double*[nrl]; for(int i=0;i>(istream& intr, matrice& u) {int i,m,n,j; intr>>u.diml; intr>>u.dimc; for(i=0;i>u.mat[i][j]; return intr; } //*********************************** matrice &matrice::operator+(double a) { for(int i=0;i=n) { cod=1; vb=1; } }while(vb==0); //sfarsitul calculului inversei if(cod!=1) {cout<<"eroare"; getch(); exit(1);} for(i=0;i=n) {t=delta; vb=1; } else t=0; }while(vb==0); return t; //se termina calculul determinantului } //**************************************** matrice &matrice::operator/(matrice a) {/*int m,n; m=a.diml; n=a.dimc; matrice p(m,n); p=a.invers(); mat=mat*p; return this*; */ return *this;} //**************************************** //************************************************************************* //************************************************************************* void meniu_p() {clrscr(); cout<<"****************MENIU***************"<>opt; switch(opt) {/*case 0:clrscr(); matrice a; getch(); break;*/ case '1': {clrscr(); matrice a; cout<<"Matricea obiect curent este :"<>opt1; switch(opt1) {case '1': clrscr(); matrice i; cout<<"Introduceti valoarea reala pe care doriti sa o adunati: "<>v; cout<>v; cout<<"matricea rezultat este:"<>v; cout<<"matricea rezultat este:"<>v; cout<<"matricea rezultat este:"<>opt2; switch(opt2) {case '1': { clrscr(); cout<<"prima matrice:"<