Kode Hari Ini [17.10.18]

Hari ini kita akan membahas soal code membuat bentuk "X" dari bintang.

Problem: Make a program to display based on the following figure based on user input

Sample Input 1 : 6

Sample Output 1 :
*====*
=*==*=
==**==
==**==
=*==*=
*====*
Sample Input 2 : 8

Sample Output 2 :
*======*
=*====*=
==*==*==
===**===
===**===
==*==*==
=*====*=
*======*
Sample Input 3 : 10

Sample Output 3 :
*========*
=*======*=
==*====*==
===*==*===
====**====
====**====
===*==*===
==*====*==
=*======*=
*========*
Answer :


Pembahasan :

Algoritma ini bekerja sebagai berikut:
1. Nyatakan variabel x sebagai batasan
2. Masukkan nilai dari variabel x
3. Menghapus memori buffer dari input
4. Inisialisasi nilai adalah 0 (Loop terluar dimulai)
5. Selama i kurang dari x lakukan prosedur didalamnya
6. Inisialisasi variabel j adalah 0 (Loop dalam dimulai)
7. Ketika nilai j = i atau j = (x-i-1), cetak *. Selain itu cetak whitespace(sample output menggunakan "=" agar terlihat) dan nilai j ditambah 1 tiap loop
8. Loop terus didalam hingga nilai j menyamai nilai x
9. nilai i +1
10. cetak break row/ganti baris
11. Lakukan tahap 7, 8. 9, dan 10 sampai nilai i menyamai nilai x
12.  Kembalikan nilai ke 0
13. Akhiri program

Konsepnya hampir sama dengan mencetak * dalam bentuk persegi yaitu dengan loop didalam loop agar keduanya simetris. Namun letak perbedaannya berada pada saat mencetak *. Ketika membentuk persegi, kita hanya mencetak * terus terus sebanyak kolom dikali baris, tetapi ketika kita membentuk "X" kita melakukan seleksi antara * dengan whitespace. Kita hanya mencetak bintang ketika nilai kolom (j) sama dengan nilai baris (i) atau nilai kolom sama dengan nilai batasan yang terlebih dahulu dikurangi baris dan 1. Selain dari 2 itu kita hanya mencetak whitespace. Berikut ilustrasinya:

Input X: 6
   123456
_|________
1|012345 //Diagonal kanan atas ke kiri bawah (j == (x-i-1)) [{1,6},{2,5},{3,4},{4,3},{5,2},{6,1}]
2|012345
3|012345
4|012345
5|012345
6|012345 //Diagonal kiri atas ke kanan bawah (j == i) [{1,1},{2,2},{3,3},{4,4},{5,5},{6,6}]


Inilah problem hari ini, jika ada yang menemukan algoritma yang lebih efektif dan efisien lagi silakan tinggalkan komentar dibawah. Terima kasih dan sampai jumpa pada pertemuan berikutnya.

Comments

Popular Posts