Jumat, 12 Oktober 2012

refleksi Kuliah Struktur Data minggu ke-3

selamat pagiii,, walau nulisnya malam,tp kan kuliahnya pagi,, :)
ini refleksi kuliah struktur data minggu ke 3, membahas tentang Array Statis dan Dinamis. 

Array statis itu tidak dapat diubah lagi banyaknya tempat penyimpanan, array statis merupakan pointer.
sedangkan Array dinamis  bisa  mengubah banyaknya elemen yang dapat disimpan, dan dapat mengembangkan array dinamis dengan menggunakan pointer.

skenarionya ada pada http://tif.uad.ac.id/new_forum/index.php?topic=1325.0 

salah satu program yg kami coba seperti ini
#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;
        }




Tidak ada komentar:

Posting Komentar