flag counter

Jumat, 29 Oktober 2010

Array Dinamis

contoh program yang mengunakan data member array dinamis
#include <cstdlib>
#include <iostream>
#include <conio.h>
//#include 'xcept.h'

using namespace std;
//template <class T>
class Array1D {
     
      friend ostream& operator<<(ostream&, const Array1D&);
      friend istream & operator >> (istream&, Array1D&);
     
public :
       void geser_kanan();
       Array1D ( int size= 0);
       Array1D ( const Array1D& v);
       ~Array1D (){delete [] element;}
       int& operator [] (int i) const;
       int Size() {return size;}
       Array1D & operator = (const Array1D& v);
       Array1D  operator + ()const;
       Array1D  operator + (const Array1D& v)const;
       Array1D  operator - ()const;
       Array1D  operator - (const Array1D& v) const;
       Array1D  operator * (const Array1D& v) const;
       Array1D & operator+=(const int& x);
     Array1D & ReSize(int sz);
      
private :
       int size ;
        int * element ;
};

//template <class T>
Array1D::Array1D(int sz)
{
 if ( sz < 0);
 size = sz;
 element = new int[sz];
}

//template <class T>
Array1D::Array1D(const Array1D& v)
{
 size = v.size;
 element =new int[size]; // get space
 for (int i=0; i<size; i++)// copy element
 element[i] = v.element[i];
}

//template<class T>
 int& Array1D::operator[](int i)const
{
   if(i<0||i>=size); //throw OutOfBounds();
   return element[i];
}
//template <class T>
 Array1D & Array1D::operator =(const Array1D& v)
 {
   if (this != &v){
            size= v.size;
            delete[] element;
            element = new int[size];
            for (int i=0; i< size; i++)
            element [i] = v.element[i];
            }
            return *this;
            }
           
 //template<class T>
 Array1D Array1D::operator +(const Array1D& v) const
 {
  if (size != v.size); //throw SizeMismatch();
  Array1D w(size);
  for(int i=0; i < size; i++)
  w.element[i] = element[i] + v.element [i];
  return w;
}

//template<class T>
Array1D Array1D::operator-(const Array1D& v) const
{
 if (size!= v.size); //throw SizeMistach();
 Array1D w(size);
 for (int i=0; i<size; i++)
 w.element[i] = element [i]- v.element [i];
 return w;
}

//template<class T>
Array1D Array1D::operator-() const
{
 Array1D w(size);
 for (int i=0; i <size; i++)
 w.element[i] = -element[i];
 return w;
}

//template<class T>
Array1D Array1D::operator*(const Array1D& v)const
{
 if (size != v.size);//throw SizeMistach();
 Array1D w(size);
 for(int i=0; i < size; i++)
 w.element[i] = element [i] * v.element[i];
 return w;
}

//tempalte<class T>
Array1D& Array1D::operator+=(const int& x)
{
 for (int i=0; i < size; i++)
 element [i] += x;
 return *this;
}

//tempalte<class T>
ostream& operator <<( ostream& out, const Array1D& x)
{
 for (int i=0; i<x.size; i++)
 out << x.element[i] << " ";
 return out;
}

//template<class T>
Array1D& Array1D::ReSize(int sz)
{
 if (sz < 0);//throw BadInitializer();
 delete [] element;
 size = sz;
 element = new int [size];
 return *this;
}
                       

int main(int argc, char *argv[])
{
    try {
        Array1D X(10),Y,Z;
        for (int i=0; i<10; i++)
        X[i] = i;
        cout <<"X[3]=" << X[3] << endl;
        cout <<"X is " << X << endl;
        Y=X;
        cout <<"Y is " << Y << endl;
        X +=2;
        cout <<"X incremented by 4 is " << X << endl;
        Z = (Y+X)*Y;
        cout << "(Y + X)* Y is" << Z << endl;
        cout << "-(Y + X)* y is" << -Z << endl;
        }
        catch (...) {
              cerr << "An execption has occurred" << endl;}
getch();

return EXIT_SUCCESS;


              }

   

Tidak ada komentar:

Posting Komentar