QBASIC + Zahlen sortieren

Julatsch

Lt. Junior Grade
Registriert
Juli 2005
Beiträge
397
Hi,

Ich bin momentan beim sortieren von Zahlen. Das heisst ich lese eine Datei ein, in welcher ca 20 Zahlen stehen. Diese Zahlen sind alle durcheinander und sollen sortiert wieder ausgegeben werden. Das Problem ist, dass ich es irgendwie nicht schaffe. Ich hab es mit dem Bubblesort Prinzip versucht, hat aber aus Mangel an Syntaxkenntnis nicht geklappt.

Könnte mir da vllt einer unter die Arme greifen?

Vllt kann mir ja mal jemand nen kleines Bubblesort Programm schreiben, welches 10 Zahlen sortiert... irgendwie so...



Wäre euch sehr dankbar.
 
Gib doch mal mit Hilfe des CODE-Tags deinen Ansatz zum Bubblesort durch.
Wir können auch gemeinsam eine Lösung erarbeiten ;)
 
Zuletzt bearbeitet:
Naja Code..^^ ich habs mehr oder weniger probiert... sieht noch nich so wirklich nach bubblesort jetz aus...

Code:
CLS
OPEN "....\nr.dat"                               'ne datei mit 21 zufälligen nummern von 1-10000
DIM array(21)

DO UNTIL EOF(1)
LINE INPUT #1, a$

       zaehl = zaehl + 1
       array(zaehl) = VAL(a$)
       
       merke = array(zaehl)

       IF array(zaehl) <= merke THEN
       SWAP merke, array(zaehl)
       END IF

'evtl Print array(zaehl)

LOOP
CLOSE #1

hoffe nen kleinen ansatz kann man erkennen... :(

bzw. wie ich versuche die Zahlen zu tauschen...
 
Als erstes solltest du mal das Array füllen, dann das Sortieren anfangen.
Code:
Dim importText()    ' Array initialisieren
Open "[B]DATEI[/B]" For Input As #1    ' Datei öffnen
While NOT EOF(1)
    n = n + 1    ' Variable für Anzahl der Zeilen in der Datei
Wend
ReDim importText(n)    ' Größe des Arrays festlegen
Close #1
n = 0
Open "[B]DATEI[/B]" For Input As #1
While NOT EOF(1)
    Input #1, zeile    ' Zeile einlesen
    importText(n) = zeile    ' Zeile ins Array schreiben
    n = n + 1    ' Zählvariable wieder hochzählen
Wend
Ist sicher nicht die beste Lösung aber bis hier solltest du das Array mit allen Zahlen gefüllt haben.
Ebenfalls sollte n am Ende wieder die Anzahl aller Einträge im Array beinhalten.
Nun kann man schauen wie man vorgeht - Das Ganze mal als Pseudocode (d.h. du musst es umsetzen ;)):
Code:
[B]vertauscht[/B] : Boolean  = true
So lange vertauscht true ist
   [B]vertauscht[/B] = false
   [I]for[/I]-Schleife (i = 0; i < n)
        [I]wenn[/I] [B]importText(i)[/B] größer als[B] importText(i+1)[/B] dann
            Vertausche beide Einträge
            [B]vertauscht = true[/B]
        [I]wenn-Ende[/I]
   [I]for[/I]-Ende
   n = n -1
Schleife-Ende
Ich hoffe das hilft dir ein wenig wie ein Bubblesort aufgebaut ist!
Wenn du Fragen hast -> Immer zu!

EDIT: In deiner Lösung vergleichst du den Bereich im Array mit sich selbst...
EDIT²: Hast du schon was erreicht oder gab es irgendwo Probleme? Oder hast du mit meinen Infos überhaupt was gemacht?
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben