









Dear Kanjeng Pembaca sekalian,… ada case study yang menarik… ini terlepas apakah system yang mengetest menerima atau tidak …!!! Namun kalau dari sudut pandang software engineering.. ketika input dimasukkan sama… kemudian output juga menghasilkan sama … tentu proses nya harus dinyatakan benar …!!! Mirip seperti c = a + b … jika ditulis c = b + a … yaagh sami mawon… !!! Naaagh berikut ini soal nya 😀
Naaagh yang menarik adalah soalnya seperti itu… relatif singkat … so disini harus bisa menafsirkan dengan baik …!!! So misalnya parameter 1 dan 5, ini jika data diinputkan sebagaimana diatas … maka hasilnya dapat dilihat sebagaimana image dibawah …!!!
Naaagh tentu ada yang bisa kita tafsirkan misalnya a -> f … so ini ada kenaikan 5 kode ASCII … so sama persis dengan parameter 5 yang dimasukkan dalam soal …!!! Kemudian ketika kita masukkan huruf besar… maka hasilnya pun enkripsi huruf besar… demikian pula huruf kecil …!!! Simbol tetap dipertahankan misalnya titik etc … so ini yang perlu dijaga …!!! So tentu ketika kita coding yang harus diperhatikan adalah menjaga agar output nya sama … sebagaimana hasil dari output berikut … 😀
Demikian pula … untuk output ke-2 … ini juga yang harus dijaga… perbedaannya adalah angka input ke-2 adalah 2, dan angka input berikutnya adalah 68 … so ini number yang besar … karena kode ASCII ini jumlahnya 128 …!!! So setelah dicoding… dan ditafsirkan hasil output nya pun sama …!!! : Yang menarik ketika meneliti… juga ada jebakan… khususnya ketika ada input “Kek gini???!?? :(…….” ini titik-titiknya bukan titik biasa… ketika coba di cetak kode ASCII nya kok negatif… terus mau diapain …??? So kembali dibiarkan saza… kalau dienkripsi nanti salah … so memang harus hati-hati …!!! 😀
Demikian pula ketika mencoba men-debug dari sisi penjelasan yang dienkripsi …
So… yang menarik adalah program akan proses ketika ada EOF (control-D) di Mac OS … dan langung memproses… !!! Karena gak ada rumus / requirement yang tertulis… maka sepanjang input yang dimaksudkan benar… dan output yang dihasilkan benar .. maka program sudah bisa dikatakan benar …!!! Berikut program nya … 😀
#include <stdio.h>#include <string.h>int main(){int cmd, K, hitung3, i, j, batas, sub_total;char m[100][1000];int v_sn, angka, angka_huruf;scanf(“%d %d”, &cmd, &K);i = 0;while (scanf(” %[^\n]s”, m[i]) != EOF){i++;}batas = i;for (i=0; i <batas; i++){hitung3 = strlen(m[i]);for (j=0; j<hitung3; j++){if(m[i][j] == ‘ ‘){printf(” “);}elseif(m[i][j] == ‘.’){printf(“.”);}else{angka = (int) m[i][j];angka_huruf = angka;if (angka > 0){if (angka >= 32 && angka <= 64){angka = angka;}else{angka = (int) m[i][j];if ( cmd == 1 && angka >= 65 && angka <= 90){sub_total = angka + K;if (sub_total > 90){angka = angka – K;}else{angka = sub_total;}}if ( cmd == 1 && angka >= 97 && angka <= 122){sub_total = angka + K;if (sub_total > 122){angka = angka – K;}else{angka = sub_total;}}if ( cmd == 2 && angka >= 65 && angka <= 90){sub_total = angka + (cmd * K);sub_total = sub_total % 152;if (sub_total > 122){angka = sub_total-26;}else{angka = sub_total;}}if ( cmd == 2 && angka >= 97 && angka <= 122){sub_total = angka + (cmd * K);sub_total = sub_total % 152;if (sub_total < 97){angka = sub_total + 26;}else{angka = sub_total;}}}}printf(“%c”,angka);}}if (i <batas){printf(“\n”);}}}
Demikian pembahasan tentang case study ini… memang cukup menantang … so monggo kalau ada alternatif lain… toh banyak jalan menuju Roma …!!! Last,… jika ada komentar atau pertanyaan monggo disampaikan pada kolom komentar dibawah ini …!!! Ciaooo 😀
Leave a Reply