Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   probleem met array in qbasic (https://forum.scholieren.com/showthread.php?t=12655)

11001-110 15-12-2001 18:08

probleem met array in qbasic
 
Ik zit met een klein probleempje, ik moet voor wiskunde iets in qbasic programmeren, gedeeltelijk lukt het wel, maar gedeeltelijk niet.
Ik moet een soort kunstwerk programmeren, het is een kunstwerk oorspronkelijk van Ellsworth Kelly (de 'Seine'), in dit kunstwerk zit een bepaalde structuur, het is horizontaal in kolommen verdeeld(kolommen voor waarden van x, dus kolommen lopen zelf verticaal), in de eerste kolom komt 1 blokje op een random y-hoogte, in de 2e kolom 2 blokjes, 3e kolom 3 etc, totdat de kolom volledig gevuld is, daarna moet hij echter weer aflopen.
Dit is wat ik tot nu toe heb:
CLS
SCREEN 9
WINDOW (-2, -2)-(6, 6)
randomize timer
for x = 0 to 4
for q = 1 to (x + 1)
T = x + 1
y = INT(RND * 5)
LINE (x, y)-((x+1), (y+1)), T, BF
next q
next x
end

Dit is natuurlijk nog heel erg simpel, en in deze code zit dus het probleem dat hij als hij een vlakje heeft ingekleurd, daarna weer random een y-hoogte kiest, en dus weer over het eerst-gekleurde vlakje heen kan kleuren, dat moet ik dus zien te voorkomen. De y-waarden van eerder gekleurde vlakjes moeten worden uitgeschakeld, dat lukt me alleen niet, helaas
Weet iemand wat ik ermee moet doen??
Alvast bedankt...


ik snap trouwens wel dat ik iets met arrays moet doen, alleen lukt dat nog niet zo goed..
hopelijk kan iemand me helpen


Doc 15-12-2001 18:43

't is heel lang geleden dat ik daarmee werkte...maar dit moet 't ongeveer zijn..

Code:

Dim Shared ArrayY(10000) '10000 Zal denk ik wel goed zijn.

' Plaats een getal in de Array
Sub SetYCoord(val1 As Integer)
  ArrayY(UBound(ArrayY)+1) = val1
End Sub

' Kijk of ie al bestaat, zo ja return = 1
Function CheckYCoord(val1 As Integer) As Integer
  For i = 1 To UBound(ArrayY)
    If ArrayY(i) = val1 Then
      CheckYCoord = 1
      Exit Function
    End If
  Next i
  CheckYCoord = 0
End Function

Ik hoop dat 't nog een b-tje werkt, 't is ongetest http://forum.scholieren.com/wink.gif

11001-110 15-12-2001 19:29

in ieder geval heel erg bedankt, ik zal het proberen !

11001-110 15-12-2001 22:32

het lukt nog niet echt, hoe kan ik dit implanteren in die code die ik al had geschreven (die eigenlijk nog niets voorstelde)?

Doc 16-12-2001 14:11

Nou dan probeer ik 't wel ff voor je te schrijven....

Code:

Dim Shared ArrayY(10000) '10000 Zal denk ik wel goed zijn.

' Plaats een getal in de Array
Sub SetYCoord(val1 As Integer)
  ArrayY(UBound(ArrayY)+1) = val1
End Sub

' Kijk of ie al bestaat, zo ja return = 1
Function CheckYCoord(val1 As Integer) As Integer
  For i = 1 To UBound(ArrayY)
    If ArrayY(i) = val1 Then
      CheckYCoord = 1
      Exit Function
    End If
  Next i
  CheckYCoord = 0
End Function

CLS
SCREEN 9
WINDOW (-2, -2)-(6, 6)
RANDOMIZE TIMER
FOR x = 0 TO 4
  FOR q = 1 TO (x + 1)
    T = x + 1
fallback:
    y = INT(RND * 5)
    IF CheckYCoord(y) = 1 THEN GOTO fallback
    LINE (x, y)-((x+1), (y+1)), T, BF
  NEXT q
NEXT x
END

LET OP: Er zit geen einde aan 't script, dus 't zal continu door zoeken in de array tot 'ie een niet bestaande Y-Coord heeft gevonden. Als alles gebruikt is blijft ie nog wel doorzoeken, zonder resultaat uiteraard. Je zult 'm daarom zelf moeten afbreken, of een exception in moeten bouwen.

11001-110 29-12-2001 15:13

Hey,

sorry dat ik niet eerder kon antwoorden, mijn computer was kapot, en met alle drukte rondom kerst e.d. duurde het nogal lang.
In ieder geval hartstikke bedankt voor de moeite, maar deze code werkt niet...
Heeft iemand enig idee hoe ik het anders wel zou kunnen doen, zodat het wel zou werken ?
Bij voorbaat dank!

MmmaartennN 30-12-2001 00:11

Citaat:

11001-110 schreef:
Hey,

sorry dat ik niet eerder kon antwoorden, mijn computer was kapot, en met alle drukte rondom kerst e.d. duurde het nogal lang.
In ieder geval hartstikke bedankt voor de moeite, maar deze code werkt niet...
Heeft iemand enig idee hoe ik het anders wel zou kunnen doen, zodat het wel zou werken ?
Bij voorbaat dank!

Als je de code een beetje aanpast werkt het misschien wel... Wat is de error msg? (als die er is) De code is overigens niet af, het is een oneindige lus. Je moet het dus iig zelf nog een beetje bewerken.

Cybernetic Dreams 30-12-2001 10:36

Code:

„*SCREEN 12
„*RANDOMIZE TIMER
„*DIM c(64, 96)
„*
„*
„*loopje:
„*aant = aant + 1
„*
„*xx = xx + 1
„*IF xx = 64 THEN END
„*
„*
„*IF aant < 12 THEN
„*FOR k = 0 TO aant
„*nieuwgetal1:
„*yy = INT(RND * 96)
„*FOR x = 0 TO 64
„*IF c(x, yy) = 1 THEN GOTO nieuwgetal1
„*NEXT x
„*c(xx, yy) = 1
„*c(23 - xx, yy) = 1
„*NEXT k
„*END IF
„*
„*
„*FOR x = 0 TO 64
„*FOR y = 0 TO 96
„*IF c(x, y) = 1 THEN LINE (x * 10, y * 5)-(x * 10 + 9, y * 5 + 4), 15, BF
„*NEXT y
„*
„*
„*NEXT x
„*LOCATE 1, aant: PRINT aant
„*GOTO loopje


Marc S 30-12-2001 11:31

Citaat:

Doc schreef:
't is heel lang geleden dat ik daarmee werkte...maar dit moet 't ongeveer zijn..

Doc, wat onder Visual Basic werkt, hoeft nog lang niet te werken onder QBASIC http://forum.scholieren.com/tongue.gif

Vooral het werken met functions die directe waardes retourneren, kent QBASIC niet. Je hebt wel GOSUB en EXIT SUB geloof ik, maar meer niet.

't is voor mij ook erg lang geleden (nu al bijna 6 jaar), maar geloof dat dit het probleem is hier http://forum.scholieren.com/smile.gif

McMotion 30-12-2001 14:18

volgens mij kan je wel functions maken die waardes teruggeven onder qbasic hoor (tenminste is wat ik mij van quickbasic herinner, en volgens mij is de taal precies hetzelfde)

'k weet het niet zeker maar zoiets kan ik me nog wel herinneren

McMotion 30-12-2001 14:20

Citaat:

Cybernetic Dreams en Doc schreven:
GOTO

wat is dit nou weer kinders, iedereen heeft het net met moeite uit z'n hoofd gekregen en nu wordt het gebruikt als voorbeeld!? http://forum.scholieren.com/smile.gif

Marc S 30-12-2001 14:33

Citaat:

McMotion schreef:
wat is dit nou weer kinders, iedereen heeft het net met moeite uit z'n hoofd gekregen en nu wordt het gebruikt als voorbeeld!? http://forum.scholieren.com/smile.gif
LoL http://forum.scholieren.com/biggrin.gif

Trouwens over het gebruik van functies: er was wel iets inderdaad, maar niet in de stijl waarop Doc het voorgeeft. Ik werkte ook vooral met PowerBASIC...

Na ja, boeit me ook niet echt meer. Ik voel me net alsof ik terug in de steentijd ga ofzo http://forum.scholieren.com/biggrin.gif

11001-110 30-12-2001 19:04

In ieder geval hartstikke bedankt voor jullie replies, vooral van Cybernetic Dreams!
Dit komt namelijk heel aardig in de richting waar ik het moet hebben http://forum.scholieren.com/smile.gif

En ja, ik weet dat Qbasic nou niet echt meer de meest gebruikte taal is om te programmeren. Maar het is gewoon een opdracht voor wiskunde, waar het vooral om de wiskundige aspecten van het programmeren gaat, dus om de wiskunde erachter te leren.
En daarvoor is qbasic denk ik wel geschikt, al is het natuurlijk eigenlijk best wel uit de steentijd http://forum.scholieren.com/biggrin.gif

Chimera 31-12-2001 16:23

Beetje wel. Maar Basic is een prachttaal als het op het snel leren van programmeren aankomt.

Jammer is dat je jezelf de verkeerde dingen aanleert (GOTO is very VERY evil) maar dat terzijde http://forum.scholieren.com/biggrin.gif

11001-110 31-12-2001 16:43

Citaat:

Chimera schreef:
Jammer is dat je jezelf de verkeerde dingen aanleert (GOTO is very VERY evil) maar dat terzijde http://forum.scholieren.com/biggrin.gif


Ik weet het, qbasic is ook alleen maar even voor tijdelijk, alleen even een opdracht voor wiskunde, verder wil ik er niets mee.
Het is me nu eindelijk wel gelukt met die array's !! Dus in ieder geval hartstikke bedankt voor alle hulp. Er zijn nu wel weer andere problemen, maar dat komt wel goed....hoop ik... http://forum.scholieren.com/biggrin.gif
Maar welke programmeertalen zou je aanraden voor dit soort opdrachten?
Zelf ben ik ook meer bezig met java en sql (maar kan het ook nog niet echt goed, maar al vallende leert men he...)
Leraar wilde graag dat ik dit in qbasic deed.



Alle tijden zijn GMT +1. Het is nu 19:39.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.