[QBasic] Error 477: Syntax error

Pagina: 1
Acties:
  • 174 views sinds 30-01-2008
  • Reageer

  • rvanlooijen
  • Registratie: Oktober 2001
  • Laatst online: 21-06-2021
De fout zit in het regeltje: p[1]=rnd[55]
in QBasic dus, kan iemand mij vertellen wat hier
fout aan is? Complete code:

begin:
p[1]=rnd[55]
p[2]=rnd[55]
p[3]=rnd[55]
p[4]=rnd[55]
p[5]=rnd[55]
p[6]=rnd[55]
p[7]=rnd[55]
p[8]=rnd[55]


b=0
a=1
for j=1 to 9
for i=1 to 8
a=a*p[i]-p[j] ; als er een aantal gelijk is word dan a=0
next i
b=b+p[j] ; b= aantal handen totaal
next j
if a<>0 and b<=55 then goto end

goto begin


einde:

print p[1..8]

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

het is echt al eeuwen geleden dat ik iets met basic heb gedaan, maar volgens mij moet je toch eerst even een array declareren.

  • rvanlooijen
  • Registratie: Oktober 2001
  • Laatst online: 21-06-2021
Op vrijdag 21 december 2001 20:55 schreef Alarmnummer het volgende:
het is echt al eeuwen geleden dat ik iets met basic heb gedaan, maar volgens mij moet je toch eerst even een array declareren.
Sorry je zal me iets verder moeten begeleiden, ik heb erg noob kwa programmeren, kom nie veel verder dan batch ;)

Ik heb deze code van iemand anders gehad en deze op wat punten aangepast (zaten een paar fouten in die ik zelf heb weten te verhelpen *trots* ;) nou ok met beetje hulp dan ;) )

Maareh, laat ik het zo stellen: wat moet ik aan deze code aanpassen om deze te laten werken?

Heb je icq of msn ofzo? Zou je me hierbij even kunnen helpen? Moet toch niet al te veel aanpassingen vereisen, toch?

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 16:17

johnwoo

3S-GTE

Basic gebruikt ronde, geen rechte haken voor array indices...

En "print p[1..8]" zal ie ook niet slikken... daar moet je toch echt even een loopje voor maken...

En dan ten derde :) rnd() is een functie (maar toch mag je d8 ik de haakjes weglaten) die géén argumenten meekrijgt en een waarde van 0 tot (niet t/m) 1 teruggeeft. Als je een willekeurig getal tussen 0 en 55 wil kun je deze code gebruiken: p(i) = int(rnd * 56) Of voor een waarde tussen 1 en 55: p(i) = int(rnd * 55) + 1

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


Verwijderd

T is niet helemaal QBASIC. Je moet ( ) gebruiken ipv [ ] en eerst dim-en.

Voor random geheel getal 1-55:

Eerst n keer RANDOMIZE TIMER
Dan TEST = INT(RND * 55) + 1

  • rvanlooijen
  • Registratie: Oktober 2001
  • Laatst online: 21-06-2021
Eerst dimmen? OMG mensen ik kan dit tot mijn spijt echt niet volgen, sorry :) Ik ken die hele taal niet ook verder, ik kreeg die code van iemand en een ander reageerde dat deze met wat kleine aanpassingen wel aan de praat te krijgen moet zijn. Het is dus de bedoeling dat ik het als QBasic kan compilen...

Zou er iemand zo vriendelijk willen zijn deze code even voor me te herschrijven zo dat ik hem direct kan compileren zeg maar?

dankje :*

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 16:17

johnwoo

3S-GTE

Dimmen van non-array variabelen hoeft niet per se in QBasic. De Option Explicit switch is pas in VB geintroduceerd. Het zou natuurlijk wel netter zijn maar dat laat ik als oefening aan jou zelf over :Y) het is iig niet noodzakelijk voor een goede werking van het proggel.

Stukje code: (ik hoop dat je met die rnd inderdaad een random getal bedoelde)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
allereerstebegin:
dim p(8)
randomize timer

begin:
p(1) = int(rnd * 56)
p(2) = int(rnd * 56)
p(3) = int(rnd * 56)
p(4) = int(rnd * 56)
p(5) = int(rnd * 56)
p(6) = int(rnd * 56)
p(7) = int(rnd * 56)
p(8) = int(rnd * 56)


b = 0
a = 1
for j = 1 to 9
for i = 1 to 8
a = a * p(i) - p(j) ' als er een aantal gelijk is word dan a = 0
next i
b = b + p(j) ' b= aantal handen totaal
next j
if a <> 0 and b <= 55 then goto einde

goto begin

einde:

for i = 1 to 8
  print p(i)
next i

[edit] Aangezien je ook nog wel eens naar begin wil springen kan het grootste deel eigenlijk wel in een loopje worden gezet... Versie 2 :)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
dim p(8)
randomize timer

do
  p(1) = int(rnd * 56)
  p(2) = int(rnd * 56)
  p(3) = int(rnd * 56)
  p(4) = int(rnd * 56)
  p(5) = int(rnd * 56)
  p(6) = int(rnd * 56)
  p(7) = int(rnd * 56)
  p(8) = int(rnd * 56)


  b = 0
  a = 1
  for j = 1 to 9
    for i = 1 to 8
    a = a * p(i) - p(j) ' als er een aantal gelijk is word dan a = 0
    next i
    b = b + p(j) ' b= aantal handen totaal
  next j
loop until a <> 0 and b <= 55

for i = 1 to 8
  print p(i)
next i

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


Verwijderd

Ok, komt ie :) (updated)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Dim p(9) As Integer
Dim a as Double
Randomize Timer

Begin:

For i = 1 To 8
    p(i) = Int(Rnd * 55) + 1
