Registreer FAQ Berichten van vandaag


Ga terug   Scholieren.com forum / Technologie / Software & Hardware
Reageren
 
Topictools Zoek in deze topic
Oud 18-09-2002, 16:09
Amidala
Avatar van Amidala
Amidala is offline
Probleem: Een woordenreeks moet in willekeurige volgorde gezet worden, en dan in de labels in het interface getoond worden.

Oplossing: ???

Ik kon er zou gauw niet op komen hoe dit zou moeten. Iemand die me kan helpen?
Met citaat reageren
Advertentie
Oud 18-09-2002, 16:11
Verwijderd
'randomize'

Maak een lijst aan met woorden. Elk woord krijgt een indexnummer. Randomize de lijst met nummers. Orden de woorden volgens die nummers.

Zoiets? Ik heb al jaren niet meer met VB geprogrammeerd, maar dit komt zo in me op.
Met citaat reageren
Oud 18-09-2002, 18:50
Amidala
Avatar van Amidala
Amidala is offline
Citaat:
******** schreef:
'randomize'

Maak een lijst aan met woorden. Elk woord krijgt een indexnummer. Randomize de lijst met nummers. Orden de woorden volgens die nummers.
Het gaat mij er meer om hoe ik dit in VB moet krijgen

Zover als dit was ik ook gekomen, maar om het nou ook nog werkende te krijgen was een tweede....
Met citaat reageren
Oud 18-09-2002, 19:11
Verwijderd
Citaat:
Amidala schreef:
Het gaat mij er meer om hoe ik dit in VB moet krijgen

Zover als dit was ik ook gekomen, maar om het nou ook nog werkende te krijgen was een tweede....
Ik kan je alleen maar ideeën geven, aangezien ik VB5 niet direct tot mijn beschikking heb (zou ik eerst weer moeten installeren, alleen voor jou ).

Ik zou de woorden in een string-array plaatsen. Op die manier kun je ze opvragen aan de hand van hun index. Ook weet je hoeveel woorden je hebt.

De taak is nu een random getal op te roepen tussen 1 en het aantal woorden, met de eis dat het nog niet eerder voor is gekomen. Als je dat lukt, kun je de woorden in willekeurige volgorde oproepen.

Als eerste initialiseren we de random-feed met de randomize functie. Dit doen we maar 1 keer, namelijk als het programma start.

Code:
Private Sub Form_Load()
  Randomize
End Sub
Willen we nu een willekeurig getal i tussen 1 en X, waarbij X het aantal woorden is, dan doen we dat met de rnd functie:

Code:
i = Int(X * Rnd) + 1
Tot zover niets moeilijks. Het wordt echter tricky, omdat we geen dubbele willen krijgen. Dit zou je quick'n'dirty kunnen regelen door een tweede array van integers aan te maken, allemaal met de waarde 0 (en 1 als het al geweest is). Indien een getal verkregen wordt, kun je controleren of het al geweest is, alvorens je verder gaat (bijvoorbeeld met een while-wend loop en een geneste for-loop).

Succes
Met citaat reageren
Oud 18-09-2002, 20:01
Marcade
Avatar van Marcade
Marcade is offline
Zoals ******** al zei ja, plaats het in een array, randomize de array, en dan zet je ze in je labels.

Je labels geef je dezelfde naam maar elk een apart index nummer, zodat je makkelijker je array in de labels kan stoppen.

DIM Array(3)

Randomize Timer

Array(0)="Woord1"
Array(1)="Woord2"
Array(2)="Woord3"
Array(3)="Woord4"

FOR I%=0 TO 3
Temp=Array(I%)
J%=INT(RND * 4)
Array(I%)=Array(J%)
Array(J%)=Temp
Label(I%).caption = Array(I%)
NEXT I%

en klaar.

ofzo iets dergelijks
Met citaat reageren
Oud 18-09-2002, 20:23
Amidala
Avatar van Amidala
Amidala is offline
Citaat:
Marcade schreef:
Zoals ******** al zei ja, plaats het in een array, randomize de array, en dan zet je ze in je labels.

Je labels geef je dezelfde naam maar elk een apart index nummer, zodat je makkelijker je array in de labels kan stoppen.

DIM Array(3)

Randomize Timer

Array(0)="Woord1"
Array(1)="Woord2"
Array(2)="Woord3"
Array(3)="Woord4"

FOR I%=0 TO 3
Temp=Array(I%)
J%=INT(RND * 4)
Array(I%)=Array(J%)
Array(J%)=Temp
Label(I%).caption = Array(I%)
NEXT I%

en klaar.

ofzo iets dergelijks

dit werkt zo niet.......
Met citaat reageren
Oud 18-09-2002, 20:30
Marcade
Avatar van Marcade
Marcade is offline
Citaat:
Amidala schreef:
dit werkt zo niet.......
Nee, maar het gaat om het idee.
Met citaat reageren
Oud 18-09-2002, 20:32
Verwijderd
Citaat:
Marcade schreef:
FOR I%=0 TO 3
Temp=Array(I%)
J%=INT(RND * 4)
Array(I%)=Array(J%)
Array(J%)=Temp
Label(I%).caption = Array(I%)
NEXT I%
RND alleen geeft geen garantie op unieke selectie. Je zou nu bijvoorbeeld 3,2,1,1 terug kunnen krijgen.

Misschien dat het bij 4 woorden meestal goed gaat, maar bij 1000 woorden zul je met dat algoritme niet ver komen.
Met citaat reageren
Oud 18-09-2002, 20:36
Verwijderd
Citaat:
Amidala schreef:
dit werkt zo niet.......
De bedoeling blijft uiteindelijk wel dat je het zélf doet

Tenzij je me heel lief aankijkt en ik zo nostalgisch ben om VB5 Professional uit mijn stoffige doos van oude software te halen (maar die kans is niet zo groot ).
Met citaat reageren
Oud 18-09-2002, 20:39
Marcade
Avatar van Marcade
Marcade is offline
*zucht*

www.marcade.net/Huiswerk.zip
Met citaat reageren
Oud 18-09-2002, 20:40
Marcade
Avatar van Marcade
Marcade is offline
Citaat:
******** schreef:
RND alleen geeft geen garantie op unieke selectie. Je zou nu bijvoorbeeld 3,2,1,1 terug kunnen krijgen.

Misschien dat het bij 4 woorden meestal goed gaat, maar bij 1000 woorden zul je met dat algoritme niet ver komen.
Waar heb je het over?

Ik ga elk veld langs en switch hem random met een ander veld.

Er is een kans dat die op zijn originele plek terug komt, maar dat boeit niet, die kans moet ook bestaan.
Met citaat reageren
Oud 18-09-2002, 20:43
Verwijderd
Citaat:
Marcade schreef:
Waar heb je het over?

Ik ga elk veld langs en switch hem random met een ander veld.
Ghehe

Okay, is goed Ik las er te snel overheen, zie nu wel wat je doet. Is een stuk beter dan mijn extra array
Met citaat reageren
Oud 18-09-2002, 20:43
Verwijderd
Citaat:
Amidala schreef:
dit werkt zo niet.......
Wat gaat er precies fout dan?
Met citaat reageren
Oud 18-09-2002, 20:47
Marcade
Avatar van Marcade
Marcade is offline
Citaat:
******** schreef:
Ghehe

Okay, is goed Ik las er te snel overheen, zie nu wel wat je doet. Is een stuk beter dan mijn extra array
*kick* .. ik ben beledigd.

Dacht je nou echt dat ik zoiets als

Array2(I%)=Array1(RND*20) zou doen.?

poe hee. Nee zoals je ziet, ik ga elke plek langs, en wissel de waarde om met een willekeurige waarde ergens anders in de array. Dus elk veldje word een keer ergens anders heengeplekt. Resultaat: een geshockte array met nog steeds alleen maar unieke woorden.
Met citaat reageren
Oud 18-09-2002, 20:57
Verwijderd
Citaat:
Marcade schreef:
*kick* .. ik ben beledigd.
Geniet er maar van, meneer met de geblokkeerde account door lekke server

Hmm, door het lezen van literatuur over Psychologie en Filosofie gaan mijn programmeerkunsten er niet bepaald op vooruit
Met citaat reageren
Oud 18-09-2002, 21:01
Marcade
Avatar van Marcade
Marcade is offline
Citaat:
******** schreef:
Geniet er maar van, meneer met de geblokkeerde account door lekke server

Hmm, door het lezen van literatuur over Psychologie en Filosofie gaan mijn programmeerkunsten er niet bepaald op vooruit
'k heb een collega bij IBM; (een joegoslaaf. Een hele aardige hoor. ) en hij studeert en zoekt heel veel dingen uit. (net als jou ********).

Maar bij hem heb ik soms wel is het gevoel, dat als die met een programmeerprobleem opgezadeld zit, dat die *eerst* de meest briljante en moeilijkste oplossing probeert te bedenken, met behulp van wat die allemaal geleerd heeft op school, voordat die gewoon simpel stap voor stap een oplossing zoekt.

We pesten hem soms wel is, omdat die, als je hem iets vraagt, altijd wel met een 'ja .. maaaarrr' .. of een 'neee, maaar ..' antwoord komt.

Laatst gewijzigd op 23-05-2014 om 08:47.
Met citaat reageren
Oud 18-09-2002, 21:13
Verwijderd
Citaat:
Marcade schreef:
Maar bij hem heb ik soms wel is het gevoel, dat als die met een programmeerprobleem opgezadeld zit, dat die *eerst* de meest briljante en moeilijkste oplossing probeert te bedenken, met behulp van wat die allemaal geleerd heeft op school, voordat die gewoon simpel stap voor stap een oplossing zoekt.
Je klinkt als mijn vader .. als hij over mij praat
Met citaat reageren
Oud 18-09-2002, 21:33
Marcade
Avatar van Marcade
Marcade is offline
Citaat:
******** schreef:
Je klinkt als mijn vader .. als hij over mij praat
Met citaat reageren
Oud 18-09-2002, 21:45
Verwijderd
"De mensen die het wiel opnieuw uitvinden worden niet gezocht" .. zegt hij wel eens tegen me. Daarmee bedoelt hij dat ik te veel mijn eigen oplossingen voor alles heb, in plaats van dat ik gewoon effectief een probleem oplos.

Zo heb ik voor kantoor het facturatie-systeem geprogrammeerd. Als ik dit met VB en Access had gedaan, was het misschien in 3 dagen af.

Maar nee, ik moest het per sé met BCB (C++ en statisch gelinkt) doen, zodat het programma ad hoc overal werkt. Dat ik hierdoor ook een eigen database-engine moest ontwerpen (BDE heb ik geen licenties voor) stoorde me niet

Het duurde uiteindelijk 2 weken.

Als ik ergens anders ga werken, zal ik daar dan ook hard aan moeten werken .. gewoon doen "wat de klant wil" en niet mijn eigenwijze kop doorzetten
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar

Soortgelijke topics
Forum Topic Reacties Laatste bericht
Huiswerkvragen: Exacte vakken [INF] probleempje bij programmeren in excel
Gevederde
1 08-10-2007 21:32
Huiswerkvragen: Exacte vakken Lineair Programmeren
Martijn_N
7 19-02-2003 19:03


Alle tijden zijn GMT +1. Het is nu 14:51.