[ Sloba96 @ 18.11.2008. 18:17 ] @
Pravim neki kviz pa mi to treba ako neko ovo zna neka mi kaze i ako je bilo reci o ovome nemojte da mi zamerite za to sto nemam brz net pa nemogu da pregledam sve...
[ Blue82 @ 18.11.2008. 18:57 ] @
Cao Slobo, ti si mi omiljen ovde!
Code:

Randomize
Broj_pitanja = Int(1 + 9 * Rnd)


Promenjaiva Broj_pitanja ce ti dati nasumicni broj pitanja u ovom slucaju od 1 do 9. Ti postavi da bira od 1 do onog broja koliko gotovih pitanja imas znaci ako imas 100 pitanja bice 1+100 a ako imas 3 pitanj bice 1+3

Pozdrav!
[ dava @ 18.11.2008. 22:11 ] @
Da, samo ta funkcija ima manu, a to je da svakim ponovnim startanjem programa daje isti niz random brojeva.
ali uz malu doradu...

Code:

Public Function Random() As Long
Dim Broj As Integer

  'Broj = Minute(Now) & Second(Now)
  Broj = Second(Now)
  Random = Int((Broj * Rnd) + Second(Now))

End Function
[ Blue82 @ 18.11.2008. 23:27 ] @
Ona funkcija Dava nema manu! Imala bi tu manu da nema naredbe randomize koja na osnovu vremena sistemskog sata racuna slucajni broj te on s toga NIKADA nece biti isti svakim ponovnim startovanjem. A sem toga tvoj kod nema ni ogranicenje broja pitanja.
Poz!



[Ovu poruku je menjao Blue82 dana 19.11.2008. u 00:39 GMT+1]
[ Aleksandar Ružičić @ 19.11.2008. 00:25 ] @
to se uglavnom radi ovako:
Code:

Randomize Timer ' ovo ubaciti u Form_Load ili Sub Main (zavisi sta je entry-point)
...

Function GetRandom(min As Long, max As Long) As LOng
   GetRandom = Int((max - min + 1)*RNd) + min
ENd Function

i gde ti treba random broj u opsegu (na primer) od 1 do 10 pozivas:
Code:

GetRandom(1, 10)
[ Sloba96 @ 19.11.2008. 13:27 ] @
e hvala puno ljudi to je to
[ dava @ 19.11.2008. 20:06 ] @
Moja greska ;)
[ zzzzeljko @ 18.01.2009. 11:26 ] @
Code:
Public tacno As Integer



Private Sub cmdSledece_Click()



If Frame1.Caption = "Pitanje broj 1" And Form1.Option1.Value = True Then tacno = tacno + 1
If Frame1.Caption = "Pitanje broj 2" And Form1.Option3.Value = True Then tacno = tacno + 1
If Frame1.Caption = "Pitanje broj 3" And Form1.Option1.Value = True Then tacno = tacno + 1

MsgBox "Tacnih odgovora " & tacno

Call Form_Load



End Sub

Private Sub Form_Load()

Dim pitanje(0 To 2, 0 To 3) As String


pitanje(0, 0) = "Koji je nas najtrofejniji fudbalski klub?"
pitanje(0, 1) = "Crvena zvezda"
pitanje(0, 2) = "Partizan"
pitanje(0, 3) = "Obilic"
pitanje(1, 0) = "Sta je brze ili zec?"
pitanje(1, 1) = "Zec"
pitanje(1, 2) = "Ili"
pitanje(1, 3) = "Nista od svega"
pitanje(2, 0) = "Koje od navedenih boja nije osnovna?"
pitanje(2, 1) = "Bela"
pitanje(2, 2) = "Plava"
pitanje(2, 3) = "Zuta"





Form1.lblPitanje.Caption = pitanje(x, 0)
Form1.Option1.Caption = pitanje(x, 1)
Form1.Option2.Caption = pitanje(x, 2)
Form1.Option3.Caption = pitanje(x, 3)
Form1.Frame1.Caption = "Pitanje broj " & x + 1

End Sub

Kako da stavim u ovaj kod random funkciju da se pitanja nasumicno smenjuju?
[ Aleksandar Ružičić @ 18.01.2009. 11:38 ] @
Code:

x = GetRandom(LBound(pitanje), UBound(pitanje))
[ zzzzeljko @ 18.01.2009. 16:29 ] @
Code:

Public tacno As Integer



Private Sub cmdSledece_Click()



If Frame1.Caption = "Pitanje broj 1" And Form1.Option1.Value = True Then tacno = tacno + 1
If Frame1.Caption = "Pitanje broj 2" And Form1.Option3.Value = True Then tacno = tacno + 1
If Frame1.Caption = "Pitanje broj 3" And Form1.Option1.Value = True Then tacno = tacno + 1

MsgBox "Tacnih odgovora " & tacno

Call Form_Load



End Sub

Function RandomPitanje() As Integer

Randomize Timer

RandomPitanje = (Int((5 * Rnd)))

