UnderTears Geschrieben 2. März 2006 Geschrieben 2. März 2006 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 Zitieren
baba007 Geschrieben 2. März 2006 Geschrieben 2. März 2006 string array und dann navigieren ? Zitieren
UnderTears Geschrieben 2. März 2006 Autor Geschrieben 2. März 2006 Ich soll es nicht über ein Array realisieren, das war auch meine Idee, da könnte ich ja problemlos hoch und runter zählen... Zitieren
UnderTears Geschrieben 2. März 2006 Autor Geschrieben 2. März 2006 Davon hab ich noch nichts gehört *zugeb* Ich werde mal meister Google bemühen. Zitieren
UnderTears Geschrieben 2. März 2006 Autor Geschrieben 2. März 2006 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 Zitieren
Klotzkopp Geschrieben 3. März 2006 Geschrieben 3. März 2006 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? Zitieren
UnderTears Geschrieben 3. März 2006 Autor Geschrieben 3. März 2006 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 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.