Pembahasan Soal Praktikum Shift 2 Modul 3 PPT

Assalamualaikum Wr. Wb.

Hallo teman, selamat datang di blogku kembali.. Kali ini mungkin kalian tidak sia2 mampir di blogku. Karena saat ini aku ingin sharing sedikit algoritmaku dalam praktikum modul 3 shift 2 PPT kemarin..

Aku ingin mengingatkan kalian lagi tentang soal praktikumnya nih. Begini soalnya

SOAL :

..:::  MARI BERHITUNG  :::…

Ada sebuah permaian yang dilakukan oleh (n) orang secara melingkar. Permainan itu adalah membilang bilangan dari 1 – (r). Barangsiapa memperoleh girilan untuk membilang bilangan r, dia akan kalah dan tidak boleh ikut permainan lagi. Setelah itu penghitungan dilanjtkan mulai dari 1 oleh orang setelahnya. Penghitungan pertama dimulai di player ke-(st). Permainan akan berakhir jika dan hanya jika ada satu orang yang tidak kalah.

INPUT : JUMLAH PEMAIN , RANGE, dan STARTING PLAYER

OUTPUT :

soal-mdl-4

PEMBAHASAN

Sebenarnya algoritma untuk menyelesaikan masalah di atas simple banget kalau dibanding dengan soal shift modul 3 ppt yang lain. Tinggal pakai counter dan status aja. Namun, kita harus pintar-pintar memanfaatkannya sesuai dengan permasalahan di atas.

Langkah Pertama :

Menyediakan Array bool status[jmlPemain]; sebagai status apakah pemain tersebut telah kalah (dicoret) atau belum. Status semua pemain harus bernilai FALSE terlebih dahulu. Untuk itu kita dapat mengisi nilai variable bool tersebut dengan menggunakan perulangan. Status ini sangat penting karena akan sepenuhnya digunakan dalam proses perulangan berikutnya. INGAT !! dengan algoritma ini, kita bisa menyelesaikan masalah tersebut tanpa menggunakan Array of Integer satupun..!!

Selain itu, langkah awal ini kita juga bisa memanfaatkannya untuk memberi nilai awal variable conter. Agar persamaan yang kita buat nanti fleksible dan tidak ada penambahan syarat lagi, kita harus membuat nilai awal counter sesuai dengan penambahannya.

Jika user mengimputkan starting point yang tidak pada pemain pertama, pastinya user menginginkan agar counter berawal pada pemain pilihan user tersebut. Jadi, agar nilai counter bertambah mulai dari pemain yang pertama, kita harus memberikan nilai sebagai berikut :

COUNTER = 2-STARTING PLAYER

Langkah Kedua :

Membuat perulangan sampai yang menang HANYA 1. Di dalam perulangan tersebut terdapat perulangan yang mempunyai batasan sampai jumlah pemain max.

Langkah Ketiga :

Kemudian, kita saatnya memanfaatkan sumberdaya yang ada. He3.. Maksudnya kita setelah itu bisa menggunakan variable counter dan array bool status yang telah kita buat sebelumnya. Namun, ada aturannya, Begini aturannya :

1. Counter hanya akan bertambah jika status[i] bernilai FALSE. Ini berarti bahwa jika status[i] bernilai benar / telah dicoret, conuter akan mempunyai nilai yang tetap (tidak bertambah).

2. Jika Counter bernilai sama dengan Range, maka status pada pemain tersebut kita beri nilai TRUE dan conter harus kita nol-kan.

3. Untuk mengeprint pemain, kita harus mengecek terlebih dahulu status pemain yang akan kita print tersebut. Jika statusnya adalah TRUE /DICORET maka kita printf(“%dx”,pemain); Jika sebaliknya maka kita hanya mengeprint pemain seperti biasa.

LANGKAH TERAKHIR

Untuk menghentikan perulangan terbesar pada langkah ketiga, kita harus mengetahui bahwa pemain yang tersisa hanya tinggal satu. Untuk memperoleh kapan itu bisa terjadi, kita dapat mengecek semua status pemain. Jika Jumlah Status pemain yang TRUE adalah jumlahPemain-1, maka akan keluar dari perulangan dan langsung mengeprint pemain yang tersisa adalah %d (status yang FALSE).

Nah, mudah kan?? Tinggal ngodingnya aja.. Selamat mencoba ya teman-teman.. Vivat !!

Tinggalkan Jejak

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