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:

Sequentielle Datei und Sortieren eines 2dim Feldes

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



Anmeldungsdatum: 09.06.2007
Beiträge: 12

BeitragVerfasst am: 09.07.2007, 22:48    Titel: Sequentielle Datei und Sortieren eines 2dim Feldes Antworten mit Zitat

Hi, ich schon wieder, aber leider hab ich wieder ein Problem. Ich habe eine sequentielle geschrieben, mit Bezeichnungen von Schrauben, den Längen und ihren Durchmessern, nun will ich ein 2dim Feld schreiben und das nach der Länge und danach nach dem Durchmesser sortieren und ausgeben, aber es scheitert schon an dem Lesen:
Code:

CLS
TYPE rrk
bezeichnung AS STRING * 3
laenge AS INTEGER
durchmesser AS INTEGER
END TYPE
DIM schraube(5) AS rrk
OPEN "schrau66.dat" FOR INPUT AS #1 LEN = LEN(schraube(5))
FOR i = 1 TO 5
INPUT #1, i, schraube(i).bezeichnung, schraube(i).laenge, schraube(i).durchmesser
NEXT i
CLOSE #1
END

Er sagt mir "Index außerhalb des zulässigen Bereichs"
aber ich finde gerade den Fehler nicht.
mfg seimon
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 09.07.2007, 23:00    Titel: Antworten mit Zitat

Also
Rücke den Code ein.
Schau ob du dann den Fehler findest.
Sind in der Datei überhaupt Daten?
Typen usw. richtig definiert?
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 09.07.2007, 23:03    Titel: Antworten mit Zitat

die input zeile verhauts dir, du kannst schelcht mit i von 1 bis 5 gehen und zwischendrin i aus der datei auslesen.. müsstest da dann schon ne andere variable nehmen.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
seimon



Anmeldungsdatum: 09.06.2007
Beiträge: 12

BeitragVerfasst am: 10.07.2007, 16:49    Titel: Antworten mit Zitat

Ok, Fehler gefunden und behoben^^, nun will ich die Schrauben nach Länge und Durchmesser sortieren, weiß aber leider nicht wie ich überhaupt anfangen soll, kann ich das irgendwie auf ein Feld schreiben? am Ende soll er dann die Schrauben der reihenach mit gleicher Länge ausgeben.

mfg Seimon
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 10.07.2007, 18:03    Titel: Antworten mit Zitat

du kannst deinen vergleich erweitern dass du halt sagst "schraube 1 ist kleiner als schraube 2 wenn sie ([kürzer ist] oder [[gleich lang] und [einen kleineren durchmesser]]), kann man fast so abschreiben. danach sind sie nach beidem sortiert, zuerst nach der länge und die gleich langen nach dem durchmesser.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
seimon



Anmeldungsdatum: 09.06.2007
Beiträge: 12

BeitragVerfasst am: 10.07.2007, 19:52    Titel: Antworten mit Zitat

Hi, leider muss ich schon wieder stören, also ich hab jetzt erstmal versuch, es nach der Länge zu sortieren mit:
Code:

CLS
 TYPE rrk
  bezeichnung AS STRING * 3
  laenge AS INTEGER
 durchmesser AS INTEGER
 END TYPE
DIM schraube(5) AS rrk
OPEN "schrau66.dat" FOR INPUT AS #1 LEN = LEN(schraube(5))
 FOR i = 1 TO 5
  INPUT #1, i, schraube(i).bezeichnung, schraube(i).laenge,   schraube(i).durchmesser
 NEXT i
CLOSE #1
DIM sort(5)
FOR p = 1 TO 5
 sort(p) = schraube(p).laenge
NEXT p
FOR i = 1 TO 5
 k = 1
  FOR j = i + 1 TO 5
   IF sort(j) < sort(k) THEN k = j
  NEXT j
  IF k <> i THEN SWAP sort(k), sort(i)
 NEXT i

FOR o = 1 TO 5
 PRINT sort(o)
NEXT o

 END


Nun gibt er mir aber 81,48,56,78,93 aus, was ja leider falsch ist, weil ja die 81 größer als die 48 ist, ich finde den Fehler mal wieder nicht und hoffe ihr könnt mir helfen.
Danke schonmal
mfg seimon
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4700
Wohnort: ~/

BeitragVerfasst am: 10.07.2007, 20:49    Titel: Antworten mit Zitat

Mit dieser Änderung sollte es funktionieren:
Code:

[...]
FOR i = 1 TO 5
  k = i
  FOR j = i + 1 TO 5
[...]

_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
seimon



Anmeldungsdatum: 09.06.2007
Beiträge: 12

BeitragVerfasst am: 10.07.2007, 21:32    Titel: Antworten mit Zitat

Hi, vielen Dank, ich glaube ich hätte noch ein lange daran überlegt.

mfg seimon
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. 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