0 Daumen
151 Aufrufe

Schreibt ein C++-Programmkopfstand, das eine Datei einliest und in exakt byteweise um-gekehrter Reihenfolge wieder ausgibt, d. h. das letzte Byte zuerst und das erste zuletzt. DieEingabedatei wird als erster Parameter angegeben. Der zweite gibt die Ausgabedatei an, dieggf. neu anzulegen ist. Ein Aufruf des Programms könnte z. B. lauten:kopfstand eingabeausgabeEuer Programm soll mit beliebig langen Eingabedateien umgehen können (d. h. Ihrkönnt nicht einfach die gesamte Datei in den Speicher laden, sondern müsst dieseblockweisebearbeiten).Euer Programm soll möglichst effizient arbeiten. Begründet, warum Eure Implementierungeffizient ist bzw. welche Faktoren Ihr hierbei bedacht habt. Ihr könnt zum Beispielmmap()ver-wenden, um jeweils einen Dateiblock in den Hauptspeicher einzublenden (wieder ausblendennicht vergessen!). Alternativ könnt Ihr die Methodenread(),write()undseekg()/tellg()der jeweils eingesetzten I/O-Stream-Objekte nutzen, um auf die Eingabedatei und auf die Aus-gabedatei zuzugreifen. Welche Variante ist schneller? Welche Betriebssystem-Funktionalitätenbeeinflussen eventuell das Messergebnis?Erkennt und behandelt Fehler. Stellt geeignete Testfälle vor. (Kann Euer Programm mit einerleeren Eingabedatei umgehen? Kann Euer Programm mit einer Eingabedatei umgehen, die eineungerade Länge hat? Kommt es mit Nullbytes in den Nutzdaten zurecht?) Für die Messungder Laufzeiten soll das Programm auf der Kommandozeile mit dem Hilfsprogrammtimeausgeführt werden.

Avatar von

Was ist deine Frage dazu?

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community