Zeilen einer Datei durcheinander würfeln

  • C++

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Zeilen einer Datei durcheinander würfeln

    Hallo,

    mir gehts darum, eine datei mit dem inhalt: "
    1111
    222
    333
    444
    "

    so umzusortieren, daß am ende eine zufällige reihenfolge der zeilen entsteht:
    444
    222
    1111
    333

    Hatte mir dazu überlegt, daß es wohl am einfachsten wäre, die input datei in ein array zu schreiben, und jedes element des arrays an eine zufällige stelle in einem 2. array zu packen und abschliessend das 2. array auszugeben. irgendwie habe ich aber bei der umsetzung schwierigkeiten... könnte da vielleicht netterweise einer helfen? :)

    greets, beatsix :cool:
  • Richtig so würde ich es auch machen

    Array generieren und das mit irgendeiner Zahl initialisieren (bspw: -10000), dann die Datei da rein schreiben und dabei gleich die Zeilen zählen.

    Dann mittels eines Zufallsgenerators eine Zahl zwischen 0 und der Zeilenanzahl generieren und die Zahl an die Stelle im Array schreiben. Wenn die Zahl im Array -10000 ist dann mache weiter, weil dann an der Stelle noch nichts steht. Ansonsten lasse den Zufallsgenerator nochmal neu durchlaufen...

    cya chicken...
    [SIZE=1]Dumme Antworten sind rein zufällig und auf einen Fehler in der Speicherverwaltung zurückzuführen
    [/SIZE]
  • öhm...klingt schonmal gut danke :) habe mich leider noch nie mit dem umgang von dateien beschäftigt. wäre daher nett, wenn du die teile schreiben könntest, um die zeilen einer datei als strings in einen array zu schreiben bzw die umkehr für die ausgabe
    (ps: spreche von einer datei mit ~ 600'000 Zeilen :))

    nehmen wir mal arrayI und arrayO für in & output array. bedanke mich schonmal herzlich im voraus und setze mich mal an den rest vom code :)
  • Also bei solch großen Dateien ist es vllt besser die Datei zunächst mal durchzugehen und n Array (bzw würde ich evtl vector bevorzugen, aber auch nur vllt - Performance kann ich gerade nicht 100%ig sagen) anzulegen wo du jeweils die Positionen der Zeilenumbrüche festhälst. So hast du a) die Positionen der Zeilen in der Datei und b) die Anzahl der Zeilen.
    Wie du dann zufallsmäßig ne Liste mit den Zeilennummern erstellst kann ich dir nicht sagen (nie mit sowas gearbeitet). Danach würdest du entsprechend diese Zeilenliste abfragen und mit Hilfe des vorher angelegten Arrays, wo ja die Postionen der Zeilen drinne stehen, die entsprechenden Zeilen aus der Quelldatei auslesen und sie gleich in die Zieldatei schreiben.

    Dann Viel Spaß. ;)

    Ach und wichtig: Arrays erstelle ich pers immer mit "new", also nicht statisch in der exe Datei.