Sortierung eines ofstream Objekts
-
Hallo zusammen,
ich bin gerade an einer Probeklausur dran und komme nicht weiter.
Ich lese eine Textdatei 'vorwahlen.txt' ein diese enthält das komplette deutsche
Telefonvorwahlenverzeichnis, wobei injeder Zeile der Name eines Ortes und die dazugehörige telefonvorwahl steht.Ich muss nun diese Date einlesen diese sortieren und in eine txt. Datei ausgeben.
Meine txt. Datei ist leider unsortiert.#include <iostream> #include "Table.h"; #include "Vorwahl.h"; #include <fstream> using namespace std; void readFile(Table &tempTable); int main() { Table tempTable; readFile(tempTable); tempTable.sortOrt(); tempTable.toString(); return 0; } void readFile(Table &tempTable) { setlocale(LC_ALL, ""); Vorwahl tempVorwahl; fstream inputFile("vorwahlen.txt", ios::in); if (!inputFile) cerr << "Datei konnte nicht geoeffnet werden !" << endl; ofstream outFile("vorwahlen_neuu.txt", ios::out); if (!outFile) { // overloaded ! operator cerr << "File could not be opened" << endl; exit(EXIT_FAILURE); } string ort, vorwahl; while (inputFile.good()) { getline(inputFile, ort, '\t'); tempVorwahl.setOrt(ort); getline(inputFile, vorwahl, '\n'); tempVorwahl.setVorwahl(vorwahl); tempTable.setVorwahl(tempVorwahl); outFile <<ort << ".................................." << vorwahl << endl; } }
-
ombia schrieb:
Meine txt. Datei ist leider unsortiert.
Und das wundert dich warum? Nur fest dran zu glauben, ist leider nicht genug. Dein Programm unternimmt keinerlei Aktion, um auch nur im Ansatz irgendwas zu sortieren.
Ein paar Bemerkungen:
-Deine Funktionen und Objekte haben unklare Aufgaben. Du nennst eine FunktionreadFile
, aber die macht irgendwie alles. (Oder genauer: Sie macht zwar alles, was dein Programm ausmacht, was aber offensichtlich nicht das ist, was du dir wünscht. Kurz gesagt kopiert sie bloß eine Datei in eine andere und fügt an einigen Stellen jede Menge '.' ein.)
-Deine Einlesen ist höchstwahrscheinlich falsch, jedenfalls passt es überhaupt nicht zu deiner Beschreibung, wie deine Eingabedatei aufgebaut ist. Ich würde eigentlich erwarten, dass deine Ausgabedatei nicht nur unsortiert ist, sondern auch ziemlich falsch formatiert. Fiel dir in dieser Hinsicht nichts auf?
-Du machst auch den typischen "mein Lehrer hat mal vor 40 Jahren Programmieren gelernt und denkt C++ wäre genau so wie Pascal"-Fehler, dass du erst prüfst, ob deine letzte Einleseaktion erfolgreich war, dann wieder etwas weiter liest und dann unabhängig vom Erfolg oder Misserfolg die gelesenen Daten (oder im Fehlerfall eben Datenmüll) weiter verarbeitest.
-
ombia schrieb:
Ich muss nun diese Date einlesen diese sortieren und in eine txt. Datei ausgeben.
Nach welchem Kriterium soll da etwas sortiert werden?
-
Hallo mit der toString Funktion lass ich alles auf mein Konsolenfenster ausgeben.
Dort wird auch alles sortiert ausgegeben mit richtiger Formatierung dank der toSort Funktion.Aber wenn ich dies als Ausgabedatei in txt. sortiert haben möchte, wird hier leider nur alles so ausgegeben wie es auch eingelesen wurde also unsortiert.
Meine Konsolenausgabe:
Aachen.........................0241
Aachen-Kornelimuenster.........................02408
Aalen.........................07361
Aalen-Ebnat.........................07367
Aarbergen.........................06120
Abberode.........................034779
Abenberg Mittelfr..........................09178
Abenberg-Wassermungenau.........................09873
Abensberg.........................09443
Abtsgmuend.........................07366
Achberg.........................08380
Achern.........................07841
Achim b.Bremen.........................04202
Achterwehr.........................04340
Adelberg.........................07166
Adelebsen.........................05506
Adelmannsfelden.........................07963
Adelsdorf.........................09195
Adelsheim.........................06291
Adelshofen.........................09865
Adenau.........................02691
Adlkofen.........................08707
Adorf (Vogtl.).........................037423
Aerzen.........................05154
Affing.........................08207
Affinghausen.........................04247
Aglasterhausen.........................06262
Ahaus.........................02561
Ahaus-Alstaette.........................02567
Ahausen-Kirchwalsede.........................04269
Ahlbeck.........................039775
Ahlen Westf..........................02382
Ahlerstedt.........................04166
Ahnatal.........................05609
Ahorn Baden.........................06296
Ahrensboek.........................04525
Ahrensboek-Gnissau.........................04556
Ahrensburg.........................04102
Aichach.........................08251
Aichstetten Kr.Ravensburg.........................07565
Aidenbach.........................08543
^CDrücken Sie eine beliebige Taste . . .meine ausgabedatei:
Straelen..................................02834
Hessisch Lichtenau..................................05602
Kerpen-Horrem..................................02273
Laichingen..................................07333
Steinhagen Westf...................................05204
Roehrmoos..................................08139
Schwaebisch Gmuend..................................07171
Untergriesbach..................................08593
Hohenberg-Krusemark..................................039394
Ringenwalde..................................039881
Luebben..................................03546
Neustadt(Sachs.)..................................03596
Altdorf b.Nuernberg..................................09187
Bindlach..................................09208
Muenchsteinach..................................09166
Baltrum..................................04939
Wuestenrot..................................07945
Oberndorf..................................036465
Metschow..................................039994
Bergen..................................03838
Winnenden..................................07195
Suederhastedt..................................04830
Langen b.Bremerhaven..................................04743
Walsrode-Kirchboitzen..................................05166
Winsen-Toennhausen..................................04179
Eching Niederbay...................................08709
Bruchhausen-Vilsen..................................04252
Luebeck..................................0451
Schmoelln..................................039862
Steyerberg..................................05764
Westerburg Westerw...................................02663
Vohenstrauss..................................09651
Ostrau (Sachs.)..................................034324
Au i.d.Hallertau..................................08752
Welschen Ennest..................................02764
-
Wenn man die Daten sortiert, nachdem man sie ausgegeben hat, ist das nicht ungewöhnlich.