Thursday, August 5, 2010

Fungsi Faktorial Iteratif

Dalam matematika, faktorial dari bilangan asli n adalah hasil perkalian antara bilangan bulat positif yang kurang dari atau sama dengan n. Faktorial ditulis sebagai n! dan disebut n faktorial. Sebagai contoh, 7! adalah bernilai 7×6×5×4×3×2×1 = 5040. Sedang di bawah ini adalah program dengan bahasa C untuk mencari nilai faktorial dari suatu bilangan dengan fungsi iteratif:

#include <stdio.h>
#include <conio.h>

/* prototype fungsi factorial() */
long int faktorial(int N);

void main()
{
int N;
long int fak;
printf("Berapa factorial ? "); scanf("%i",&N);
/* pemanggilan fungsi factorial() */
fak = faktorial(N);
printf("%i factorial = %ld\n", N, fak);
getch();
}
/* definisi fungsi factorial */
long int faktorial(int N)
{
int I;
long int F = 1;
if(N<=0)
return(0);
for(I=2; I<=N; I++)
F = F * I;
return(F);
}

Read more...

Mencari FPB dengan Fungsi Rekursif

pada matematika, FPB ( Faktor persekutuan terbesar ) adalah faktor pembagi yang sama antara dua bilangan dengan nilai terbesar. Nilai FPB dari dua buah bilangan dapat dicari dengan fungsi rekursi. Pada program ini saya melewatkan parameter ke fungsi dengan call by value. Berikut adalah programnya:

#include <stdio.h>
#include <conio.h>
#include <math.h>
int fpb(int x,int y)
{
int hasil,sisabagi;
if(y<=x && x%y==0)
{
return(y);
}
else if(x<y)
{
hasil=fpb(y,x);
return(hasil);
}
else
sisabagi=x%y;
hasil=fpb(y,sisabagi);
return(hasil);
}

main()
{
int hasil,m,n;
printf("Masukkan bilangan pertama :");
scanf("%d",&m);
printf("Masukkan bilangan kedua :");
scanf("%d",&n);
hasil=fpb(m,n);
printf("\nFPB dari kedua angka tersebut adalah %d",hasil);
getch ();
}

Read more...

Fungsi Rekursif

Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri, baik secara langsung maupun tidak langsung. Pemanggilan fungsi rekursif secara langsung berarti dalam fungsi tersebut terdapat perintah untuk memanggil dirinya sendiri sedangkan secara tidak langsung berarti fungsi rekursif memanggil 1 atau lebih fungsi lain sebelum memanggil dirinya sendiri.

Fungsi Rekursif akan terus berjalan sampai kondisi berhenti terpenuhi, oleh karena itu dalam sebuah fungsi rekursif perlu terdapat 2 blok penting, yaitu blok yang menjadi titik berhenti dari sebuah proses rekursi dan blok yang memanggil dirinya sendiri. Fungsi rekursif tidak selalu lebih jelek daripada iteratif. Ada kalanya sebuah fungsi rekursif justru mempermudah penyelesaian masalah yang ditemui pada kasus iteratif (pengulangan).

Meskipun penulisan dengan fungsi rekursif lebih singkat dari fungsi iteratif, tapi fungsi rekursif memiliki kelemahan, yaitu memerlukan memori yang lebih banyak, karena perlu tambahan untuk ‘Activation Record Stack’. Dengan demikian waktu proses lebih lama, karena perlu menjejaki setiap pemanggilan rekursif melalui ‘Activation Record’. Karena setiap pemanggilan fungsi, register dan memory harus di push ke stack maka setelah selesai pemanggilan perlu diadakannya pop stack. untuk mengembalikan memory dan register kembali ke keadaan awal, ini sering disebut sebagai overhead.

Fungsi rekursif sebaiknya digunakan pada saat penyelesaian sulit diselesaikan secara iteratif, dan juga apabila efisiensi secara rekursif sudah memadai.Perlu diperhatikan juga bahwa pemborosan (Redundancy) dapat terjadi dalam
penyelesaian masalah secara rekursif.

Read more...

Wednesday, August 4, 2010

Input dan Cetak Structure

