Rujan 05, 2010, 08:58:57
News: Opet je uradjen upgrade foruma na zadnju verziju.  Pozdravlja vas poglavica sindikata.
 Str: [1]
Ispis
Autor Tema: rije?en zadatak treba samo obja?njenje ?  (Posjeta: 1065 puta)
Nina
Galaksija
*
Offline Offline

Postova: 6



Profil
« na: Siječanj 11, 2009, 06:24:22 »

Zadatak radi , samo mi trebaju komentari ?ta je ?ta i za ?to slu?i . Npr. ?ta je konvertor , za?to optere?enje i sl.

Kod:

#include <iostream>
using namespace std;
 #define MAX_REDOVA 50
 #define MAX_KOLONA 50
class Matrica {
     private:
             int red,kol;
             double** elem;
         
      public:
             void IspisMatrice();
           
             void def(int m,int n);
             void UpisMatrice();
             bool kvad();
             bool IstiRed(Matrica);
             bool UslovProizvoda(Matrica);
             Matrica T();
             Matrica Saberi(Matrica);
             Matrica Oduzmi(Matrica);
             Matrica PomnoziSkalar(double Skalar);
             Matrica Pomnozi(Matrica);
           
      };
   
                   
     
       bool Matrica :: IstiRed (Matrica Pomocna)   { 
           return (this->red!=Pomocna.red || this->kol!=Pomocna.kol);
           }
           bool Matrica::UslovProizvoda(Matrica Pomocna){
               return (this->kol==Pomocna.red);
           } 
      void Matrica::IspisMatrice(){
           for (int i=0;i<red;i++){
               for (int j=0;j<kol;j++)
                   cout<< " "<<this->  elem[i][j] ;
               cout<<endl;
          }
      }
      void Matrica::def(  int m,  int n){
      this->red=m;
      this->kol=n;
      elem=new double *[m];
  // rezervisanje memorije  za matricu dimenzija m*n
      for (int i=0;i<this->red;i++){
          elem[i]=new double [n];
               for (int j=0;j<this->kol;j++)
                   this->elem[i][j]=0;
              }
      }
      void Matrica::UpisMatrice(){
           for (int i=0;i<red;i++){
               for (int j=0;j<kol;j++){
                   cout<< " M["<<i<<"]["<<j<<"]=";
                   cin>>this->elem[i][j] ;   
          }
        }
      }
      bool Matrica::kvad(){
         return (this->red==this->kol );
         }
         
         Matrica Matrica::T(){
                 Matrica T;
                 T.def(kol,red);
              for (int i=0;i<red;i++)
                  for (int j=0;j<kol;j++)
              T.elem[j][i]=this->elem[i][j];
               
         return T;
         
}

 Matrica Matrica::Saberi(Matrica Pomocna){
                 Matrica Saberi;
                 Saberi.def(red,kol);
                 
          if (this->IstiRed(Pomocna)) {
          cout<<"Matrice se ne mogu sabrati jer nisu istog reda!"<<endl;
          return Saberi;
                 }
                  for (int i=0;i<red;i++)
                           for (int j=0;j<kol;j++)
               
               Saberi.elem[i][j]=this->elem[i][j]+Pomocna.elem[i][j];       
         return Saberi;
         
}

 Matrica Matrica::Oduzmi(Matrica Pomocna){
                 Matrica Oduzmi;
                 Oduzmi.def(red,kol);
                  if (this->IstiRed(Pomocna)) {
          cout<<"Matrice se ne mogu oduzeti jer nisu istog reda!"<<endl;
                 return Oduzmi;
                 }
              for (int i=0;i<red;i++)
                  for (int j=0;j<kol;j++)
                  Oduzmi.elem[i][j]=this->elem[i][j]-Pomocna.elem[i][j];
               
         return Oduzmi;
         
}
 Matrica Matrica::PomnoziSkalar(double Skalar){
                 Matrica PomnoziSkalar ;
                 PomnoziSkalar.def(red,kol);
              for (int i=0;i<red;i++)
                  for (int j=0;j<kol;j++)
                 PomnoziSkalar.elem[i][j]=Skalar*(this->elem[i][j]);
            return PomnoziSkalar;   
}
Matrica Matrica::Pomnozi(Matrica Pomocna){
 
                 Matrica Pomnozi;
                 Pomnozi.def(red,Pomocna.kol);
                     if (this->UslovProizvoda(Pomocna)) {
          cout<<"Matrice se ne mogu pomnoziti jer nije zadovoljen uslov proizvoda!"<<endl;
                 return Pomnozi;
                 }
                 
         
                   for (int i=0;i<this->red;i++)
                         for (int j=0;j<Pomocna.kol;j++)
                               for (int k=0;k<this->kol;k++)
                         
            Pomnozi.elem[i][j]=Pomnozi.elem[i][j] + this->elem[i][k]*Pomocna.elem[k][j];
         
         return Pomnozi;
         
}

      int main(){
         
          Matrica M,M1;
          M.def(2,3);
       
          M.IspisMatrice();
          M1.def(2,3);
         
          M.UpisMatrice();
          M.IspisMatrice();
          M1.UpisMatrice();
          if (M.kvad()) cout<<"Matrica je kvadratna!"<<endl;
      cout<<"Transponovana matrica je:"<<endl;
           Matrica Mt=M.T();
         // Mt=M.T();
          Mt.IspisMatrice() ;   
          cout<<"Druga matrica je:"<<endl;
          M1.IspisMatrice();
      cout<<"Zbir matrica je:"<<endl;
          Matrica Ms=M.Saberi(M1); 
          Ms.IspisMatrice(); 
         
      cout<<"Razlika matrica je:"<<endl;
          Matrica Mr=M.Oduzmi(M1);
          Mr.IspisMatrice();//operator dodjele za dinamicki kreiran objekat moramo preklopoiti
          cout<<"Mnozenje skalara sa matricom:"<<endl;
          Matrica Mps=M.PomnoziSkalar(5);
          Mps.IspisMatrice();
         
      cout<<"Proizvod matrica je:"<<endl;
          Matrica Mp=M.Pomnozi(M1);
          Mp.IspisMatrice();
       
       
          system ("pause");
          return 0;
          }
[code]
[/code]
Evidentirano
 Str: [1]
Ispis
Skoči na: