hello semuanya, postingan ini akan membahas mengenai 'apa itu struct' dan contoh kasus yang menggunakan struct.
STRUCT
- struct punya sejumlah elemen yg disebut field
- setiap field bisa memiliki tipe data yg berbeda
Berikut ini perbedaan antara array dan struct :
array vs struct |
struct dapat dideklarasikan dengan 2 cara yaitu menggunakan 'typedef' atau tidak, seperti gambar dibawah ini:
struct declaration |
contoh deklarasi struct :
struct product {
int weight;
double price;
} apple[5], banana, melon;
dari struct diatas terlihat bahwa :
product merupakan nama tipe struct yang memiliki elemen weight, dan price.
ada 3 variabel yang memiliki field yang sama dengan product yaitu apple[5],banana,dan melon.
untuk menggunakan field caranya menggunakan penghubung '.' seperti : namavariabel.field
bagaimana cara pemberian nilai kepada variabel?
apple[0].weight = 10;
apple[0].price = 200000;
banana.weight=2;
banan.price=20000;
hal yang sama berlaku untuk variabel melon;
untuk mengoutputkannya, kita dapat melkukan hal yang sama saat memberikan nilai, seperti :
cout <<"Apple pertama memiliki berat :"<<apple[0].weight
<<" dan memiliki harga Rp. "<<apple[0].price<<endl;
Nah dari contoh diatas diketahui bahwa penggunaan struct ialah seperti memberikan atribut pada objek. Misal : ada objek Mahasiswa, mahasiswa memiliki atribut : nama, nomor mahasiswa, umur, tanggal lahir, dan atribut-atribut lainnya.
dari contoh objek mahasiswa kita dapat menuliskan dalam bentuk struct seperti :
struct mahasiswa{
string nama;
int umur;
string nomorMahasiswa;
string tanggalLahir;
};
mahasiswa mhs;
untuk mengakses field :
mhs.nama = "abcdef";
mhs.umur = 20;
mhs.nomorMahasiswa = "1234567890";
Jika terdiri dari lebih dari satu mahasiswa? apakah menggunakan nama variabel lain seperti :
mahasiswa mhs1,mhs2,mhs3,..,mhsN;
hal seperti itu tidak diperkenankan ya sobat :) jika kasusnya seperti itu maka sobat dapat menggunakan array seperti :
mahasiswa mhs[100];
Sudah paham mengenai struct ?
jika sudah mari lanjutkan untuk contoh penggunaan struct pada kasus pendataan karyawan dan menghitung gaji pokok,tunjangan anak dan total gaji. Untuk gambaran output yang aka ditampilkan dapat dilihat pada gambar berikut ini :
Contoh kasus pendataan karyawan |
Berikut programnya dalam C++ :
#include<iostream>
#include<iomanip>
using namespace std;
//mendefinisikan struct
struct karyawan{
string namaKaryawan;
char golongan;
int jmlAnak;
int gajiPokok;
int tunjanganAnak;
int totalGaji;
};
//deklarasi fungsi
int gajiPokok(char golongan);
int tunjanganAnak(int jumAnak);
void line();
int main(){
int jumlahData;
int totalJumAnak=0,totalTunjanganAnak=0,totalPengeluaranGaji=0;
cout<<"Jumlah Data : ";cin>>jumlahData;
struct karyawan dataKaryawan[jumlahData];
//input
for(int i=0;i<jumlahData;i++){
cout<<"Karyawan ke-"<<i+1<<endl;
cin.ignore();
cout<<"Nama Karyawan : ";getline(cin,dataKaryawan[i].namaKaryawan);
cout<<"Golongan : ";cin>>dataKaryawan[i].golongan;
cout<<"Jumlah Anak : ";cin>>dataKaryawan[i].jmlAnak;
dataKaryawan[i].golongan = toupper(dataKaryawan[i].golongan);
dataKaryawan[i].gajiPokok = gajiPokok(dataKaryawan[i].golongan);
dataKaryawan[i].tunjanganAnak = tunjanganAnak(dataKaryawan[i].jmlAnak);
dataKaryawan[i].totalGaji= dataKaryawan[i].gajiPokok + dataKaryawan[i].tunjanganAnak;
}
//output
cout<<setiosflags(ios::left);
cout<<setw(5)<<"No"<<setw(20)<<"Nama Karyawan"<<setw(5)<<"Gol"<<setw(20)<<"Gaji Pokok"<<setw(10)
<<"jml.Anak"<<setw(20)<<"Tunj.Anak"<<setw(20)<<"Total Gaji"<<endl;
line();
for(int i=0;i<jumlahData;i++){
cout<<setw(5)<<i+1<<setw(20)<<dataKaryawan[i].namaKaryawan<<setw(5)<<dataKaryawan[i].golongan<<setw(20)<<dataKaryawan[i].gajiPokok<<setw(10)
<<dataKaryawan[i].jmlAnak<<setw(20)<<dataKaryawan[i].tunjanganAnak<<setw(20)<<dataKaryawan[i].totalGaji<<endl;
totalJumAnak += dataKaryawan[i].jmlAnak;
totalTunjanganAnak += dataKaryawan[i].tunjanganAnak;
totalPengeluaranGaji += dataKaryawan[i].totalGaji;
}
line();
cout<<"Total Jumlah Anak = "<<totalJumAnak<<" Anak"<<endl;
cout<<"Total Tunj. Anak = Rp."<<totalTunjanganAnak<<endl;
cout<<"Total Pengeluaran Gaji = Rp."<<totalPengeluaranGaji;
}
int gajiPokok(char golongan){
if(golongan == 'A'){
return 600000;
}else if(golongan == 'B'){
return 800000;
}else if(golongan == 'C'){
return 1200000;
}
return 0;
}
int tunjanganAnak(int jumAnak){
if(jumAnak == 1 || jumAnak == 2){
return jumAnak*300000;
}else if(jumAnak>2) {
return 800000;
}
return 0;
}
void line(){
for(int i=0;i<98;i++){
cout<<"=";
}cout<<endl;
}
Hasil output :
Output data karyawan |
Setelah melihat contoh program diatas, penggunaan struct menjadi lebih mudah bukan? Apabila belum paham bisa ditanyakan melalui kolom komentar ya sobat.
Semoga bermanfaat. Terimakasih
No comments:
Post a Comment
Komentar yang bermutu Insyaallah akan mendapatkan berkah