Structure mirip dengan array, hanya saja didalam structure bisa terdapat lebih dari satu jenis type data. Apabila pada array satu index untuk satu data, pada structure satu index bisa untuk beberapa data sesuai dengan keinginan kita. Dengan structure kita seperti membuat tipe data kita sendiri. Berikut ini adalah program untuk menginput dan mencetak structure.

#include <stdio.h>
#include <conio.h>
#include <iostream.h>
/*deklarasi structure sebelum fungsi main*/
struct databuku
{
char kodebuku[10];
char namabuku[50];
int tahunterbit;
char pengarang[50];
int harga;
}buku[100];

/*data buku menjadi tipe data sedangkan buku menjadi nama variable. Pada hal ini buku adalah array yang berisi structure*/
void main()
{
int i,x,jumlahbuku;
printf("Jumlah buku: ");
scanf("%d",&jumlahbuku);

/*input data structure*/
for(i=0;i<jumlahbuku;i++)
{
printf("\nKode buku : ");
/*fungsi cin.getline untuk menginput dalam satu baris, maximal karakter adalah yang sesuai dengan yang telah ditentukan (pada perintah ini batasnya 20 karakter)*/
cin.getline(buku[i].kodebuku,20);
printf("Nama buku : ");
cin.getline(buku[i].namabuku,30);
printf("Tahun terbit: ");
scanf("%d",&buku[i].tahunterbit);
printf("Pengarang : ");
cin.getline(buku[i].pengarang,50);
printf("Harga : ");
scanf("%d",&buku[i].harga);
}

/*cetak data structure*/
clrscr();
printf("\nBuku anda:");
for(x=0;x<jumlahbuku;x++)
{
printf("\nBuku ke-%d\n",x+1);
printf("\nKode buku : ");printf("%s",buku[x].kodebuku);
printf("\nNama buku : ");printf("%s",buku[x].namabuku);
printf("\nTahun terbit: %d",buku[x].tahunterbit);
printf("\nPengarang : ");printf("%s",buku[x].pengarang);
printf("\nHarga buku : %d",buku[x].harga);
}
getch();
}

Read more...

Tuesday, August 3, 2010

Operasi Pada Persegi Dengan C++

Berikut ini saya membuat aplikasi untuk mencari elemen-elemen pada bangun persegi dengan menggunakan bahasa C++.

#include <stdio.h>
#include <conio.h>
void main()
{
float panjang,lebar,luas,keliling;
int ulangi;
do
{
clrscr();
printf("Operasi pada persegi");
printf("\n====================");
printf("\nMasukan elemen dari persegi");
printf("\nBila tidak diketahui, masukan angka 0");
printf("\nPanjang = ");scanf("%f",&panjang);
printf("\nLebar = ");scanf("%f",&lebar);
printf("\nLuas = ");scanf("%f",&luas);
printf("\nKeliling = ");scanf("%f",&keliling);
if (panjang!=0 && lebar!=0)
{
luas=panjang*lebar;
keliling=2*(panjang+lebar);
}
else if(luas!=0 && lebar!=0)
{
panjang=luas/lebar;
keliling=2*(panjang+lebar);
}
else if(luas!=0 && panjang!=0)
{
lebar=luas/panjang;
keliling=2*(panjang+lebar);
}
else if(keliling!=0 && lebar!=0)
{
panjang=(keliling/2)-lebar;
luas=panjang*lebar;
}
else if(keliling!=0 && panjang!=0)
{lebar=(keliling/2)-panjang;
luas=panjang*lebar;
}
else
{
printf("Maaf, informasi tidak mencukupi.");
}
clrscr();
printf("\nPanjang = %f",panjang);
printf("\nLebar = %f",lebar);
printf("\nLuas = %f",luas);
printf("\nKeliling = %f",keliling);
printf("\nUlangi operasi?");
printf("\n1.ya");
printf("\n2.tidak\n");
printf("(Tekan nomor pilihan lalu enter) ");
scanf("%d",&ulangi);
}while(ulangi==1);
}

Kalo ingin download aplikasinya, klik disini.

Read more...

Followers

followers

  © Blogger templates ProBlogger Template by Ourblogtemplates.com 2008

Back to TOP