Showing posts with label Main function (programming). Show all posts
Showing posts with label Main function (programming). Show all posts

Wednesday, April 13, 2011

Mencari Nilai Maksimum/Minimum dengan Bahasa C

 

Program untuk mencari nilai maksimu/minimum ini merupakan kombinasi dari penggunaan array dan fungsi.

Bagan alur program yang akan dibuat ditampilkan pada gambar 1 dan gambar 2.

Pencarian nilai maksimum

Pada prinsipnya alur dari pencarian nilai maksimum adalah sebagai berikut:

  1. Dideklarasikan sebuah variabel bernama maks.

  2. Variabel maks tersebut diisi dengan data pertama dari kumpulan data.

  3. Program melakukan iterasi dengan looping for menuju ke data kedua, ketiga, dan seterusnya hingga data terakhir.

  4. Setiap kali iterasi, data dibandingkan dengan nilai data variabel maks. Jika data pada langkah iterasi tersebut nilainya lebih besar daripada data variabel maks, maka data tersebut dimasukkan ke variabel maks menggantikan data sebelumnya.


Program mencari nilai maksimum diberikan pada listing 1.






Listing 1. Mencari nilai maksimum

#include <stdio.h>

#define N 20

float maks();

int i;

main()

{

float nmaks, bil[N];

int jml;

clrscr();

printf("Program mencari nilai maksimum \n\n");

// input jumlah bilangan

printf("Jumlah bilangan (maks 20) : ");

scanf("%d",&jml);

printf("\n");

// input data

for (i=0;i<jml;i++)

{

printf("Bilangan ke %d : ",i+1);

scanf("%f",&bil[i]);

}

// mencari nilai maksimum

nmaks = maks(bil,jml);

// mencetak nilai maksimum

printf("Nilai maksimum adalah : %f",nmaks);

}

// fungsi menentukan nilai maksimum

float maks(X,k);

float X[];

int k;

{

float maksimum = X[0];

for (i=0;i<k;i++)

{

if (X[i] > maksimum)

{

maksimum = X[i];

}

}

return maksimum;

}

Jika program tersebut dijalankan, salah satu kemungkinan hasilnya adalah sebagai berikut:

Program mencari nilai maksimum

Jumlah bilangan (maks 20) : 5

Bilangan ke 1 : 12

Bilangan ke 2 : 65

Bilangan ke 3 : 32

Bilangan ke 4 : 73

Bilangan ke 5 : 49

Nilai maksimum adalah : 73.000000

Pencarian nilai minimum

Pada prinsipnya alur dari pencarian nilai minimum sama dengan pencarian nilai maksimum, hanya ada sedikit perbedaan pada pembandingan nilai variabel. Alurnya adalah sebagai berikut:

  1. Dideklarasikan sebuah variabel bernama min.

  2. Variabel min tersebut diisi dengan data pertama dari kumpulan data.

  3. Program melakukan iterasi dengan looping for menuju ke data kedua, ketiga, dan seterusnya hingga data terakhir.

  4. Setiap kali iterasi, data dibandingkan dengan nilai data variabel min. Jika data pada langkah iterasi tersebut nilainya lebih kecil daripada data variabel min, maka data tersebut dimasukkan ke variabel min menggantikan data sebelumnya.


Program mencari nilai minimum diberikan pada listing 2.






Listing 2. Mencari nilai minimum

#include <stdio.h>

#define N 20

float min();

int i;

main()

{

float nmin, bil[N];

int jml;

clrscr();

printf("Program mencari nilai minimum \n\n");

// input jumlah bilangan

printf("Jumlah bilangan (maks 20) : ");

scanf("%d",&jml);

printf("\n");

// input data

for (i=0;i<jml;i++)

{

printf("Bilangan ke %d : ",i+1);

scanf("%f",&bil[i]);

}

// mencari nilai minimum

nmin = min(bil,jml);

// mencetak nilai minimum

printf("Nilai minimum adalah : %f",nmin);

}

// fungsi menentukan nilai minimum

float min(X,k)

float X[];

int k;

{

float minimum = X[0];

for (i=0;i<k;i++)

{

if (X[i] < minimum)

{

minimum = X[i];

}

}

return minimum;

}

Salah satu kemungkinan hasil apabila program tersebut dijalankan adalah sebagai berikut:

Program mencari nilai minimum

Jumlah bilangan (maks 20) : 5

Bilangan ke 1 : 12

Bilangan ke 2 : 65

Bilangan ke 3 : 32

Bilangan ke 4 : 73

Bilangan ke 5 : 49

Nilai minimum adalah : 12.000000

Nah, sebagai latihan, Anda bisa menggabungkan kedua program tersebut menjadi satu program dengan misalnya ditambah suatu kondisi agar pengguna program memilih apakah akan mencari nilai maksimum atau nilai minimum. Jika yang ingin dicari adalah nilai maksimum, maka program akan menjalankan fungsi maks(), sedangkan bila yang ingin dicari adalah nilai minimum, maka program akan menjalankan fungsi min().

Namun bisa juga dalam satu program yang sama, output yang dihasilkan adalah nilai maksimum dan minimum sekaligus.

Selamat mencoba.

Menghitung Faktorial Dengan Bahasa C

 

Menghitung Faktorial merupakan contoh favorit yang sering diberikan dalam rangka membahas fungsi rekursif. Fungsi rekursif adalah suatu fungsi yang memanggil dirinya sendiri. Jadi di dalam fungsi tersebut terdapat suatu baris program yang memanggil dirinya sendiri. Perhatikan contoh pada listing 1.






