Senin, 18 Oktober 2010

Praktikum ke-4

#include <cstdlib>
#include <iostream>
#define maks10

using namespace std;

class Array1D{
      friend ostream& operator<<(ostream&, const Array1D&);
      friend istream& operator>>(istream&, Array1D&);
public:
       Array1D();
       void cetak();
       void geser_kiri();
       void geser_kanan();
       void hapus_elemen();
       void urut();
private:
        char A[10];
};


//konstrukstor
Array1D::Array1D(){
                   for(int i=0;i<10;i++)
                   A[i]='O';
}

//methods yang sebetulnya tidak perlu ditulis

void Array1D::cetak(){
     for(int i=0;i<10;i++)
     cout<<A[i]<<" ";
}

//overloading fungsi cetak
ostream& operator<<(ostream& out, const Array1D& x){
         for(int i=0;i<10;i++)
         out<<x.A[i]<<" ";
         out<<endl;
         return out;
}



//overloading input
istream& operator>>(istream& in, Array1D& x){
        
         //modifikasi untuk operator overloading
         //memasukkan nilai pada masing2 indeks secara terurut
         for(int i=0;i<10;i++){
                 cout<<"masukkan nilai array ke-"<<i+1<<" : ";
                 in>>x.A[i];
                 }
                 
         /*  badan fungsi sebelum di modifikasi
         int posisi;
         cout<<"Mengisi array posisi ke : ";
         in>>posisi;
         if(posisi>0 && posisi<=5){
                     cout<<"Masukkan elemen array-nya ; ";
                     in>>x.A[posisi-1];
                     }
         else
         cout<<"Anda memasukkan posisi di luar range....!";*/
         return in;
}

//fungsi untuk menggeser semua nilai 1 indeks ke kanan
void Array1D::geser_kanan(){
     int n=10;
     int temp=A[n-1];
     for(int i=n-1;i>=0;i--)
        A[i+1]=A[i];
     A[0]=temp;
}

//fungsi untuk menggeser semua nilai 1 indeks ke kiri
void Array1D::geser_kiri(){
     int n=10;
     int temp=A[0];
     for(int i=0;i<n;i++)
        A[i]=A[i+1];
     A[n-1]=temp;
}

//menthods yang di tambahkan untuk menghapus nilai dari indeks tertentu
void Array1D::hapus_elemen(){
     int posisi;
     cout<<"\npilih indeks berapa yang akan di hapus :\n";
     cin>>posisi;
     if(posisi>0 && posisi<=10)
        A[posisi-1]='O';
     else cout<<"indeks hanya terdiri dari 1 - 10\n";
}

//main fingsi
int main(int argc, char *argv[])
{
    cout <<"\nIkhwanul Sadli (09018148)\n"<<endl;
    Array1D x;
    cout<<"Array masih kosong : "<<x; //pemanggilan overloading output
    cin>>x; //penggunaan overloading input
    cout<<"Isi Array saat ini : "<<x;
    x.geser_kiri();  //penggunaan fingsi
    cout<<"Isi Array setelah di geser kiri : "<<x;
    x.geser_kanan();
    cout<<"Isi Array setelah di geser kanan : "<<x;
    cout<<"Urutan elemen pada indeksnya saat ini : "<<x;
    x.hapus_elemen();
    cout<<"Setelah dihapus menjadi : "<<x;
   
    system("PAUSE");
    return EXIT_SUCCESS;
}

1 komentar: