Search This Blog

Sunday 4 September 2016

Searching array 2 dimensi

Pada topik kali ini penulis ingin menyampaikan cara melakukan searching array dua dimensi, dimana pada searching ini penulis tidak akan terlalu banyak menjelaskan akan proses dalam pencarian array 2 dimensi ini, karena pada dasarnya proses pencarian ini tidak jauh berbeda akan perintah-perintah yang dilakukannya (untuk mencarinya), hanya saja berbeda dalam pengindeksannya atau yang biasa disebut dengan perulangan dalam mencarinya. Proses pencarian dalam topik kali ini tidak hanya satu macam pencarian yang dibahas dengan rinci, karena pada sitemap blog ini sudah terdapat penjelasan mengenai pencarian-pencarian tersebut dengan menggunakan array satu dimensi. Pada topik kali ini yang diutamakan ialah contohnya agar pembaca dapat membandingkan sendiri akan proses pencarian antarra array satu dimensi dengan array dua dimensi, namun sekali lagi ditegaskan bahwa yang membedakan proses pencarian pada array ini dengan yang satu dimensi ialah dekllarasi/inisialisasi dan perulangannya saja, karena memang sudah jelas perbedaan array satu dimensi dan dua dimensi ialah pada hal tersebut. Untuk yang pertama akan penulis bahas disini ialah pencarian nilai ada dan tidak ada, pencarian tersebut ialah pencarian sebuah nilai yang terdapat dalam elemen array, apakah nilai tersebut ada atau tidak ada dalam elemen array. Proses pencarian yang dilakukan dalam topik kali ini ialah sequential search. Mari perhatikan contoh berikut:

#include<stdio.h>
main(){
int R[2][3]={1,9,7,3,4,6},m, flag=0, r, t ;
printf("Masukan nilai yang akan dicari:\n\n");
scanf("%i", &m);

for(r=0; r<2; r++){
for(t=0; t<3; t++){
if(m==R[r][t]){
flag=1;
}
}
}
if(flag==1){
printf("ADA");
}else{
printf("Tidak Ada");
}
}

Contoh program diatas merupakan proses untuk mencari nilai ada atau tidak ada pada sebuah array dua dimensi yang mana didalamnya terdapat elemen array dengan nilai antara lain 1,9,7,3,4,6. User akan diminta untuk menginputkan sebuah nilai dan nanti akan dicek apakah nilai tersebut ada atau tidak dalam elemen array yang tersedia, jika memang ada maka akan ditampikan informasi ke layar bahwa nilai tersebut ada, begitpun jika nilainya tidak ada, maka akan diberikan informasi pada user bahwa nilainya tidak ada. Dan untuk variabel flag sendiri, itu hanyalah sebuah variabel penanda yang dapat diganti namanya dengan nama lain, misal dengan A atau variabel lain, yang paling penting ialah tetap disesuaikan antara proses dengan deklarasinya. Pada proses tersebut kita melihat sebuah perulangan untuk mengindeks array dua dimensi, dan dalam perulangan tersebut terdapat suatu kondisi dimana jika nilai yang diinputkan sesuai/sama dengan yang ada dalam variabel array maka nilai variabel flag akan berubah menjadi 1. Dan dalam proses pencarian nilai ada dan tidak ada ini yang menjadi patokan utama pada program diatas ialah perubahan dari nilai flag tersebut, karena setelah perulangan terdapat sebuah kondisi dimana jika nilai flag==1 maka di layar akan ditampilkan tulisan ada, namun jika flag!=1 maka di layar akan ditampilkan tulisan Tidak Ada. Dan sedikit mengingatkan bahwa untuk penulisan sebuah kondisi maka karakter sama dengan harus dua, berbeda dengan perintah didalam kondisi itu sendiri (dalam contoh diatas penulis menggunakan kondisi if). Selain pencarian nilai ada dan tidak ada, penulis juga ingin memberikan contoh untuk mencari jumlah karakter yang dicari, berapakah jumlah karakter dalam variabel array yang sesuai dengan inputan tersebut. Pada proses pencarian jumlah, kita ambil saja contoh program diatas, jadi tidak lagi perlu membuat program baru. Untuk menambahkan perintah pencarian jumlah karakter Anda tinggal menambahkan deklarasi dan inisialisasi jum=0, dan untuk proses pencarian jumlahnya sendiri Anda tinggal menambahkan jum++ didalam kondisi yang terdapat pada perulangan (dibawah atau diatas tulisan flag=1;) serta untuk mencetaknya Anda tidak perlu menambahkan sebuah kondisi / perulangan lagi, Anda tinggal membuat perintah untuk mencetak jum, seperti printf("%i", jum); dengan demikian Anda sudah dapat mencari sekaligus mencetak ke layar akan jumlah karakter dalam variabel array yang sesuai dengan input yang dilakukan. Selain pencarian ada dan tidak ada serta jumlah karakter, penulispun ingin memberikan beberapa tambahan lain seperti pencarian indeks dan pencarian nilai min dan max.

