Arsip: Random Table paradox

 
user image
more 13 years ago

Pontiac

saya membuat form soal dimana pertanyaannya sy ambil dari database paradox yg diinputkan. Dengan pertanyaan yang muncul secara acak(random), yg dibatasi 5 soal, dengan nilai score utk setiap pertanyaan bernilai 20. Mohon pencerahannya!!! Lepaskan dari kebuntuan ini
user image
more 13 years ago

ZeAL

hmm.... abis gak ada yang jawab... gue coba jawab deh... tapi gue kasih logikanya aja yah... 1. Buat array.. tipenya sama dengan key tabel. 2. baca satu2 record di tabel dari awal sampe akhir dan simpan ke array secara berurutan 3. Buat 1 array lagi atau TList untuk menyimpan nomer yang terpilih. 4. Dengan perulangan misalnya Repeat...Until Selesai 5. Didalemnya pake fungsi random untuk mengambil bilangan acak. sebleumnya pake fungsi Randomize biar bener2 acak. 6. Bandingkan angka terpillih dengan data yang ada didalam TList 7.a. Kalo udah ada, jangan lakukan apa2 dan lanjutkan perulangan. 7.b. Kalo belon ada, naikan nomer index dan masukan angka terpilih kedalam array penampung 8. Kalo data didalam array sudah ada 5 (buat fungsi pengecekan sendiri aja), maka isi variabel Selesai dengan true untuk keluar dari looping. 9. Berdiri sambil teriak "GUE BISAAA!" sebanyak minimal 5 kali... makin banyak, akan makin bagus Untuk mengakses, cukup ambil angka di array penampung dan jadikan angka tersebut sebagai nomer index di array utama untuk memperoleh key tabel.. Abis itu tinggal pake fungsi findkey deh.... Gitu aja ah... Sorry kalo gak optimized... gak pake mikir2 lama soalnya.. hehehe.. :D gudLuck!
user image
more 13 years ago

DelphiExpert

record dalam dataset sebenernya udah berupa array. tinggal akses aja. ok untuk me-minimalisir penggunaan memory simpan pointer merujuk ke record index aja (optimisasi tdk pada speed). sample:

const MaxSoal = 5;
type TIntArray5 = array  of Integer;
var Soal5: TIntArray5;
simple array finding:

function IntValueExists(Source: TIntArray5; Value: Integer): Boolean;
var I: Integer;
begin
  Result:= True;
  for I:= 0 to Pred(MaxSoal) do
    if (Source[I] = Value) then Exit;
  Result:= False;
end;
implementasi:

procedure BuildRandomData;
var I, Rec: Integer;
begin
Randomize;
I:= 0;
while I < MaxSoal do begin
  Rec:= RandomRange(1, Table1.RecordCount);
  if not IntValueExists(Soal5, Rec) then begin
    Soal5[I]:= Rec;
    Inc(I);
  end;
end;
end;
ok the core functions done... Trus penggunaannya: * Utk nampilin daftar pertanyaan:

for I:= 0 to Pred(MaxSoal) do begin
  Table1.RecNo:= Soal5[I];
  Memo1.Lines.add(IntToStr(I+1) + '. ' + Table1.FindField('SOAL').AsString);
end;
So... untuk liat kunci jawabannya ente juga pake cara diatas, but ngeliat di field KUNCI wakakak... Ok moga2 tercerahkan... Best Regards - DelphiExpert :lol:
user image
more 13 years ago

ZeAL

OIA, Gue lupa kalo bisa langsung merajuk ke record yang diinginkan... Tuh, sampe kodenya dibikinin... Pontiac sembah sujud dulu yah buat si DE... hehehe.. :D
user image
more 13 years ago

DelphiExpert

Wakakakak... bisa aja lu ZeAL :mrgreen: Iyaaa... jangan lupa nama ane di sebutin di credit-title ya wakakakakak...
more ...
  • Pages:
  • 1
Share to
Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com