Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem sa klasom !

[es] :: C/C++ programiranje :: C/C++ za početnike :: Problem sa klasom !

[ Pregleda: 1713 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Nina012
Nina Modrić
studentica
BanjaLuka

Član broj: 198499
Poruke: 9
*.telekabel.ba.



Profil

icon Problem sa klasom !14.11.2008. u 11:08 - pre 187 meseci
Imam zadatak da radim sa klasom matrica , i sve je to ok , samo što meni nije problem napisati program u kojem ću raditi razne operacije sa matricama , ali ne znam to strpati u klasu . Definisala sam ja neke f-je u klasi , ali poenta je da ih uopšte ne koristim u glavnom programu , a trebala bi ih pozivati ????
Stvarno mi je ovo nejasno .

Evo moj kod , ali on vrlo dobro radi i bez ovihf-ja u klasi - a valjda bi trebalo da i one nešto znače ! Daj pomagajte !

kod :
Code:

#include <iostream>
#include <vector>
using namespace std;
class matrix {
      int red , kol ;
      double *elem ;
      public :
             void ucitaj (int , int );
             void unos (double , double);
             void ispisi ( double , double );
             void kvad ( void);
             int mred() const {return red ;};
             int mkol() const {return kol;};
             };
             void matrix ::ucitaj ( int r , int k ){
                  red=r;
                  kol=k;
                  }
             void matrix :: unos ( double i , double j) {
                  *elem=i;
                  *elem=j;
                    vector<vector<double> > a(red, vector<double>(kol));
                    }
             void matrix :: ispisi ( double i , double j ) {
                  vector<vector<double> > a(red, vector<double>(kol));
                  }
             void matrix :: kvad ( void ) {
                    
                    }   
                  
                  int main(){
                      matrix a1,b1,c1;
                      int r,k;
                         cout << " Unesi red matrice: " ;
                         cin >> r ;
                         cout << " Unesi kolonu matrice " ;
                         cin >> k ;
                         {
                            if  (r == k ) {cout << "matrica je kvadratna " ;}
                            else {cout << "Matrica nije kvadratna" ;};
                            cout << endl ;
                              cout << "Unesi clanove matrice :" << endl ;
                              };
                         vector<vector<double> > a(r, vector<double>(k));
                         for (int i=0; i<r; i++)
                           for (int j=0; j<k; j++)
                        {
                          cout << "[" << i+1 << "," << j+1 << "]: ";
                           cin >> a[i][j];
                           a1.ucitaj(i,j);
                            
                       }
                       cout << endl ;
                       cout << " matrica a je: " <<'\n';
                        cout << endl ;
                        
                       for (int i=0; i<i+1; i++)
                       {
                           for (int j=0; j<k; j++)
                            
                           {
                              cout << a[i][j]; 
                           }
                              cout << endl ; 
                               }
                               
                       system ("pause");
                         return 0;
                         };


i da , zašto mi se na kraju kada program odradi svoje ne pojavi ono : press any ..... ?

[Ovu poruku je menjao X Files dana 14.11.2008. u 12:45 GMT+1]
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Problem sa klasom !14.11.2008. u 11:50 - pre 187 meseci
1. Sve što je vezano za domaće zadatke postavlja se u forumima za početnike
2. Kod se piše izmedju tagova za kod [code] ovde kod [/code] da bi bio čitljiviji i ignorisao standardni ITALIC tag.
3. "Press any key... " se postiže sa:
Code:

#include <stdio.h>
int main(void)
{
   // ...
   system("PAUSE");
   return 0;
}

ili:
Code:

#include <iostream>
using namespace std;
int main()
{
   // ...
   cin.ignore(); // <--- ovo ponekad i dva puta za redom
   return 0;
}
 
Odgovor na temu

Nina012
Nina Modrić
studentica
BanjaLuka

Član broj: 198499
Poruke: 9
*.telekabel.ba.



Profil

icon Re: Problem sa klasom !17.11.2008. u 08:57 - pre 187 meseci
Oba načina sam probala , pa ipak još ne javlja poruku "press any .... "!
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Problem sa klasom !17.11.2008. u 09:04 - pre 187 meseci
Da li ti je return 0; iza system("PAUSE"), odnosno cin.ignore(); ?

A probaj i sledeće:

Za prvi slučaj:
// ...
fflush( stdin );
system("PAUSE")
// ...

...a za drugi:
// ...
cin.ignore().get();
// ...
 
Odgovor na temu

Nina012
Nina Modrić
studentica
BanjaLuka

Član broj: 198499
Poruke: 9
*.telekabel.ba.



Profil

icon Re: Problem sa klasom !17.11.2008. u 13:44 - pre 187 meseci
Neobično , ali ne , ne može ni na taj način .
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Problem sa klasom !17.11.2008. u 14:00 - pre 187 meseci
Koji kompajler/okruzenje koristis?
Pokazi ceo kod.
 
Odgovor na temu

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 900
*.dynamic.sbb.rs.



+7 Profil

icon Re: Problem sa klasom !17.11.2008. u 23:47 - pre 187 meseci
X Files ti je lepo objasnio kako se pauzira progam u slucaju da radi bez greske.
Medjutim ovaj tvoj kod iz prve poruke pravi runtime error i zato se program i ne zavrsava kako bi trebalo (i gde bi trebalo).
Zbog ove linije u main funkciji
Code:

for (int i=0; i<i+1; i++)

u kojoj je uslov postavljen tako da se u petlji pristupa nepostojecim elementima niza dolazi do greske i program se tu prekida.
Ispod imas ispravljen kod ... ispisuje Press any key to continue
poz
Code:

#include <iostream>
#include <vector>
using namespace std;

class matrix
{
    int red , kol ;
    double *elem ;

public :
    void ucitaj (int , int );
    void unos (double , double);
    void ispisi ( double , double );
    void kvad ( void);
    int mred() const
    {
        return red ;
    }
    int mkol() const
    {
        return kol;
    }
};

void matrix ::ucitaj ( int r , int k )
{
    red=r;
    kol=k;
}

void matrix :: unos ( double i , double j)
{
    *elem=i;
    *elem=j;
    vector<vector<double> > a(red, vector<double>(kol));
}

void matrix :: ispisi ( double i , double j )
{
    vector<vector<double> > a(red, vector<double>(kol));
}

void matrix :: kvad ( void )
{}

int main()
{
    matrix a1,b1,c1;
    int r,k;

    cout << " Unesi red matrice: " ;
    cin >> r ;
    cout << " Unesi kolonu matrice " ;
    cin >> k ;

    if  (r == k )
        cout << "Matrica je kvadratna " << endl;
    else
        cout << "Matrica nije kvadratna" << endl;

    cout << "Unesi clanove matrice :" << endl ;

    vector<vector<double> > a(r, vector<double>(k));

    for (int i = 0; i < r; i++)
        for (int j = 0; j < k; j++)
        {
            cout << "[" << i+1 << "," << j+1 << "]: ";
            cin >> a[i][j];
            a1.ucitaj(i,j);
        }

    cout << endl <<"Matrica a je: " << endl;

    for (int i = 0; i < r; i++)
        for (int j = 0; j < k; j++)
            cout << a[i][j] << endl;

    system ("pause");
    return 0;
}

 
Odgovor na temu

Nina012
Nina Modrić
studentica
BanjaLuka

Član broj: 198499
Poruke: 9
*.telekabel.ba.



Profil

icon Re: Problem sa klasom !19.11.2008. u 18:07 - pre 187 meseci
Hvala !
 
Odgovor na temu

Nina012
Nina Modrić
studentica
BanjaLuka

Član broj: 198499
Poruke: 9
*.telekabel.ba.



Profil

icon Re: Problem sa klasom !11.01.2009. u 21:32 - pre 185 meseci
Evo zadatak u potpunosti radi , sada se od mene traži da komentarišem zadatak , naglasim konstruktore i destruktore ( hajd to ok ) , ali objasniti zašto - ma ne znam , skontala sam da moraju biti tu . Opterećivanje ?


Code:

#include <iostream>
using namespace std;
 #define MAX_REDOVA 50
 #define MAX_KOLONA 50
class Matrica {                                                           // definisanje klase matrica
     private:                                                               // privatni članovi klase
             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;
          }


[Ovu poruku je menjao X Files dana 12.01.2009. u 07:34 GMT+1]
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Problem sa klasom !

[ Pregleda: 1713 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.