Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
0oFreako0
Anmeldungsdatum: 17.12.2011 Beiträge: 114
|
Verfasst am: 17.08.2012, 15:31 Titel: Array_Inhalte_ immer einen weiter ach rechts kopieren? |
|
|
Hi meine Frage die mich gerade beschäftigt ist wenn ich zb ein Array habe.
Ich schreibe im index 0 des Array zb ne 5 rein.
dann will ich eine 6 zb in den index 0 schreiben aber die 5 soll auf den
index 1 kopiert werden. Wenn ich jetzt noch eine neue zahl zb 8 rein schreibe soll 5 auf index 2 und 6 auf index 1 kopiert werden.
Code: |
Randomize
Dim array_1(6) As Integer
For i As Integer = 0 To 5
Print "----"
For i As Integer = 0 To 5
array_1(0) = Int (Rnd*5)
If (UBound(array_1)-i) <> 0 Then
array_1(UBound(array_1)-i) = array_1(UBound(array_1)-(i+1))
EndIf
? Str(array_1(i))
Next
next
Sleep
End
|
Müsste es nicht ungefähr so funktionieren das ich von rechts nach links den inhalt verschiebe? Also der letzte index kann ruhig immer wegfallen. |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
0oFreako0
Anmeldungsdatum: 17.12.2011 Beiträge: 114
|
Verfasst am: 18.08.2012, 08:39 Titel: |
|
|
Das Beispiel was Du gepostet hast funzt irgentwie auch nicht richtig. Er verschiebt beim ersten durchlauf den Inhalt richtig danach haut er wieder alles durcheinander. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 18.08.2012, 08:59 Titel: |
|
|
Kann eigentlich nicht sein - kannst du mal deine Umsetzung posten? _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 18.08.2012, 10:44 Titel: |
|
|
ZB.: Code: | Randomize
Dim As Integer array_1(6), j, i, _
n = UBound(array_1)
For i = 0 To n
Print String(n*4+4, "-")
For j = n To 0 Step -1
array_1(j) = array_1(j-1)
Next
array_1(0) = Int(Rnd*8+1)
For j = 0 To n
Print array_1(j);" |";
Next
Print
Next
Print String(n*4+4, "-")
Sleep
|
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
0oFreako0
Anmeldungsdatum: 17.12.2011 Beiträge: 114
|
Verfasst am: 18.08.2012, 13:26 Titel: |
|
|
THx volta. Nun klappt es.
Nur so ne Frage am Rande. Gibt es noch eine schnellere Variante? |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 18.08.2012, 13:47 Titel: |
|
|
Sebastian's Link zum Thema verkettete Listen wäre da Hilfreich wenn auch etwas komplizierter: http://www.freebasic-portal.de/tutorials/verkettete-listen-in-freebasic-37.html
Im Prinzip könnte man nach dem Beispiel eine Liste mit einer Init-Funktion versehen die eine (NULL) Liste mit einer bestimmten grösse der Liste festlegt.
Eine Add-Methode die dann einen neuen Wert an den Anfang 'hängt' und den letzten aus der Liste löscht, damit hätte man dann eine Liste fester grösser/länge und man müsse nicht erst durch die ganze liste per for/next um die werte eins weiter zu verschieben... _________________
 |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 18.08.2012, 18:16 Titel: |
|
|
Schneller, da keine Speicherschieberei...
aber nicht einfach zu handhaben
Code: | Randomize 0815
Dim As Integer array_1(6), j, i, _
n = UBound(array_1)
For i = 0 To n
array_1(i) = Int(Rnd*8+1)
For j = i To 0 Step -1 'Pseudoindex
Print array_1(j);" ";
Next
For j = i+1 To n
Print array_1(j);" ";
Next
Print
Next
Sleep |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 18.08.2012, 18:35 Titel: |
|
|
Pointer ftw!
Code: | #Include Once "crt/string.bi"
Dim As Integer array(0 To 5)
For i As Integer = 0 To 5
array(i) = i
Next
Print "---------------------------------"
For i As Integer = 0 To 5
Print "Wert von i=" & i & " vorher", array(i)
Next
memmove(@array(1), @array(0), SizeOf(array(0))*(UBound(array)-LBound(array)))
array(0) = 0
Print "---------------------------------"
For i As Integer = 0 To 5
Print "Wert von i=" & i & " nachher", array(i)
Next
Sleep |
|
|
Nach oben |
|
 |
|