Listing 1. Contoh fungsi rekursif

main()

{





}

fungsiX()

{





fungsiX()



}

Satu hal yang harus diperhatikan adalah proses rekursi tersebut akan terjadi secara berulang-ulang, sehingga di dalam fungsi yang bersifat rekursif tersebut harus diberi suatu kondisi sedemikian rupa yang dapat mengakhiri proses rekursi.

Lalu, apa pula faktorial itu? Faktorial adalah perkalian suatu bilangan bulat N dengan N-1, N-2, dan seterusnya hingga 0.

Kalau begitu hasilnya selalu 0 dong, khan semua bilangan jika dikalikan dengan 0 adalah 0. Pada faktorial yang terjadi tidaklah demikian, karena ada perjanjian bahwa nilai faktorial 0 adalah 1, bukan 0.

Suatu faktorial dilambangkan dengan tanda seru (!) dan mengikuti rumus sebagai berikut:

N! = N x (N-1) x (N-2) x … x 0

Dalam bentuk lain, rumus di atas bisa dituliskan sebagai berikut:

N! = N x (N-1)!

Nah, program bahasa C yang digunakan untuk menghitung faktorial diberikan pada listing 2.






Listing 2. Menghitung faktorial

#include <stdio.h>

long int faktorial(int N);

main()

{

long int f;

int n;

clrscr();

printf("Program Menghitung Faktorial \n \n");

printf("Masukkan suatu bilangan bulat : ");

scanf("%d",&n);

if (n<0)

{

printf("Bilangan harus positif!");

} else {

f = faktorial(n);

printf("Nilai %d! adalah : %ld", n, f);

}

}

long int faktorial(int N)

{

long int F;

if (N<=1)

{

return(1);

} else {

F = N * faktorial(N-1);

return(F);

}

}

Jika program tersebut dijalankan, hasilnya adalah sebagai berikut:

Program Menghitung Faktorial

Masukkan suatu bilangan bulat : 5

Nilai 5! adalah : 120

Bandingkan dengan gambar 1.

Alur program tersebut adalah sebagai berikut:

  1. Deklarasi variabel.

  2. Input bilangan yang akan difaktorial.

  3. Pemeriksaan kondisi, jika bilangan kurang dari nol, maka muncul peringatan, jika bilangan lebih besar atau sama dengan nol, maka fungsi faktorial() dipanggil.


Sementara itu di dalam fungsi faktorial() sendiri alurnya adalah sebagai berikut:

  1. Deklarasi variabel.

  2. Pemeriksaan kondisi, jika nilai bilangan kurang dari atau sama dengan 1, maka fungsi faktorial() akan menghasilkan nilai balik 1, jika nilai bilangan lebih dari 1, maka dihitung nilai faktorialnya. Perhitungan nilai faktorial mengikuti rumus N! = N x (N-1)!. Karena itu di dalam fungsi faktorial() ini dipanggil lagi fungsi faktorial() namun sekarang nilai argumennya adalah N-1.


Dengan memanfaatkan program faktorial di atas, kita bisa membuat suatu program lain yang juga bermanfaat, seperti misalnya program untuk menghitung permutasi dan kombinasi. Permutasi dan kombinasi merupakan proses perhitungan yang kerap dilakukan di bidang ilmu statistik. Rumus perhitungan permutasi dan kombinasi dapat dilihat pada gambar 3. Huruf P menunjukkan permutasi dan huruf C menunjukkan kombinasi. Huruf n dan r mewakili bilangan bulat positif dengan n >= r.

Berdasarkan rumus tersebut, kita akan membuat program untuk menghitung permutasi dan kombinasi. Program tersebut diberikan pada listing 3.






Listing 3. Menghitung permutasi dan kombinasi

#include <stdio.h>

long int faktorial(int N);

main()

{

long int hasil;

int n,r;

char proses;

clrscr();

printf("Program Menghitung Permutasi atau Kombinasi \n");

printf("nPr atau nCr \n \n");

printf("Masukkan nilai n : ");

scanf("%d",&n);

printf("Masukkan nilai r : ");

scanf("%d",&r);

if (n<r) {

printf("Nilai n tidak boleh lebih kecil dari r");

} else {

printf("Pilih P (permutasi) atau C (kombinasi) : ");

proses = getche();

if (proses=='p' | proses=='P')

{

hasil = faktorial(n)/faktorial(n-r);

printf("\n \n");

printf("%dP%d = %ld",n,r,hasil);

}

else if (proses=='c' | proses=='C')

{

hasil = faktorial(n)/(faktorial(r) * faktorial(n-r));

printf("\n \n");

printf("%dC%d = %ld",n,r,hasil);

}

else

{

printf("\nAnda tidak memilih P atau C");

}

}

}

long int faktorial(int N)

{

long int F;

if (N<=1)

{

return(1);

} else {

F = N * faktorial(N-1);

return(F);

}

}

Jika program tersebut dijalankan, salah satu kemungkinan hasilnya adalah sebagai berikut:

Program Menghitung Permutasi atau Kombinasi

nPr atau nCr

Masukkan nilai n : 5

Masukkan nilai r : 3

Pilih P (permutasi) atau C (kombinasi) : p

5P3 = 60

Anda bisa mengembangkan sendiri program di atas, misalnya diberi looping untuk memberi kesempatan pengguna melakukan perhitungan ulang setelah sebuah perhitungan selesai dilakukan.

Selamat mencoba…………………..