









Dear Kanjeng Pembaca sekalian,… berikut ini soal yang ‘gampang-gampang susah’ … melakukan manipulasi string untuk melakukan perhitungan perkalian …!!! Jadi case nya input pertama dimasukkan berapa banyak digit number … naaagh yang menariknya adalah digitnya ini bisa 100 digit … so sudah pasti kalau definisikan dengan float atau integer sudah pasti gak bisa …!!!
Berikutnya ditanya lagi … untuk memasukkan angka sesuai dengan input baris pertama,… jadi kalau input 3 digit yaaagh dimasukkan angka 3 digit… jadi ini harus sesuai untuk validasi …!!! Berikutnya adalah input ke-3 … berisi angka W alias Win… ini akan dikalikan angka baris ke-2 dengan 2 … dan J alias Jackpot akan dikalikan dengan 5 … dan L alias Lose yaagh sudah cuma tampilkan messagenya …!!! lebih jelas nya seperti dibawah ini… input dan output analisa nya …!!!
So monggo dilihat ketika dimasukkan angka 30… segitu banyak bilangan harus diinput dan nanti dikalikan dengan 2 …!!! Coba ngecheck pake excel.. excel nya kelengeeer… lagian gak ada bilangan sebanyak itu …!!! Ok… yang penting paham dulu… yaaa… persoalannya … baru deegh kita bahas soal logika nya …!!!
So… logiknya adalah input baris ke-2 … diperlakukan sebagai string… terus dimulai dari angka belakang dijadikan integer terus dikalikan dengan misalnya 2 untuk W… kemudian hasilnya modulus 10… sisanya ditulis … kemudian angka depannya akan ditambah dengan perkalian berikutnya … setiap sudah selesai perhitungan dijadikan string lagi… begitu seterusnya …!!! Naaagh programnya dapat dilihat sbb :
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>#include <limits.h>#include <float.h>int main (){int digits, i, bil, i2;int jml_digits, rapi_digits;int nilai, sisa_nilai;char results[1];char v_bets[101];char cetak[101];char cetak2[101];char cetak3[101];char sc1[1];//input the datascanf(“%d”, &digits);//validasi apakah digit antara 1 dan 100if (digits >= 1 && digits <= 100){scanf(“%s”, v_bets);jml_digits = strlen(v_bets);if(jml_digits == digits){scanf(“%s”, results);// validasi kondisi apakah result L, J, atau Wif (strcmp(results,”L”) == 0){printf(“Lose! you’re no longer a quadrillionaire now : \”( \n”);}else{if (strcmp(results,”J”) == 0){printf(“Jackpot! \n”);sisa_nilai = 0;i2 = jml_digits + 1;cetak2[i2]=’\0′;sisa_nilai = 0;for( i = 0 ; i < jml_digits ; i++ ){memcpy(sc1,&v_bets[jml_digits-i-1],1);sscanf(sc1, “%d”, &bil);nilai = ((bil * 5) + sisa_nilai) % 10;cetak[i] = nilai + ‘0’;cetak2[jml_digits-i] = cetak[i];sisa_nilai = (bil * 5) / 10;if (i == (jml_digits – 1)){if (sisa_nilai > 0){cetak2[0] = sisa_nilai + ‘0’;}else{cetak2[0] = 0 + ‘0’;}}}if (cetak2[0] == ‘0’){rapi_digits = strlen(cetak2);cetak3[rapi_digits-1] = ‘\0’;memcpy(cetak3,&cetak2[1], rapi_digits – 1);printf(“Prize : $%s\n”, cetak3);}else{printf(“Prize : $%s\n”, cetak2);}}elseif (strcmp(results,”W”) == 0){printf(“Win! \n”);sisa_nilai = 0;i2 = jml_digits + 1;cetak2[i2]=’\0′;sisa_nilai = 0;for( i = 0 ; i < jml_digits ; i++ ){memcpy(sc1,&v_bets[jml_digits-i-1],1);sscanf(sc1, “%d”, &bil);nilai = ((bil * 2) + sisa_nilai) % 10;cetak[i] = nilai + ‘0’;cetak2[jml_digits-i] = cetak[i];sisa_nilai = (bil * 2) / 10;if (i == (jml_digits – 1)){if (sisa_nilai > 0){cetak2[0] = sisa_nilai + ‘0’;}else{cetak2[0] = 0 + ‘0’;}}}if (cetak2[0] == ‘0’){rapi_digits = strlen(cetak2);cetak3[rapi_digits-1] = ‘\0’;memcpy(cetak3,&cetak2[1], rapi_digits – 1);printf(“Prize : $%s\n”, cetak3);}else{printf(“Prize : $%s\n”, cetak2);}}else{printf(“Data Result is invalid \n”);}}}}return 0;}
Naaagh dapat dilihat diprogram diatas banyak sekali manipulasi string misalnya strcmp(), strlen(), memcpy(), sscanf etc … !!! Demikian juga soal array juga sudah pasti digunakan… berikut for untuk looping …!!! Naaagh bagaimana hasilnya setelah dijalan kan …???
So… terlihat hasilnya sudah benar… logiknya sudah menjalankan sesuai dengan soal … dan bagi yang ingin memahami tentang manipulasi string… monggo dibaca di artikel sebelumnya… karena kalau gak runut membacanya … akan sulit memahami program diatas …!!! Demikian ulasan soal .. .semoga dapat bermanfaat bagi adek-adek yang lagi belajar pemrograman … Amiin …!!! Ciaooo 😀
Leave a Reply