[ 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... |
[ Sloba96 @ 18.11.2008. 18:17 ] @
[ 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: Kako da stavim u ovaj kod random funkciju da se pitanja nasumicno smenjuju?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 [ Aleksandar Ružičić @ 18.01.2009. 11:38 ] @
Code: x = GetRandom(LBound(pitanje), UBound(pitanje)) [ zzzzeljko @ 18.01.2009. 16:29 ] @
Code: Probao sam ovako. E sad, nekad mi se pri menjanju pitanja dogodi da se pojave dva ista pitanja za redom.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 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: Stavio sam nesto samo sa dva pitanja da probam, ali meni se pojavljuje neka greska....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 [ zzzzeljko @ 19.01.2009. 14:55 ] @
Code: Ne znam zasto mi ne radi, pise Comple error: Method or data member not found.....Molim Vas, pomoc!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 [ 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: - inace ovo je crvene bojeDim min As Long=LBound(pitanje) Dim max As Long=UBound(pitanje) 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: Ovde mi je obelezeno SledecePitanje i pise Invalid use of propertytrenutnoPitanje = -1 SledecePitanje ' ucitavas sledece (prvo) pitanje End Sub [ 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?
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|