Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Mehrdimensionale Arrays und SUBs

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
charlie



Anmeldungsdatum: 05.01.2013
Beiträge: 2

BeitragVerfasst am: 07.01.2013, 10:31    Titel: Mehrdimensionale Arrays und SUBs Antworten mit Zitat

Hallo,
Allen ein gesundes neues Jahr.
Ich bin ein FreeBasic-Neuling das vorab. Habe früher, vor 1990 mal was mit dem damaligem Basic zu tun, seid dem nicht mehr. Nun, als Rentner, will ich was für die Synapsen tun. Soviel vorab. Ich denke dann sind meine Fragen auch zu verstehen und werden euch hoffentlich, wegen des Schwierigkeitgrades, nicht beleidigen!
Ich habe mich an einem Programm zur Lösung der SUDOKU's versucht. Ich weiß, gibt es zur Genüge, aber hier ist der Weg das Ziel.
In der "1. Ausbaustufe" - als Dialog - funktioniert es auch. Nur - ich habe viel diese ungeliebte GoTo verwenden müssen. Ich bekomme einfach diese UP mit SUB nicht aufgerufen. Und wenn, dann werden die Variablen nicht übergeben.
Kann mir einer mal die Declare-Zeile und den entsprechen Aufruf aufschreiben? Es sind ganz einfache Variable, wie a, b ... und mehrdimensionale, wie GT(i, j, k), alle UByte's, zu übergeben. Alle im UP verwendeten, und dort errechneten, Werte sollen globale Gültigkeit haben.
Eine zweite Frage betrift das Speichern, ich glaube früher gab es da so was wie LOAD?
Zu speichern wäre im Prinzip ein Datensatz aus zwei Variablen: GZ(i,j,k) und TZ(i,j,k); i,j,k - alle von 1 bis 9, auch hier alles UByte's.
Gespeichert werden soll auf D:\Eigene Dateien\FreeBasic
Auch hier wäre ich für je eine Programmzeile, speichrn und einlesen aus der Datei, sehr dankbar!
Vielen Dank!
Charlie

Editiert durch Moderator: Ursprünglichen Thementitel "Frage - Hilfe" ersetzt durch aussagekräftigere Bezeichnung. (Sebastian)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 07.01.2013, 14:19    Titel: Antworten mit Zitat

Code:

sub meineSub(normaleVar1 as integer, byref normaleVar2 as integer, arrayVar() as integer)
normaleVar1 = 10 'die änderung ist auserhalb nicht zu sehen
normaleVar2 = 10 'diese änderung wird zurück übertragen
Redim arrayVar(1) as integer 'dies ebenfalls (Arrays sind immer 'ByRef')
arrayVar(1) = 10
end sub


Code:

Dim Array() as integer
Dim Var1 as integer
Dim Var2 as Integer
meineSub(Var1, Var2, Array())
Print Var1
Print Var2
For X as Integer = LBound(Array()) to UBound(Array())
    Print Array(X)
Next



MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 07.01.2013, 15:57    Titel: Antworten mit Zitat

Hallo Charlie,

willkommen im Forum! lächeln Dir auch ein gutes neues Jahr!

charlie hat Folgendes geschrieben:
Ich bekomme einfach diese UP mit SUB nicht aufgerufen. Und wenn, dann werden die Variablen nicht übergeben. [...] Es sind ganz einfache Variable, wie a, b ... und mehrdimensionale, wie GT(i, j, k), alle UByte's, zu übergeben.

Dazu hier mal ein kleines Beispielprogramm:
http://www.freebasic-portal.de/porticula/mehrdimensionales-array-an-sub-uebergeben-1570.html

Auf der Seite werden die Befehle/Schlüsselwörter im Quelltext alle gleich auf die passenden Einträge in der Befehlsreferenz verlinkt. Du kannst also z. B. "BYREF" anklicken und kommst direkt zur Onlinehilfe zum Thema. Außerdem kannst du auf der Seite direkt die BAS-Datei runterladen ("Dateidownload").

Zu der anderen Frage:
charlie hat Folgendes geschrieben:
Eine zweite Frage betrift das Speichern, ich glaube früher gab es da so was wie LOAD?
Zu speichern wäre im Prinzip ein Datensatz aus zwei Variablen: GZ(i,j,k) und TZ(i,j,k); i,j,k - alle von 1 bis 9, auch hier alles UByte's.
[...]
speichrn und einlesen aus der Datei, sehr dankbar!

Auch dazu ein Beispielprogramm:
http://www.freebasic-portal.de/porticula/mehrdimensionales-array-in-textdatei-speichern-daraus-auslesen-1571.html

Entscheidend ist darin das Unterprogramm "speicherArray". Es durchläuft alle Arrayelemente der Reihe nach und speichert sie - jedes Element in eine Zeile - in einer Textdatei. Das Pendant zu dieser Funktion ist die Sub "ladeArray". Es kann eine solche Textdatei auslesen und Element für Element wieder ins Array schreiben.

Der folgende Screenshot (zum Vergrößern anklicken) zeigt, wie sich die Textdatei zum mehrdimensionalen Array verhält:



Die Textdatei hat logischerweise 9*9*9 = 729 Zeilen:



charlie hat Folgendes geschrieben:
Gespeichert werden soll auf D:\Eigene Dateien\FreeBasic

Der Beispielcode legt die Dateien einfach in dem Verzeichnis ab, in dem sich auch das Programm befindet. Aber den Dateipfad kannst du in den Zeilen 28 und 29 auch beliebig anpassen.

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 07.01.2013, 16:03    Titel: Antworten mit Zitat

Hi Charlie,

hier findest du ein Beispiel zum speichern von Dateien
http://www.freebasic-portal.de/befehlsreferenz/freefile-284.html.

Die Befehlsreferenz ist nicht nur wichtig sondern auch gut.

Viele Beispiele findest du auch in den Tutorials im FreeBasic-Portal
http://www.freebasic-portal.de/tutorials/, stöbern lohnt sich.
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
charlie



Anmeldungsdatum: 05.01.2013
Beiträge: 2

BeitragVerfasst am: 10.01.2013, 00:34    Titel: Antworten mit Zitat

Hallo,
vielen Dank für eure Hilfe, hier mir echt weitergeholfen! lächeln
Charlie
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 10.01.2013, 14:00    Titel: Antworten mit Zitat

Von mir früher einmal ein Sudoku-Projekt:

http://forum.qbasic.at/viewtopic.php?t=2141

Hatte mich damals auch zuerst mit dem Lösen beschäftigt, später auch mit Rätsel generieren. Auch Dinge wie Doppelattribut-Sudoku (Du hast nebst Zahlen auch Farben, z.B. die blaue Vier, die rosarote 3 usw. -> sowohl Zahlen als auch Farben müssen einem Sudoku-System schlussendlich entsprechen) hatte ich mir damals näher angeschaut.

Für Deinen Fall halt einfach immer das Wichtigste: Festlegung von Algorithmen. In meinem Fall war damals Rekursion das Einfachste und Effizienteste, wo man übrigens auch von der Zahl der benötigten Rechenoperationen kräftig optimieren kann.

Zum Thema Array in Datei speichern: Evtl. auch einen Blick in GET und PUT für Dateien werfen, falls Direktzugriff anstelle von sequenziellem Schreiben und Lesen des gesamten Arrays auch ein Thema ist.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz