Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
seimon
Anmeldungsdatum: 09.06.2007 Beiträge: 12
|
Verfasst am: 09.07.2007, 22:48 Titel: Sequentielle Datei und Sortieren eines 2dim Feldes |
|
|
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 |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 09.07.2007, 23:03 Titel: |
|
|
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 |
|
 |
seimon
Anmeldungsdatum: 09.06.2007 Beiträge: 12
|
Verfasst am: 10.07.2007, 16:49 Titel: |
|
|
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 |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 10.07.2007, 18:03 Titel: |
|
|
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 |
|
 |
seimon
Anmeldungsdatum: 09.06.2007 Beiträge: 12
|
Verfasst am: 10.07.2007, 19:52 Titel: |
|
|
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 |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4700 Wohnort: ~/
|
Verfasst am: 10.07.2007, 20:49 Titel: |
|
|
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 |
|
 |
seimon
Anmeldungsdatum: 09.06.2007 Beiträge: 12
|
Verfasst am: 10.07.2007, 21:32 Titel: |
|
|
Hi, vielen Dank, ich glaube ich hätte noch ein lange daran überlegt.
mfg seimon |
|
Nach oben |
|
 |
|