End Function


Private Sub Form_Load()

Dim pitanje(0 To 2, 0 To 3) As String


pitanje(0, 0) = "Koji je nas najtrofejniji fudbalski klub?"
pitanje(0, 1) = "Crvena zvezda"
pitanje(0, 2) = "Partizan"
pitanje(0, 3) = "Obilic"
pitanje(1, 0) = "Sta je brze ili zec?"
pitanje(1, 1) = "Zec"
pitanje(1, 2) = "Ili"
pitanje(1, 3) = "Nista od svega"
pitanje(2, 0) = "Koje od navedenih boja nije osnovna?"
pitanje(2, 1) = "Bela"
pitanje(2, 2) = "Plava"
pitanje(2, 3) = "Zuta"


x=RandomPitanje()


Form1.lblPitanje.Caption = pitanje(x, 0)
Form1.Option1.Caption = pitanje(x, 1)
Form1.Option2.Caption = pitanje(x, 2)
Form1.Option3.Caption = pitanje(x, 3)
Form1.Frame1.Caption = "Pitanje broj " & x + 1

End Sub
Probao sam ovako. E sad, nekad mi se pri menjanju pitanja dogodi da se pojave dva ista pitanja za redom.
Moze li to nekako da se ispravi?
[ Aleksandar Ružičić @ 18.01.2009. 20:45 ] @
moze da se ispravi naravno, za pocetak bih ti predlozio da umesto vise-dimenzionalnih nizova koristis udt (user define type):
Code:

Type Question
   Text   As String                ' text pitanja
   Answer(0 to 2) As String    ' niz ponudjenih odgovora
   CorrectAnswer As Long       ' index tacnog odgovora
End Type

....

Dim pitanje(0 to 5) As Question

pitanje(0).Text = "tekst pitanja"
pitanje(0).Answer(0) = "odgovor A"
pitanje(0).Answer(1) = "odgovor B"
pitanje(0).Answer(2) = "odgovor C"
pitanje(0).CorrectANswer = 1 ' recimo da je tacan odgovor pod B
.....

Dim i As Long, x as Long, tmp As Question
Dim min As Long = LBound(pitanje)
Dim max As Long = UBound(pitanje)

For i = min to max
   x = GetRandom(min, max)
   tmp = pitanje(x)
   pitanje(x) = pitanje(i)
   pitanje(i) = tmp
Next

sada ce ti niz pitanje biti izmesan i mozes da ga citas clan po clan (prvo pitanje(0) pa pitanje(1)....) i (skoro) uvek ce biti drugaciji redosled pitanja a neces imati ponavljanja pitanja (dok ne "ispucas" sva pitanja iz niza)
[ zzzzeljko @ 19.01.2009. 10:39 ] @
Code:
Type Question
   Text   As String                ' text pitanja
   Answer(0 To 2) As String    ' niz ponudjenih odgovora
   CorrectAnswer As Long       ' index tacnog odgovora
End Type

Private Sub Command1_Click()
Dim i As Long, x As Long, tmp As Question
Dim min As Long=LBound(pitanje)
Dim max As Long=UBound(pitanje)
For i = min To max
   x = GetRandom(min, max)
   tmp = pitanje(x)
   pitanje(x) = pitanje(i)
   pitanje(i) = tmp
Next

End Sub

Private Sub Form_Load()

Dim pitanje(0 To 2) As Question

pitanje(0).Text = "Koliko ima dana u godini?"
pitanje(0).Answer(0) = "356"
pitanje(0).Answer(1) = "odgovor B"
pitanje(0).Answer(2) = "odgovor C"
pitanje(0).CorrectAnswer = 1
pitanje(1).Text = "Wind of change je pesma grupe?"
pitanje(1).Answer(0) = "Children of Bodom"
pitanje(1).Answer(1) = "Aerosmith"
pitanje(1).Answer(2) = "Scorpions"
pitanje(1).CorrectAnswer = 3

End Sub
Stavio sam nesto samo sa dva pitanja da probam, ali meni se pojavljuje neka greska....
[ zzzzeljko @ 19.01.2009. 14:55 ] @
Code:
Public tacno As Integer 
Dim pitanje(0 To 2, 0 To 4) As String 



Private Sub cmdSledece_Click() 

For i = 0 To 2 

    If Form1.lblPitanje.Caption = pitanje(i, 0) And Form1.Option1(pitanje(i, 4)).Value = True Then tacno = tacno + 1 
Next i 

MsgBox "Tacnih odgovora " & tacno 
Call ime_funkcije ()

End Sub 

Private Sub Form_Load() 
tacno = 0 

