Rekrusiver Arry

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

TimBo

Betreff: Rekrusiver Arry

BeitragSo, Sep 06, 2009 19:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

habe mal eine Frage, ich komme einfach nicht auf die Lösung:
Stellt euch vor, ihr müsst in eine rekrusive Funktion einen Arry übergeben, und diese ändert ihn leicht ab und gibt ihn dann weiter.

Wie mache ich das am beste?

Habe echt keinen Ansatz.
Als Parameter ist es mir ehrlich gesagt n bisl zu doof ^^

Grüße
TimBo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

Xeres

Moderator

BeitragSo, Sep 06, 2009 19:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Arrays sind doch Global...? Oder übersehe ich da was?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

coolo

BeitragSo, Sep 06, 2009 19:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würds mit Banks machen. Damit könnte man leicht Arrays "simulieren".
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project!
"Eigenzitate sind nur was für Deppen" -Eigenzitat

TimBo

BeitragSo, Sep 06, 2009 19:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ,

ich habe mich etwas komisch ausgedrückt:
das Problem ist ja gerade, dass ein Arry global ist, ich möchte sagen wir 100 Variablen von einer Funktion in 10 Funktionen schiffen, diese ändern die 100 Variablen für sich ab und schicken dies dann jeweils wieder 10 Funktionen.

Das ist jetz ein Hardcore Beispiel, habe nat. keine 100 Vars.

Da ein Arry Global ist, hat man das Problem, dass wenn Funktion X die Werte ändert, dann sieht man diese Änderung auch in Funktion y ^^

Grüße
TimBo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

Noobody

BeitragSo, Sep 06, 2009 19:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Xeres hat Folgendes geschrieben:
Arrays sind doch Global...? Oder übersehe ich da was?

Blitzarrays können auch lokal sein, daher kann man sie auch an Funktionen übergeben.

Zum Problem: Das geht wohl wirklich nur durch Banks, wie Coolo das schon erwähnt hat. Ansonsten müsstest du irgendwie die Arrays kopieren, was eine aufwändige Sache sein kann.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

TimBo

BeitragSo, Sep 06, 2009 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Blitzarrays können auch lokal sein, daher kann man sie auch an Funktionen übergeben.

Wie kann ich ein Blitzarry (ich kenne sie nur von Types) an eine Funktion übergeben ?

Banks, also Bank erstellen, Werte einlesen, handle senden.
Für jeden aufruf der Funktion wird also eine neue Bank erstellt.

Sie umfasst gerade mal 10 byte, aber die Funktion hat 13mio aufrufe. Mhh ,

ich denke das ist alles unmöglich

Grüße
TimBo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

Nicdel

BeitragSo, Sep 06, 2009 19:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Local strings$[10]

strings[2] = "Hello World"

laber(strings)

WaitKey

End

Function laber(array$[10])
   For i = 0 To 9
      Print array[i]
   Next
End Function
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Xeres

Moderator

BeitragSo, Sep 06, 2009 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Noobody hat Folgendes geschrieben:
Blitzarrays können auch lokal sein, daher kann man sie auch an Funktionen übergeben.
Ich weiß ja nicht... Blitzarrays können an eine Funktion weiter gegeben werden, aber sie verhalten sich so, als wären sie Global...

BlitzBasic: [AUSKLAPPEN]
Local BlitzArray[10] ;** 0-10

Print("Index 5: "+ BlitzArray[5])
Change(BlitzArray)
Print("Index 5: "+ BlitzArray[5])

WaitKey()
End

Function Change(BA[10])
Print("Ändere Index 5 in der Funktion...")
BA[5] = 5
;** Kein Return nötig um das Lokale BlitzArray zu ändern.
End Function
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

TimBo

BeitragSo, Sep 06, 2009 19:40
Antworten mit Zitat
Benutzer-Profile anzeigen
achso schade,

aber ich habe eben in meiner Totalen Verzweiflung mein BCC 25 Code rausgeholt und da sind ja auch Werte die geändert werden. Der Trick ist einfach , nach jedem Aufruf die Werte zu Resetten


Code: [AUSKLAPPEN]
Test(1239)=Test(1239)+5
For i=0 to 9
   machwas()
Next
Test(1239)=Test(1239)-5


i.wie funktioniert das, ist eigentlich sogar recht logisch.

Viele Grüße & Danke nochma
TimBo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

Noobody

BeitragSo, Sep 06, 2009 19:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Xeres hat Folgendes geschrieben:
Ich weiß ja nicht... Blitzarrays können an eine Funktion weiter gegeben werden, aber sie verhalten sich so, als wären sie Global...

Tun sie nicht Razz

Sie werden beim übergeben einfach nicht kopiert, sondern referenziert (wie in BMax).

Der Vorteil von Blitzarrays gegenüber normalen Arrays ist nun, dass man eine allgemeine Funktion schreiben kann, die ein Blitzarray verarbeitet (beispielsweise für Mapkollision); man kann die Funktion nun mit verschiedensten Blitzarrays als Parameter aufrufen - bei einem globalen Array müsste man die gleiche Funktion für jedes Array nochmals neu schreiben.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Xeres

Moderator

BeitragSo, Sep 06, 2009 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay, recht hast du.

(In Anbetracht der Tatsache, dass die Blitzarrays eine Konstante Größe haben müssen, finde ich nicht, dass das den Nutzen von Blitzarrays sonderlich erhöht. Aber was soll's...)
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Noobody

BeitragSo, Sep 06, 2009 20:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit der konstanten Grösse ist in der Tat ein ziemliches Hindernis, aber dennoch war ich in einigen Codes sehr froh um die Möglichkeit, Arrays als Parameter übergeben zu können (beispielsweise hier oder hier).
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group