Werte in Arrays ändern

Previous topic - Next topic

Worebu

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:.




Intel I5 9600 - RTX 4070, WaKü, 32GB RAM, 1x 512gb + 1x 1Gb NVRAM,  1x4TB + 1x1TB HD

D2O

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"
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Worebu

#2
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:
Intel I5 9600 - RTX 4070, WaKü, 32GB RAM, 1x 512gb + 1x 1Gb NVRAM,  1x4TB + 1x1TB HD

Fabbio

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


Worebu

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?
Intel I5 9600 - RTX 4070, WaKü, 32GB RAM, 1x 512gb + 1x 1Gb NVRAM,  1x4TB + 1x1TB HD

nabz32

#5
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:

Worebu

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.
Intel I5 9600 - RTX 4070, WaKü, 32GB RAM, 1x 512gb + 1x 1Gb NVRAM,  1x4TB + 1x1TB HD

nabz32

habe sort array nie benutzt, sry.

Ich habe bis jetzt immer den Bubble Sort verwendet.

nabz32

wenn sort array immer die Ganze array sortiert, einfach die Array in zwei aufsplitten und dann nur eine sortieren.

Worebu

Ich schau mal, Danke für den Tip.
Intel I5 9600 - RTX 4070, WaKü, 32GB RAM, 1x 512gb + 1x 1Gb NVRAM,  1x4TB + 1x1TB HD