Perhatikan fungsi dan potongan program sebagai berikut untuk soal nomor 44 dan 45
var input : string; procedure ubah(s:string) var i,j:integer; begin for i:=1 to length(s)-1 do begin s[i] := chr((((ord(s[i])-65) + (ord(s[i+1]) - 65)) mod 26) + 65); end; writeln(s); end; begin ubah(input); end.
Catatan:
- Fungsi
ord(cc: char)
menghasilkan nilai kode ASCII karakter CC;Fungsi
chr (K: integer)
menghasilkan karakter yang kode ASCII-nya adalah K.Potongan tabel konversi kode ASCII dari karakter ‘A’ s.d. ‘Z’ diberikan sebagai berikut:
-
ord(‘A’) = 65
ord(‘B’) = 66
ord(‘C’) = 67
….
… dst
ord(‘X’) = 88
ord(‘Y’) = 89
ord(‘Z’) = 90
-
Apabila variabel input berisi nilai ‘TOKIABSOLUTEWINNERIOI’, apakah output yang dihasilkan
oleh program di atas?- HYSIBTGZFNXAEVARVZWWI
- IZTJCUHAGOYBFWBSWAXXJ
- HYAIBTBZFNXCEVARVZWWI
- IZTJCUHAGOYBFWBSWAXXJ
- HZAJIUBAFOXBEWRSZAWXI
-
Apabila program di atas mengeluarkan output ‘RIPTQHDLTMQMSS’, nilai variabel input
sebelum program dijalankan adalah …..- GOGETGOLDMEDAL
- RAIHMEDALIEMAS
- HYAIBTBZFNXCEVA
- OSNINFORMATIKA
- SUKSESSEMUANYA
-
‘TOKIABSOLUTEWINNERIOI’,
T adalah huruf ke-20, nilainya 19.
O adalah huruf ke-15, nilainya 14
Sehingga huruf pertama adalah (33 mod 26)+65 = 72 (huruf ke
33 mod 26 + 1), yaitu H.Kedua, O bernilai 14 dan K bernilai 10. Sehingga
huruf kedua bernilai 24 (huruf ke-25), yaitu Y.
Ketiga, K bernilai 10 dan I bernilai 8, sehingga
huruf ketiga bernilai 18 (huruf ke-19), yaitu S.Dengan demikian, jawaban yang mungkin adalah HYSIBTGZFNXAEVARVZWWI (A).
-
‘RIPTQHDLTMQMSS’
Seperti yang dijelaskan sebelumnya bahwa huruf terakhir
tidak berubah. Sehingga kata yang mungkin adalah kata
yang berakhiran S, yaitu RAIHMEDALIEMAS (B).
Prosedur ubah akan mengubah seluruh karakter (huruf)
dalam sebuah kata kecuali huruf terakhir.
Cara mengubah pada prosedur adalah dengan menjumlahkan
nilai dari huruf yg sekarang dengan berikutnya (A = 0, B = 1 … Z = 25).
Jika penjumlahan melebihi 26, maka kurangi hasilnya dengan 26.