Friday, 30 July 2010

Ascending dan Descending (1)

Ascending adalah metode pengurutan data dari yang terkecil hingga yang terbesar, sedangkan Descending kebalikkannya yaitu dari yang terbesar hingga yang terkecil. Dalam game metode ini banyak dijumpai contohnya siapa yang paling terkuat berdasarkan Strength, atau paling terkaya berdasarkan jumlah uang dari sekian player teratas (Top Player). Kalau pada game-game jaman dulu biasa dikenal dengan Highscore (mang sekarang apaan?), yang berisi daftar-daftar player yang mendapatkan poin atau skor tertentu. Biasanya hanya 10 player yang akan ditampilkan, yang terkecil pasti disingkirkan. Ok, berikut contoh programnya:

Link : http://rapidshare.com/files/410033140/31_Ascending_dan_Descending.7z
Size : 9 KB

Silahkan donwload terlebih dahulu, lalu perhatikan potongan kode berikut:

const int MAX_NILAI = 10;
int nilai[MAX_NILAI];

//meminta masukkan nilai ke array nilai.
printf("Masukkan nilai:\n\n");
for(int c=0;c<MAX_NILAI;c++)
{
printf("ke-%d\t= ",c+1);
scanf("%d",&nilai[c]);
}

//algoritma Ascending
for(int c=0;c<MAX_NILAI;c++){
for(int d=c+1;d<MAX_NILAI;d++){
if( nilai[d] < nilai[c]){
int _temp = nilai[c];
nilai[c] = nilai[d];
nilai[d] = _temp;
}
}
}
Pertama kita membuat variabel konstan (MAX_NILAI) untuk memudahkan pengubahan atau pemrosesan nilai pada loop (pengulangan). Lalu membuat sebuah sebuah variabel senarai (array) dengan jumlah sesuai variabel konstan sebelumnya. Variabel array ini lalu kita masukkan nilainya satu-satu dengan menggunakan pengulangan. Disini variabel konstan sangat membantu atau malah sangat penting. Karena jika jumlah pada array nilai hanya 5 dan pengulangan mungkin lebih dari 5, misal 6 pada saat meminta masukkan nilai dengan fungsi scanf() kemungkinan program akan berjalan aneh walaupun tidak sepunuhnya akan langsung tertutup atau crash. Tapi disini karena program belum terlalu kompleks sehingga keanehan itu masih samar-samar dan belum nampak sehingga butuh indra keenam, WEW!! . Yang pasti MAX_NILAI ini sangat membantu .

Setelah nilai diperoleh untuk masing-masing indeks (misal nilai[0], nilai[1], dst) maka kita mulai mengurutkannya. Pengurutan pertama adalah ascending (dari kecil ke besar), kita mulai dari indeks pertama, yaitu nilai[0] lalu dibandingkan dengan indeks selanjutnya yaitu nilai[1] sampai nilai[MAX_NILAI-1]. Kondisi yang dipakai adalah jika indeks selanjutnya (disingkat: nilai[d]) lebih kecil dari indeks yang sedang diperiksa (disingkat: nilai[c]) maka nilai[c] akan bertukar nilai dengan nilai[d]. Pertukaran nilai ini tidak langsung terjadi begitu saja dengan memberi nilai[d] langsung ke nilai[c]. Kita perlu membuat variabel (int _temp) untuk menampung nilai[c] agar nilai aslinya tidak tertimpah dengan nilai[d]. Untuk banyaknya pengulangan, misal MAX_NILAI adalah 10 maka pengulangan pertama (untuk nilai[0]) adalah 9 kali, sedangkan untuk indeks selanjutnya misal nilai[5] hanya perlu memeriksa nilai[(5+1)] sampai nilai[MAX_NILAI-1]. Karena sudah pasti indeks sebelumnya telah diurutkan dengan baik.

Tapi ini belum semua dibahas, so tunggu lanjutannya .

- krofz

No comments:

Post a Comment

Maaf jika komentar anda lama terbitnya ^__^, penulis berusaha OL sesering mungkin. Komentar anda adalah semangat blog ini, dan juga semangat para blogger lainnya. You can use XHTML tags: <a href="" rel="link"> </a>, <strong> </strong>, <b> </b>, <em> </em>, <i> </i>.

Spesial character use :
&lt; for <
&gt; for >


Use Pastebin.com for alternative to display your code :) .

 

back to top

back to top