pitanje(0, 0) = "Koji je nas najtrofejniji fudbalski klub?" 
pitanje(0, 1) = "Crvena zvezda" 
pitanje(0, 2) = "Partizan" 
pitanje(0, 3) = "Obilic" 
pitanje(0, 4) = "1" 
pitanje(1, 0) = "Sta je brze ili zec?" 
pitanje(1, 1) = "Zec" 
pitanje(1, 2) = "Ili" 
pitanje(1, 3) = "Nista od svega" 
pitanje(1, 4) = "3" 
pitanje(2, 0) = "Koje od navedenih boja nije osnovna?" 
pitanje(2, 1) = "Plava" 
pitanje(2, 2) = "Bela" 
pitanje(2, 3) = "Zuta" 
pitanje(2, 4) = "2" 

Call ime_funkcije ()
End Sub 

Function RandomPitanje() As Integer 

Randomize 

RandomPitanje = Int(1 + 3 * Rnd) 

End Function 

Private Function ime_funkcije() 

x = RandomPitanje() 


Form1.lblPitanje.Caption = pitanje(x, 0) 
Form1.Option1(1).Caption = pitanje(x, 1) 
Form1.Option1(2).Caption = pitanje(x, 2) 
Form1.Option1(3).Caption = pitanje(x, 3) 
Form1.Frame1.Caption = "Pitanje broj " & x + 1 

End Function
Ne znam zasto mi ne radi, pise Comple error: Method or data member not found.....Molim Vas, pomoc!
[ Aleksandar Vasic @ 19.01.2009. 15:25 ] @
na koju liniju prijavljuje gresku?
[ zzzzeljko @ 19.01.2009. 16:13 ] @
Na private function ime_funkcije ()....
[ Aleksandar Ružičić @ 19.01.2009. 18:20 ] @
problem sa tvojim kodom (ovim sto koristi udt) je sto si niz pitanje deklarisao kao privatnu promenljivu metode Form_Load a kasnije pokusavas da joj pristupis iz druge metode (gde ta promenljiva nije vidljiva, i gde ne postoji).
Potrebno je da taj niz definises na nivou modula (forme tj) tako da bi bio vidljiv u svim metodama forme, takodje, kod za mesanje niza treba da pozoves samo jedanput.

Ovako nekako:
Code:

Type Question
   Text   As String                ' text pitanja
   Answer(0 To 2) As String    ' niz ponudjenih odgovora
   CorrectAnswer As Long       ' index tacnog odgovora
End Type

Dim pitanje(0 To 1) As Question
Dim trenutnoPitanje As Long

Private Sub SledecePitanje()

   trenutnoPitanje = trenutnoPitanje + 1
   If trenutnopitanje > UBOund(pitanje) then trenutnoPitanje = 0 ' obrnuo si krug...

   lblPitanje.Caption = pitanje(trenutnoPitanje).Text
   Option1(1).Caption = pitanje(trenutnoPitanje).Answer(0)
   Option1(2).Caption = pitanje(trenutnoPitanje).Answer(1)
   Option1(3).Caption = pitanje(trenutnoPitanje).Answer(2)
   Frame1.Caption = "Pitanje broj " & (trenutnoPitanje + 1) 

End Sub

Private Sub Form_Load()

pitanje(0).Text = "Koliko ima dana u godini?"
pitanje(0).Answer(0) = "356"
pitanje(0).Answer(1) = "odgovor B"
pitanje(0).Answer(2) = "odgovor C"
pitanje(0).CorrectAnswer = 0
pitanje(1).Text = "Wind of change je pesma grupe?"
pitanje(1).Answer(0) = "Children of Bodom"
pitanje(1).Answer(1) = "Aerosmith"
pitanje(1).Answer(2) = "Scorpions"
pitanje(1).CorrectAnswer = 2


Dim i As Long, x As Long, tmp As Question
Dim min As Long=LBound(pitanje)
Dim max As Long=UBound(pitanje)
For i = min To max
   x = GetRandom(min, max)
   tmp = pitanje(x)
   pitanje(x) = pitanje(i)
   pitanje(i) = tmp
Next

trenutnoPitanje = -1

SledecePitanje ' ucitavas sledece (prvo) pitanje

End Sub
[ zzzzeljko @ 19.01.2009. 18:36 ] @
Ne moze da mi se pokrene program zbog ovog dela koda
Code:
Dim min As Long=LBound(pitanje)
Dim max As Long=UBound(pitanje)
- inace ovo je crvene boje
Plus pise greska Compile error - Cannot define a Public-user defined type within private object module


[Ovu poruku je menjao zzzzeljko dana 19.01.2009. u 19:54 GMT+1]
[ Aleksandar Ružičić @ 19.01.2009. 20:52 ] @
umesto Type Question stavi Private Type Question a tu min/max deklaraciju pokusaj sam da napises ispravno...
[ zzzzeljko @ 20.01.2009. 09:01 ] @
Code:

trenutnoPitanje = -1

SledecePitanje ' ucitavas sledece (prvo) pitanje

End Sub
Ovde mi je obelezeno SledecePitanje i pise Invalid use of property
[ Aleksandar Ružičić @ 20.01.2009. 17:43 ] @
ajd'mo ovako: SledecePitanje smo definisali kao funkciju, pitanje za milion dolara: sta se radi sa funkcijama?