Veröffentlicht 2. März 200619 j Huhu, ich hab ne Aufgabe von meinem Ausbilder bekommen die folgendermaßen lautet: Erstelle ein Programm, das eine Datei Seitenweise, d.h. eine vorgegebene Anzahl von Zeilen auf einmal, auf den Bildschirm ausgibt. Die Ausgabe kann mit folgenden Befehlen, die über die Tastatur eingeben werden, gesteuert werden: 1. q – Verlassen des Programms 2. d – nächste Seite 3. u – vorhergehende Seite Der Dateiname und die Anzahl der Zeilen pro Zeile sollen interaktiv eingegeben werden. Das ganze sieht jetzt dann folgender maßen aus... #include <iostream> #include <fstream> #include <string> #include <stdlib.h> using namespace std; int main() { int i = 0; int lines = 0; int linesstd = 0; char filename [255]; char wahl; string s; cout << "Wieviele Zeilen sollen ausgegeben werden? "; cin >> linesstd; lines=linesstd; cout << "Bitte geben Sie den Dateipfad an: "; cin >> filename; fstream file(filename); if(!file) { cout << "Datei nicht gefunden:" << filename << endl; } while(linesstd > i) { getline(file,s); cout << s << endl; i++; }; while (wahl != 'q') { cout << "Wollen Sie die naechste Zeile ausgeben(d)" << endl; cout << "oder die vorhergehende Zeile (u) ausgeben?" << endl; cin >> wahl; if (wahl == 'd') { lines = linesstd+lines; while(lines > i) { getline(file,s); cout << s << endl; i++; }; } else if (wahl == 'u') { ???"vorherige zeile (theoretisch)" ??? } else if (wahl == 'q') { system("PAUSE"); } else { cout << "Ungueltige Wahl!\n"; } } return 0; system ("PAUSE"); } funktioniert bis dahin auch, aber ich weiß nicht wie ich es realisieren soll, dass er die vorherige Zeile ausgibt :confused: Hoffe ihr könnt mir helfen
2. März 200619 j Ich soll es nicht über ein Array realisieren, das war auch meine Idee, da könnte ich ja problemlos hoch und runter zählen...
2. März 200619 j Ich habe grade mal das hier: else if (wahl == 'u') { lines = 0; while (lines < linesstd) { getline(file,s); cout << s << endl; lines++; cout << lines << endl; } probiert. Wieso klappt das nur beim der ersten u-Eingabe und geht hinterher weiter als hätte ich d eingegeben? Boah C++ wird mir immer unsympathischer:floet: Und nochwas: Wieso schreibt er in die Datei? Dazu forder ich doch nirgends auf?:eek
3. März 200619 j Wieso klappt das nur beim der ersten u-Eingabe und geht hinterher weiter als hätte ich d eingegeben?Weil dein Algorithmus falsch ist. Du solltest zuerst einen Algorithmus formulieren, und den dann in C++ umsetzen. Deine jetztige Vorgehensweise ist eher ein Mischmasch aus beidem - "Ich hab mal probiert". Das geht vor allem dann in die Hose, wenn man in C++ noch nicht so recht sattelfest ist. Oder du zerlegst das Problem in Teilprobleme: Schreib doch erst mal ein Programm, dass die ganze Datei in einen Vector aus Strings einliest, und diesen Vector ausgibt. Boah C++ wird mir immer unsympathischer:floet: Du solltest wirklich nicht die Sprache für deine Unzulänglichkeiten verantwortlich machen :floet: Und nochwas: Wieso schreibt er in die Datei? Dazu forder ich doch nirgends auf?:eekWie äußert sich das denn, dass "er" in die Datei schreibt?
3. März 200619 j Du solltest wirklich nicht die Sprache für deine Unzulänglichkeiten verantwortlich machen :floet: Ok, überredet Wie äußert sich das denn, dass "er" in die Datei schreibt? Also "Er" kopiert lines mehrfach in die Datei, erweitert Zeilen durch Zaheln etc... Eine Logik hab ich dahinter leider noch nicht entdeckt
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.