Aplikasi C Menggunakan Fungsi Rekursif

Kali ini saya membuat sebuah aplikasi sederhana yang terdiri dari variabel, operator, control flow, fungsi, array dan rekursif. Program yang saya buat ini adalah program Menghitung Denda Peminjaman Buku. Terdapat 3 variabel yang harus diinput, yaitu nama, kode buku dan lama pinjam. Variabel tersebut saya kelompokan ke dalam sebuah struktur. Data-data tersebut harus diisi sebanyak 5 kali, dengan menggunakan perulangan for. Denda yang saya tetapkan yakni Rp 1.000,-, maksimal peminjaman selama 14 hari. Jadi jika ada yang meminjam buku lebih dari 14 hari, maka akan dikenakan denda dengan lama pinjam dikurang 14 yang hasilnya dikalikan dengan Rp. 1.000,-. Untuk menghitung banyaknya denda, saya menggunakan fungsi rekursif dimana fungsi tersebut memanggil dirinya sendiri secara berulang kali hingga mendapatkan hasil yang valid.

Berikut source code nya:

#include
#include

int x=0;
int bayar(int i, int j); //deklarasi fungsi

struct buku { //deklarasi struktur
char nama[20];
int kode;
int telat;
int bayar;
};
int main(void)
{
struct buku pinjam[5]; //inisialisasi struktur untuk menyimpan data sebanyak 5
char nama[20];
int kode;
int lama;
int telat;
int denda = 1000;
int a, b, c, m;
printf(“Denda Peminjaman Buku\n”);
printf(“———————-\n”);
printf(“Ket.: Peminjaman maksimal 14 hari, denda = sisa x Rp. 1000\n”);
for(m=0; m<5; m++) //perulangan untuk input data sebanyak 5
{
printf(“\n%d.\tNama: “, m+1);
scanf(“%s”, &pinjam[m].nama);
printf(“\tKode buku: “);
scanf(“%d”, &pinjam[m].kode);
printf(“\tLama pinjam(hari): “);
scanf(“%d”, &x);
lama=x-14;
pinjam[m].telat=lama;
if(lama<=0)
{
printf(“\tDenda = Rp. %d \n”, pinjam[m].bayar=0);
}
else
printf(“\tDenda = Rp. %d \n\n”, pinjam[m].bayar=bayar(denda, lama));
}
printf(“No. \t Nama \t Kode Buku\tTelat(Hari)\tDenda (Rp)\n”);
printf(“—————————————————————–\n”);
for(m=0; m<5; m++){ //perulangan untuk menampilkan data sebanyak 5
printf(“%d \t “, m+1);
printf(“%s \t \t”, pinjam[m].nama);
printf(“%d \t \t “, pinjam[m].kode);
printf(“%d \t \t”, pinjam[m].telat);
printf(“%d \n”, pinjam[m].bayar);
}
system(“pause”);
return(0);
}
int bayar (int i, int j) //definisi besar fungsi
{
if (j==0)
return 0;
else
return i+bayar(i, j-1); //fungsi rekursif bayar() memanggil dirinya sendiri
}

Berikut flowchartnya:

Drawing1

 

 

Berikut video tutorialnya:

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s