Pada pencarian nilai indeks, maksudnya ialah untuk mencari tahu dimanakan karakter tersebut ditampatkan, dengan kata lain pencarian tersebut ialah untuk mencari tahu dimana indeks karakter berada, apakah pada indeks [0][0] ataukah pada indeks lainnya. Dalam menyisipkan perintah untuk mencari indeks array dua dimensi tidak lagi perlu menambahkan variabel baru dalam dekalarasi, karena untuk indeks sendiri kita tinggal memanfaatkan perulangan yang sudah ada dengan kondisi didalamnya, atau membuat perulangan baru dengan kondisi yang sama. Dalam kondisi tersebut (dalam contoh program diatas menggunakan kondisi if) Anda tinggal menambahkan perintah cetak indeksnya saja, karena pengindeksan sudah dilakukan dengan perulangan tersebut. Pada perintah percetakannya Anda dapat menuliskan seperti contoh printf(" %i%i", r, t); dalam perintah tersebut mengapa terdapat dua buah %i dan mengapa ada tulisan r, t? Ialah karena indeks array dua dimensi terdiri dari baris dan kolom, maka r sebagai pengindeks baris dan t sebagai pengindeks kolom (disesuaikan dengan yang terdapat pada perulangan). Dan nanti hasil yang diperoleh untuk cetakan ke layar antara lain seperti 00 atau 12 dll, tergantung pada posisi indeksnya. 0 yang pertama menunjukan baris ke berapa sedangkan 0 yang kedua untuk menunjukan kolomnya. Memang simple, cukup dengan menuliskan perintah seperti itu saja, namun itu dikarenakan kita sudah memiliki perulangan dalam program tersebut, jika memang tidak ada perulangan seperti pada contoh diatas, maka kita harus membuat perulangan baru dengan sebuah kondisi didalamnya. Dan sedikit mengingatkan bahwa untuk membuat nama variabel sendiri tidak harus sama dengan contoh program diatas atau dengan kata lain nama variabelnya bebas, dengan syarat setiap proses yang dilakukan harus sesuai dengan apa yang ada dalam deklarasinya. Maka jika memang belum mengerti dengan program tersebut dan ingin mengganti nama dari setiap variabelnya, maka satu persatulah mengganti nama variabel tersebut. Misal variabel R ingin iganti dengan nama Anda, ambilah nama Anda Usep, maka antara deklarasi dengan proses yang terdapat pada perulangan tersebut harus sama-sama diganti. Terkecuali jika Anda menambahkan perintah lain untuk menyesuaikan dengan variabel tersebut. Itu jika soal indeks, nah sekarang penulis ingin memberi contoh lagi mengenai pencarian nilai minimum dan maksimum pada array dua dimensi.

Pada pencarian ini biasanya banyak pula yang ingin mencari (misal) jumlah nilai maksimum dan minimumnya. Dan untuk itu penulis menyarankan pahami proses pencarian nilai min dan maksnya serta pahami proses mencari jumlahnya. Karena pada topik kali ini kedua proses tersebut sudah dibahas, atau jika ingin contoh yang lebih rinci, Anda dapat menemukannya pada sitemap blog ini, dimana penulis sudah membahas apa yang Anda cari melalui array satu dimensi, tinggal merubah perulanggannya saja. Nah untuk proses mencari nilai max atau min sendiri Anda harus menambahkan deklarasi baru dengan tambahan nilai awalnya, untuk nilai awal sendiri penulis sarankan untuk menggunakan indeks dari variabel array ke 00. Dapat dituliskan max=R[0][0]. Dengan demikian nilai awal max ialah nilai yang terdapat pada variabel array R dengan indeks ke 00, yang mana dalam variabel array tersebut nilai pada indeks ke 00 ialah angka 1. Dan untuk proses pencarian nilai max sendiri dapat dilakukan dalam perulangan yang sama atau menambahkan perulangaan baru, tapi tidak dalam kondisi yang sama (membuat kondisi baru dibawah/diatas kondisi yang sudah ada). Kondisi tersebut dapat dituliskan seperti if(R[r][t]>max){ max=R[r][t]; }. Dengan demikian proses pencarian nilai max sudah dapat dilakukan. Namun sedikit mengingatkan, jangan lupa untuk memberi nilai awal max pada saat deklarasi dilakukan. Dan untuk mencetak nilai max sendiri dapat dilakukan diluar perulangan, karena dimana-mana yang namanya nilai tertinggi itu sudah pasti satu, entah berapapun jumlahnya. Dengan demikian mencetaknya pun cukup satu kali (tidak perlu menggunakan perulangan). Sama seperti mencetak jumlah, perintah untuk mencetaknya sendiri tinggal menggunakan perintah seperti printf("%i", max); tidak perlu menambahkan indeks seperti pada perulangan yang menyisipkan [r][t], karena indeksnya pun tunggal. Maka dengan demikian proses percetakan jumlah dapat dilakukan. Demikian proses searching array 2 dimensi.

No comments:

Post a Comment