Next i

b = 0
a = 1

For j = 1 To 9
    For i = 1 To 8
      a = a * p(i) - p(j) 'als er een aantal gelijk is word dan a=0
    Next i
    b = b + p(j) 'b = aantal handen totaal
Next j

If a <> 0 And b <= 55 Then GoTo Einde
GoTo Begin

Einde:

For i = 1 To 8
    Print p(i)
Next i

[edit]
Net te laat :)

  • rvanlooijen
  • Registratie: Oktober 2001
  • Laatst online: 21-06-2021
Hmmm, thx, ja was random ja... Krijg error 6: overflow in regel:

a = a * p(i) - p(j) ' als er een aantal gelijk is word dan a = 0

Noob opmerking: is die regel niet gewoon te lang met dat commentje??

Ben weer ant proberen te compilen :)

  • rvanlooijen
  • Registratie: Oktober 2001
  • Laatst online: 21-06-2021
Dev je eerste regel met Dim bevat een syntax error :)

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 16:17

johnwoo

3S-GTE

Op vrijdag 21 december 2001 21:30 schreef caesartje het volgende:
Hmmm, thx, ja was random ja... Krijg error 6: overflow in regel:

a = a * p(i) - p(j) ' als er een aantal gelijk is word dan a = 0

Noob opmerking: is die regel niet gewoon te lang met dat commentje??
Nee, regels mogen vrij lang zijn :) (als het nog in de editor past moet het kunnen ;) )
Het standaardtype is Integer, die gaat van -32768 tot +32767. Waarschijnlijk wordt dat getal dus groter dan 32767. Om dit op te lossen kan je van a een long maken door overal a te veranderen in a&, of bovenaan de code "DEFLNG a" (zonder de kwootjes) te zetten.


[edit] Dev, het is geen VB he ;)

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


  • rvanlooijen
  • Registratie: Oktober 2001
  • Laatst online: 21-06-2021
OK ik heb nu versie 2 van johnwoo gebruikt, compilen en alles gaat nu perfect, maar wanneer ik het proggie draai krijg ik "Error 6 at pgm-ctr: 826"

Ik begin mezelf een zeer lastige klant te voelen >:) ;)

Verwijderd

[edit] Dev, het is geen VB he ;)
Wat is er dan VB aan mijn code :P
Net even een typo verbeterd trouwens

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 16:17

johnwoo

3S-GTE

Op vrijdag 21 december 2001 21:37 schreef caesartje het volgende:
OK ik heb nu versie 2 van johnwoo gebruikt, compilen en alles gaat nu perfect, maar wanneer ik het proggie draai krijg ik "Error 6 at pgm-ctr: 826"
Heb je in het project ook een module pgm-ctr.bas zitten? Zo ja, kijk daar eens op regel 826... Zo nee, dan kan het aan vanalles liggen. Gebruik je nog extra libraries of include files? Grote kans dat het dan niet eens aan jouw code ligt.

Ik ben er weer vandoor, dus ik laat je verder aan de goede zorgen van dev et al over ;)

[edit]
Wat is er dan VB aan mijn code :P
Net even een typo verbeterd trouwens
code:
1
Dim p(8) As Integer

Geen As clausules in declaraties in QBasic (8>
Je moet of telkens het type character gebruiken (bijv & voor long, $ voor string etc), of DEFLNG <varnaam>, DEFSTR <varnaam> etc gebruiken.

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


  • rvanlooijen
  • Registratie: Oktober 2001
  • Laatst online: 21-06-2021
k thx mensen, nee het genoemde stukje code hier is het enige stukje van het hele "project" daar heb ik verder geen enkele losse module bij en al helemaal niet zo'n bas file :)

Kan het aan me compiler liggen?
(firstbas) en zo ja kan iemand een andere aanbevelen?

Ohw enne, nog bedankt john :)

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 16:17

johnwoo

3S-GTE

Op vrijdag 21 december 2001 21:45 schreef caesartje het volgende:
k thx mensen, nee het genoemde stukje code hier is het enige stukje van het hele "project" daar heb ik verder geen enkele losse module bij en al helemaal niet zo'n bas file :)

Kan het aan me compiler liggen?
(firstbas) en zo ja kan iemand een andere aanbevelen?

Ohw enne, nog bedankt john :)
OK, allerlaatste reply van mij, ff snel :)
Het zou aan de compiler kunnen liggen, ikzelf heb vroeger alleen maar met de QBasic IDE+compiler van MS zelf gewerkt, werkte altijd perfect... Als je er nog ergens aan kan komen; probeer die eens :)

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


Verwijderd

Ik heb mijn code weer even geupdate. Je hebt blijkbaar een Double nodig, en ik heb er een paar foutjes uit gehaald :)

Ik heb m in QBasic 1.1 en QuickBasic 4.5 gedraaid, en er komen een paar getallen.

johnwoo:
In QBasic kan AS INTEGER en AS DOUBLE gewoon :P

  • rvanlooijen
  • Registratie: Oktober 2001
  • Laatst online: 21-06-2021
Nu begin ik een beetje te twijfelen aan mn compiler, dev, welke heb jij gebruikt? Ik krijg bij compilen: Array 423: Array variable expected ( op de regel Dim as a double )

Verwijderd

Hier doet ie het prima. Gewoon met de QuickBasic standaard compiler (4.5).

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 16:17

johnwoo

3S-GTE

Op vrijdag 21 december 2001 21:48 schreef dev het volgende:
[...]
johnwoo:
In QBasic kan AS INTEGER en AS DOUBLE gewoon :P
Hmm... dan ben ik in de war met nog een oudere Basic :o
Maar achter functies kon het in QB niet (toch?)

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1

Pagina: 1