GLBasic forum

Other languages => GLBasic - de => Topic started by: Worebu on 2014-Dec-31

Title: Werte in Arrays ändern
Post by: Worebu on 2014-Dec-31
Hallo, ich glaube ich bin auf dem falschem Dampfer. Ich brauche nur eine Bestätigung.

Wenn ich das schreibe:

IF A > 13
  DEC A, 13
ENDIF

Angenommen A=20, dann wird doch aus diesen 20 eine 7, oder nicht?

Also quasi A = 7

Wenn jemand ein Ja oder Nein hat reicht es mit schon.

Guten Rutsch und so's Zeug und ich wünsche Euch doppelt soviel wir Ihr mir wünscht.  :good:.




Title: Re: Werte in Arrays ändern
Post by: D2O on 2014-Dec-31
Ja,

lass das im Debugmodus laufen ;)

Code (glbasic) Select
GLOBAL i
GLOBAL A
GLOBAL B[]
DIM B[10]


A = 20
B[5] = 21

DEBUG "Variable A: "+A+"\n"
DEBUG "ARRAY B[5]: "+B[5]+"\n"

IF A > 13
  DEC A, 13
ENDIF

FOR i = 0 TO LEN(B[])-1
IF B[i]= 21 THEN DEC B[i],5
NEXT


DEBUG "Variable A: "+A+"\n"
DEBUG "ARRAY B[5]: "+B[5]+"\n"
Title: Re: Werte in Arrays ändern
Post by: Worebu on 2015-Jan-01
Danke, dann ist mein Fehler woanders.

Ich bekomme nämlich bei SORTARRAY A[], 0 immer eine 0 reingeschrieben obwohl der Array gefüllt ist. hab mit DEBUG nachgeschaut.

Frohes Neues.   :booze:
Title: Re: Werte in Arrays ändern
Post by: Fabbio on 2015-Jan-02
Rufst Du Sortarray danach nochmals Auf?
Ich schau mal am Spätnachmittag einmal danach.
Muss jetzt erstmal zur Therapie :)

Gesendet von meinem GT-I9300 mit Tapatalk

Title: Re: Werte in Arrays ändern
Post by: Worebu on 2015-Jan-02
Hallo, hat sich erledigt. Ich generiere, um doppelte zu vermeiden 10 zufallszahlen und filter die doppelten raus und sortiere dann. Ich zeige mir aber nur die ersten 5 an. Also sind auch andere zahlen dazwischen. Kann man SORTARRAY begrenzen auf z.b. nur 5 statt 10 zahlen zusortieren, oder so?
Title: Re: Werte in Arrays ändern
Post by: nabz32 on 2015-Jan-02
Um Zufallszahlen eines kleinen Zahlenbereichs zu generieren, ohne doppelte Zahlen zu erhalten,
würde ich in GLBasic folgendes tun:


Code (glbasic) Select

main()

FUNCTION main:
LOCAL number%[] , amount% , range% , position% , randomNr%[]
// initialisierung V
range = 20 ; amount = 20
        IF amount > range THEN amount = range
DIM number[range] ; DIM randomNr[amount]
FOR i = 0 TO range - 1 ; number[i] = i ; NEXT // number Array mit allen Zahlen des Zahlenbereichs befüllen, ende initialisierung
FOR i = 0 TO amount - 1 // nimm die gewünschte Anzahl ( amount ) zufälliger Zahlen
position = RND( range - 1 ) // eine Zufällige position innerhalb des number Array wählen.
randomNr[ i ] = number[ position ] // Diese zufällige Zahl in die Zufallszahlenliste eintragen
DIMDEL number[] , position // den Eintrag mit der zufälligen Zahl entfehrnen ( darunter liegende Einträge werden nach oben verschoben )
DEC range , 1 // Variable range an die Anzahl von Einträgen der number Array anpassen
NEXT
DIM number[0]
ENDFUNCTION

Da Zufallszahlen die doppelt sind wieder neu zu generieren und wieder auf gleichheit zu testen ist ein Kreislauf der sich theoretisch
ewig wiederhohlen kann, ab einer gewissen Anzahl von Zuffalsobjekten.
Geht man so wie in dem code hier vor, ist die Laufzeit des Programms immer fest durch die Variablen range und amount bestimmt
( Und natürlich von der Prozessorleistung  =D).
Edit: Frohes Neues Jahr :booze:
Title: Re: Werte in Arrays ändern
Post by: Worebu on 2015-Jan-02
Sorry falsch ausgedrückt. Zufallszahlen habe ich, auch ohne doppelte. Ich übergebe aber im Array 10 zahlen, brauche aber erstmal nur fünf, aber SORTARRAY sortiert alle 10, also kommt evtl. die 9 Zahl an zweiter Stelle, die brauch ich aber nicht. Ich möchte von SORTARRAY statt von 0-10 nur z.B. 0-4 sortiert haben.
Title: Re: Werte in Arrays ändern
Post by: nabz32 on 2015-Jan-02
habe sort array nie benutzt, sry.

Ich habe bis jetzt immer den Bubble Sort verwendet.
Title: Re: Werte in Arrays ändern
Post by: nabz32 on 2015-Jan-02
wenn sort array immer die Ganze array sortiert, einfach die Array in zwei aufsplitten und dann nur eine sortieren.
Title: Re: Werte in Arrays ändern
Post by: Worebu on 2015-Jan-02
Ich schau mal, Danke für den Tip.