Počet položek za příkazem Data 1,2,4,5
Moderátor: Moderátoři
Počet položek za příkazem Data 1,2,4,5
Dobrý den, prosím Vás ještě o radu se zjištěním počtu položek za příkazem data v Bascomu.
Data 21, 54, 54, 68, 98
Potřeboval bych poradit, jak získaz a zjistit počet položek, např. dle data nahoře: 5 = počet všech čísel
Díval jsem se do nápovědy na VAL, DATA, LEN, atd..ale ty nevypadají na tohle užití...
Děkuji
Data 21, 54, 54, 68, 98
Potřeboval bych poradit, jak získaz a zjistit počet položek, např. dle data nahoře: 5 = počet všech čísel
Díval jsem se do nápovědy na VAL, DATA, LEN, atd..ale ty nevypadají na tohle užití...
Děkuji
Za instrukcí DATA v jakémkoli Basicu můžeš zadat libovolný počet hodnot, které program bude číst v žádaném pořadí. Nemusíš snad definovat, kolik jich bude, nanejvýš jako poslední zadáš hodnotu, jaká se mezi ostatními nevyskytuje, a programově budeš testovat, zda smyčka našla tuto hodnotu. V tom případě restartuješ načítání dat od začátku, jinak ti po dočtení řádku DATA vypadne dál a pokusí se interpretovat další bajty z paměti jako data.
Druhá možnost je použití smyčky FOR-TO / NEXT, kde nadefinuješ počet průchodů. Po posledním průchodu restartuješ čítač dat atd...
Druhá možnost je použití smyčky FOR-TO / NEXT, kde nadefinuješ počet průchodů. Po posledním průchodu restartuješ čítač dat atd...
basic v ZX spectru po snaze číst za koncem položek DATA vyhodil chybu Out of DATA, bascom tuhle chybu v error codes nemá, takže tu situaci asi nemá ošetřenu. Takže když si tam nasázíš do tabulky dat hodnoty a nevíš kolik jich je, leda jak říká Hill v cyklu pak číst položky a po poslední se objeví nesmyslný údaj, takže stačí se podívat na počet průchodů cyklem. Možná při znalosti interní organizace bascomu to řekne nějaká systémová proměnná.
Zdá se, že i tohle měla parta okolo sira Cliva vymyšleno líp jen ten compiler v tom neměli.
když zkusím
Dim A As String * 1
Dim N As Byte
For N = 0 To 10
A = Lookupstr(n , Tabulka)
Print "a:" ; A
Print "n:" ; N
Next N
End
Tabulka:
Data "a" , "b" , "c" , "d"
tak to fakt vesele sděluje hovadiny po konci tabulky.
Na druhou stranu: položky v DATA zadáváš ručně takže asi nepůjdou do tisíců a měly by se dát spočítat při tvorbě seznamu.
když zkusím
Dim A As String * 1
Dim N As Byte
For N = 0 To 10
A = Lookupstr(n , Tabulka)
Print "a:" ; A
Print "n:" ; N
Next N
End
Tabulka:
Data "a" , "b" , "c" , "d"
tak to fakt vesele sděluje hovadiny po konci tabulky.
Na druhou stranu: položky v DATA zadáváš ručně takže asi nepůjdou do tisíců a měly by se dát spočítat při tvorbě seznamu.
Protože víš, kolik znaků píšeš do tabulky,
můžeš si jejich počet poznamenat do konstanty.
můžeš si jejich počet poznamenat do konstanty.
Kód: Vybrat vše
Const Table1_pocet = 5
Const Table2_pocet = 4
Dim X As Integer
Dim B1 As Byte
Dim W1 As Word
Do
B1 = 3
X = Lookdown(b1 , Table1 , Table1_pocet) '3
W1 = 4000
X = Lookdown(w1 , Table2 , Table2_pocet) '4
Loop
End
Table1:
Data 1 , 2 , 3 , 4 , 5
Table2:
Data 1000% , 2000% , 3000% , 4000%