Arsip
postest praktikum struktur data-04
>> Implementasi kelas array statis <<
listing program sebelum di modifikasi :
#include
#include
#define maks 5
using namespace std;
class Array1D{
friend ostream& operator<>(istream&, Array1D&);
public:
Array1D();
void cetak();
void geser_kiri();
void geser_kanan();
private:
char A[maks];
};
Array1D::Array1D(){
for(int i=0; i<maks; i++)
A[i]=’0′;
}
void Array1D::cetak(){
for(int i=0; i<maks; i++)
cout<<A[i]<<” “;
}
ostream& operator<<(ostream& out, const Array1D& X){
for(int i=0; i<maks; i++)
cout<< X.A[i];
cout<>(istream& in, Array1D& X){
int posisi;
cout<<“Mengisi array pada posisi ke : “;
for(int i=0; i>posisi;
if(posisi > 0 && posisi <= maks){
cout<<“Masukkan element array-nya : “;
for(int i=0; i>X.A[posisi-1];
}
else
cout<=0; i–)
A[i+1] = A[i];
A[0] = temp;
}
void Array1D::geser_kiri(){
int n = maks;
int temp = A[0];
for(int i=0; i<n; i++)
A[i] = A[i+1];
A[n -1]= temp;
}
main(){
Array1D X;
cout << “Array masih kosong : ” <> X;
cout << “Isi Array saat ini : ” << X;
X.geser_kiri();
cout << “Isi Array setelah digeser ke kiri : ” <<X;
X.geser_kanan();
cout << “Isi Array setelah digeser ke kanan : ” <<X;
system(“PAUSE”);
return EXIT_SUCCESS;
}
listing program yang sudah di modifikasi:
#include
#include
#define maks5
using namespace std;
class Array1D{
friend ostream& operator<>(istream&, Array1D&);
public:
Array1D();
void cetak();
void geser_kiri();
void geser_kanan();
void hapus_elemen();
private:
char A[5];
};
//konstrukstor
Array1D::Array1D(){
for(int i=0;i<5;i++)
A[i]=’O’;
}
//methods yang sebetulnya tidak perlu ditulis
//jika sudah ada overloading cout<<
void Array1D::cetak(){
for(int i=0;i<5;i++)
cout<<A[i]<<” “;
}
//overloading fungsi cetak
ostream& operator<<(ostream& out, const Array1D& x){
for(int i=0;i<5;i++)
out<<x.A[i]<<” “;
out<>(istream& in, Array1D& x){
//modifikasi untuk operator overloading
//memasukkan nilai pada masing2 indeks secara terurut
for(int i=0;i<5;i++){
cout<<“masukkan nilai array ke-“<<i+1<>x.A[i];
}
/* badan fungsi sebelum di modifikasi
int posisi;
cout<>posisi;
if(posisi>0 && posisi<=5){
cout<>x.A[posisi-1];
}
else
cout<=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=5;
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<>posisi;
if(posisi>0 && posisi<=5)
A[posisi-1]=’O’;
else cout<<“indeks hanya terdiri dari 1 – 5\n”;
}
//main fingsi
int main(int argc, char *argv[])
{
Array1D x;
cout<<“Array masih kosong : “<>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;
}
}
:: Semoga ini bisa bermanfaat ::
pretest praktikum struktur data -04
1. Modifikasikanlah operator overloading input >> agar saat memasukan elemen yang baru, elemen array dalam keadaan terurut.
penyelesaiannya :
//overloading input
istream& operator>>(istream& in, Array1D& x){
//modifikasi untuk operator overloading
//memasukkan nilai pada masing2 indeks secara terurut
for(int i=0;i<5;i++){
cout<<“masukkan nilai array ke-“<<i+1<>x.A[i];
}
/* badan fungsi sebelum di modifikasi
int posisi;
cout<>posisi;
if(posisi>0 && posisi<=5){
cout<>x.A[posisi-1];
}
else
cout<<“Anda memasukkan posisi di luar range….!”;*/
return in;
}
2. Buatlah method hapus elemen tertentu dari array. Namun sebelum di hapus,user di tanya lebih dulu elemen mana yang akan di hapus dengan menampilkan keadaan array pada saat itu !
Penyelesaiannya :
//methods yang di tambahkan untuk menghapus nilai dari indeks tertentu
void Array1D::hapus_elemen(){
int posisi;
cout<>posisi;
if(posisi>0 && posisi<=5)
A[posisi-1]=’O’;
else cout<<“indeks hanya terdiri dari 1 – 5\n”;
}
}
postest praktikum-2 struktur data
#include <iostream.h>
//template<class T>
class Kompleks{
friend class Operasi;
friend ostream& operator<<(ostream&, const Kompleks&);
friend istream& operator>>(istream&, Kompleks&);
public:
Kompleks(int s=0, int t=0):a(s),b(t){}
void cetak();
Kompleks operator-();
Kompleks operator-(const Kompleks&);
Kompleks operator+(const Kompleks&);
Kompleks operator*(const Kompleks&);
private:
int a;
int b;
};
//template<class T>
void Kompleks::cetak(){
if(b>0)cout<<“BILANGAN KOMPLEKS:”<<a<<“+”<<b<<“i”;
else cout<<“BILANGAN KOMPLEKS:”<<a<<b<<“i”;
cout<<endl;
}
//template<class T>
Kompleks Kompleks::operator-(){
Kompleks x;
x.a=a;
x.b=-b;
return x;
}
//template<classT>
Kompleks Kompleks::operator-(const Kompleks& m){
Kompleks x;
x.a=a-m.a;
x.b=b-m.b;
return x;
}
//template<class T>
Kompleks Kompleks::operator+(const Kompleks& m){
Kompleks x;
x.a=a+m.a;
x.b=b+m.b;
return x;
}
Kompleks Kompleks::operator*(const Kompleks& m){
Kompleks x;
x.a=a*m.a;
x.b=b*m.b;
return x;
}
//template<class T>
ostream& operator<<(ostream& out, const Kompleks& x){
if(x.b==0) out<<‘[‘<<x.a<<‘]’;
else if(x.a==0 && x.b==1)out<<‘[‘<<“i”<<‘]’;
else if(x.a==0 && x.b==-1)out<<‘[‘<<“-i”<<‘]’;
else if(x.a==0 && x.b>1)out<<‘[‘<<x.b<<“i”<<‘]’;
else if(x.a==0 && x.b<-1)out<<‘[‘<<x.b<<“i”<<‘]’;
else if(x.b==1)out<<‘[‘<<x.a<<“+”<<“i”<<‘]’;
else if(x.b>0)out<<‘[‘<<x.a<<“+”<<x.b<<“i”<<‘]’;
else if(x.b==-1)out<<‘[‘<<x.a<<“-i”<<‘]’;
else out<<‘[‘<<x.a<<x.b<<“i”<<‘]’;
return out;
}
//template <class T>
istream& operator>>(istream& in, Kompleks&x){
cout<<“MASUKAN BAGIAN REAL : “;
in>>x.a;
cout<<“MASUKAN BAGIAN IMAJINER : “;
in>>x.b;
return in;
}
//template <class T>
class Operasi{
public :
Kompleks jumlah(const Kompleks&,const Kompleks&);
Kompleks kali(const Kompleks&,const Kompleks&);
Kompleks kurang(const Kompleks&,const Kompleks&);
};
//template <class T>
Kompleks Operasi::jumlah(const Kompleks&m, const Kompleks& n){
Kompleks temp;
temp.a=m.a+n.a;
temp.b=m.b+n.b;
return temp;
}
//template <class T>
Kompleks Operasi::kurang(const Kompleks&m, const Kompleks& n){
Kompleks temp;
temp.a=m.a-n.a;
temp.b=m.b-n.b;
return temp;
}
//template <class T>
Kompleks Operasi::kali(const Kompleks&m, const Kompleks& n)
{
Kompleks temp;
temp.a=(m.a*n.a)-(m.b*n.b);
temp.b=(m.a*n.b)-(m.b*n.a);
return temp;
}
int main (){
Kompleks x(2,3),y(4,-4),t;
Operasi z;
cout<<“\nMENGGUNAKAN CETAK():\n”;
x.cetak();
cout<<“\nMENGGUNAKAN OVERLOADING :\n”<<x;
cout<<“\nKonjugat :”<<-x<<endl;
y.cetak();
cout<<“\nPENJUMLAHAN MENGGUNAKAN METHODS :\n”;
t=z.jumlah(x,y);
t.cetak();
cout<<“\nPENJUMLAHAN MENGGUNAKAN OPERATOR:\n”;
t=x+y;
cout<<x<<“+”<<y<<“=”<<t;
cout<<“\nPERKALIAN MENGGUNAKAN METHODS:\n”;
t=z.kali(x,y);
t.cetak();
cout<<“\nPERKALIAN MENGGUNAKAN OPERATOR:\n”;
t=x*y;
cout<<x<<“*”<<y<<“=”<<t;
t=x-y;
cout<<“\n”<<x<<“-“<<y<<“=”<<t<<endl;
cout<<endl;
Kompleks n;
cin>>n;
cout<<n;
return 0;
}