Hari Kamis-Jumat (23-24 Juni 2011) dilaksanakan UAS Praktikum Algoritma dan Pemrograman II. Di sini ujian terbagi menjadi 2 hari dan masing2 dibagi menjadi 2 shift. Dan tiap shift terdapat 2 bentuk soal. Bingung kan?
Jadi gini, Ujian terbagi menjadi 2 hari yaitu hari Kamis dan Jumat. Di ujian Hari Kamis dan Jumat itu dibagi menjadi 2 shift yaitu shift 1 dan shift 2. Dan tiap shift terdapat 2 bentuk soal (misal A dan B, C dan D, dst).
Di hari Kamis kemarin gue gak sempat minta soal nya. Jadi hari ke-2 ini gue dapat soal yang gak kepake. Soalnya adalah soal F. So, bagi kamu yang tadi ikut UAS dan mendapatkan soal nomor F ini akan gue share jawabannya.
Untuk soal-soal yang lain kalo udah dapat soalnya insya Allah akan gue share juga di sini.
Soal F :
- Buatlah sebuah fungsi yang menerima parameter masukan 1 buah integer positif dan mengembalikan sebuah integer yang merupakan bilangan ganjil positif ke-n, contoh bilangan ganjil positif ke-1 = 1, ke-2=3, ke-7=13, dsb, dengan catatan :
- Dilarang menggunakan loop
- Dilarang menggunakan operator * (perkalian)
Contoh : ganjil(10) akan menghasilkan 19 - Buatlah sebuah fungsi yang menerima sebuah parameter masukan sebuah string biner (basis 2), dan mengembalikannya dalam bentuk integer.
Contoh : ‘10000111’ (string) ==> 135 )
Jadi, ini loh listing programnya (kalo di soal disuruh functionnya aja, tapi ini gue share program lengkap supaya gak bingung)
.Nomor 1 (menggunakan teknik rekursif) :
uses crt; function ganjil(input:integer):integer;
|
Hasilnya :
Nomor 2 (menggunakan teknik string)
Jadi gini kan, cara mengitung kode biner :
Misal kode 10000111. Terdapat 8 karakter. Jika dengan perpangkatan berurutan dari 0, maka dihasilkan perpangkatan maksimal nya adala 7 .
10000111 = (1 * 27) + (0 * 26) +(0 * 25) +(0 * 24) +(0 * 23) +(1 * 22) +(1 * 21) +(1 * 20) = 128 + 0 + 0+ 0+ 0+ 4 + 2 + 1 = 135
uses crt; begin temp:=0; kali:=1; // c adalah besarnya pangkat dari 2 yang akan dihitung c:=length(s)-1; // akan dilakukan pengecekan string berurutan dari indeks //string 1 sampai panjang string for x:=1 to length(s) do begin // jika huruf yang ke s[x] adalah '1', maka : if s[x]='1' then begin kali:=1; if c=0 then // jika c=0 (pangkat = 0) maka kali:=1 else begin for j:=1 to c do begin // dilakukan perkalian sampai dengan pangkat c kali:=kali*2; end; end; temp:=temp+kali; end; c:=c-1; end; biner:=temp; end; var s:string; begin |
Hasilnya :
Oke. Udah pusing?? Aseek…
Untuk sementara itu dulu. Ntar kalo udah ada soal-soal lain ntar gue share deeeh. (kalo mood)
0 komentar:
Posting Komentar