30 October 2010

Praktikum Struktur Data Minggu Ke-5 "posttest"

PROGRAM:


#include<cstdlib>
#include<iostream>
//#include 'xcept.h'

using namespace std;

//template 
class Array1D {
      friend ostream& operator<<(ostream&, const Array1D&);
      //friend istream & operator >> (istream&, Array1D&);

public :      
       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);
       void geser_kiri();
       void geser_kanan();

private :
       int size ;
        int * element ;
};    

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

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

//template
 int& Array1D::operator[](int i)const
{
   if(i<0||i>=size); //throw OutOfBounds();
   return element[i];
}

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

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

//template
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
Array1D& Array1D::operator+=(const int& x)
{
 for (int i=0; i < size; i++)
 element [i] += x;
 return *this;
}

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

void Array1D::geser_kanan()
{
     int n= 10;
int temp=element[n];
for(int i=n-1;i>=0; i--)
element[i+1]=element[i];
element[0]=temp;
}

void Array1D::geser_kiri()
{
     int n= 10;
     int temp= element[0];
     for(int i=0;i
     element[i]=element[i+1];
     element[n-1]= temp;
     }

//template
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;
              Z.geser_kiri();
              cout<<"isi Array seteleh digeser ke kiri;"<<
              Z.geser_kanan();
              cout<<"Isi Array setelah digeser ke kanan:"<<         
        }
        catch (...) {
              cerr << "An execption has occurred" << endl;}

              system("PAUSE");
              return EXIT_SUCCESS;
        }

OUTPUT:
Selamat mencobanya... :)

0 comments: