Dateien/2D-Vektoren(rückwärts einlesen)

Neue Frage »

Auf diesen Beitrag antworten »
beta258 Dateien/2D-Vektoren(rückwärts einlesen)

a
bc1
de232z

Ausdruck von datei.txt.

Wie schreibt man ein Programm, dass diese Datei rückwärts einliest und auf dem Bildschirm ausgibt..

Wäre für eure Hilfe sehr dankbar smile
 
Auf diesen Beitrag antworten »
as_string

Zeilenweise oder Zeichenweise?
Welche Programmiersprache, Betriebssystem, etc. Wie groß sind die Dateien typischerweise? Bei kleinen Dateien macht es vielleicht Sinn, die ganze Datei in einem Rutsch in normaler Richtung einzulesen, aber dann nur rückwärts auszugeben. Bei sehr großen Dateien eher nicht.
Was hat das mit 2D-Vektoren zu tun?

Ich finde, wenn man schon will, dass einem andere Leute helfen, könnte man sich bei der Fragestellung auch etwas mehr Mühe geben, wenn ich ehrlich bin...

Gruß
Marco
Auf diesen Beitrag antworten »
beta258

Also es bezog sich auf Dateien, die als Ströme realisiert werden.
Und die Programmiersprache ist C++..

Sry, habe vergessen zu erwähnen, dass sich das Kapitel auf 2D Vektoren/Dateien bezog, die Aufgabe nur auf die Datei(-ströme) betraf.
Auf diesen Beitrag antworten »
as_string

Welches Buch? Kannst Du mal die Aufgabe komplett im Original-Wortlaut wiedergeben?
Du hast mir nicht verraten, ob es denn nun Zeilen- oder Zeichenweise rumgedreht werden soll, etc. Aber vielleicht würde es klarer werden, wenn Du einfach die komplette Aufgabe wörtlich zitieren könntest.

Gruß
Marco
 
Auf diesen Beitrag antworten »
beta258

Zitat:
Original von as_string
Welches Buch? Kannst Du mal die Aufgabe komplett im Original-Wortlaut wiedergeben?
Du hast mir nicht verraten, ob es denn nun Zeilen- oder Zeichenweise rumgedreht werden soll, etc. Aber vielleicht würde es klarer werden, wenn Du einfach die komplette Aufgabe wörtlich zitieren könntest.

Gruß
Marco


a
bc1
de232z

zeigt den Ausdruck von Datei daten.txt
Schreiben Sie ein Programm, dass die Datei rückwärts einliest und auf
dem Bildschirm ausgibt.


Ist aus einem Skript... Soll ich dir das zusenden?
Auf diesen Beitrag antworten »
user684

???
Auf diesen Beitrag antworten »
beta258

Das war der originale Wortlaut! Kannst du mir bitte helfen?
Auf diesen Beitrag antworten »
as_string

Ich hab immer noch nicht verstanden, was eigentlich raus kommen soll.
Soll das Ergebnis dann so aussehen:
code:
1:
2:
3:
4:
5:
de232z
bc1
a

oder so:
code:
1:
2:
3:
4:
5:
z232ed
1cb
a

Ersteres wäre zeilenweise umgedreht, letzteres zeichenweise.
Und nochmal zu meinem Lösungsansatz: Bei kleinen Dateien würde man die ganze Datei trotzdem komplett von vorne einlesen und nur die Ausgabe rückwärts machen. Das ist viel schneller, als in der Datei immer einen Schritt rückwärts gehen zu müssen. Bei größeren Dateien würde man das dann wahrscheinlich blockweise machen, um den Hauptspeicher nicht übermäßig zu belegen.
Aber anscheinend ist das hier nicht die gewünschte Lösung. Wenn die Datei zeichenweise rückwärts ausgegeben gelesen werden soll, hätte ich das hier schnell zusammen gehackt (Vorsicht: Ich fange keine Fehler ab und es kann sein, dass es nicht die optimale/sinnvollste Lösung ist! Ich programmiere seit Jahren nicht mehr in C++, bin da nicht so im "Training")
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
#include <iostream>
#include <fstream>

int main() {
    std::ifstream file("test.txt", std::ios::binary | std::ios::ate);
    while(file.tellg() > 0) {
        file.seekg(-1, std::ios_base::cur);
        int c = file.peek();
        if(c > 0) {
            std::cout << (char) c;
        }
    }
    file.close();
    return 0;
}


Wichtig dabei: Das ios::ate steht für: Springe ans Ende (at end) beim Öffnen.

Gruß
Marco
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »