Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Doppelt vorkommende Zeilen einer Textdatei entfernen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.09.2017, 23:06 Uhr
Whitehad



Hallo liebe Leute ,

Ich bin ein Anfänger in der c++ Sprache was ich aber gerade in der Schule lernen (fachabi Informatik)
Und zwar ich habe eine Aufgabe bekommen von einer Textdatei die Zeilen zu überprüfen und wenn doppelt vorkommende Zeilen vorkommen diese zu entfernen und einmalig nicht doppelt auszugeben : Öffnen einer Datei und deren Inhalt auszugeben ist kein Problem ist schon erledigt mein Problem ist wie schreib ich den Code für das überprüfen doppeltvorkommender Zeilen .

Danke im Voraus LG Whitehad
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.09.2017, 23:43 Uhr
Hans
Library Walker
(Operator)


Hi,

habt Ihr eine Testdatei vorgegeben bekommen, womit Ihr übereprüfen könnt, ob Euer Programm das tut, was es soll?
Wenn nicht, wird es nämlich schwierig fest zu stellen, ob eine Zeile "nur" doppelt vorkommt, oder 3 und mehrmals. - Oder wenn in der Datei 10 mal die selbe Zeile steht, aber mit unterschieden dazwischen. Also etwa:

Code:
Dies ist ein Text.
Zweite Zeile sinnloser Text.
Dies ist ein Text.
Noch 'ne Zeile sinnloser Text.
Und noch 'ne Zeile sinnloser Text.
Dies ist ein Text.
Was weis ich.


Du wirst also jede Zeile mit allen nachfolgenden Vergleichen müssen, wozu Du erst einmal den ganzen Text in den Speicher holen musst. Dann die erste Zeile mit der zweiten vergleichen, Wenn identisch, zweite Zeile löschen, wenn nicht mit der nächsten Zeile vergleichen, bis Du durch den Text durch bist. Das ganze dann mit der zweiten Zeile, also zweite Zeile mit der dritten vergleichen. Bei Gleichheit die Dritte raus schmeissen, ansonsten mit allen nachfolgenden vergleichen. Am Ende vergleichst Du die vorletzte Zeile mit der letzten Zeile. Wenn sie gleich sind, musst Du die Letzte noch raus schmeissen, ansonsten bist Du fertig.
Das sind also zwei geschachtelte Schleifen, wobei die innere jeweils mit dem aktuellen Index der äusseren anfängt.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 28.09.2017 um 23:43 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
30.09.2017, 01:17 Uhr
ao

(Operator)


Man könnte auch alle Zeilen aus der Datei nacheinander folgendermaßen bearbeiten:
Alle Zeilen, die man zum ersten Mal liest, übernimmt man in den Speicher.
Alle Zeilen, die man zum wiederholten Mal liest, gibt man aus und verwirft sie.
Ob man eine Zeile zum ersten oder zum wiederholten Mal liest, das erkennt man daran, dass sie noch nicht im Speicher enthalten ist bzw. dass sie schon drin ist. Man muss also die Zeile, die man untersucht, mit allen vergleichen, die schon im Speicher stehen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
30.09.2017, 15:40 Uhr
Whitehad



okay , danke für ihre tipps
mein weiters Problem ist wie schreib ich dann den Code also in Code umsetzen und geht es auch mit einem vektor
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
30.09.2017, 20:44 Uhr
Hans
Library Walker
(Operator)


Hi,

also ein Vektor und ein Array ist in C bzw. C++ im wesentlichen das Selbe. Bei den C++ Vektoren (#include <vector> ) hast Du zwar ein paar zusätzliche Möglichkeiten, aber das lassen wir jetzt erst einmal beiseite. Denn die Frage, wie Du den Code zur Lösung von Deinem Problem schreibst, die musst Du Dir schon selber beantworten. Dazu nimmt Du ein Beispiel aus einem Buch/Skript/Tutorial, das Zeichen- oder Zeilenweise den Inhalt von einer Datei in eine andere kopiert. Das ist ein typisches Beispiel für die Anfänge der Dateibearbeitung und in jedem Buch zu finden. Mit diesem Beispielprogramm beschäftigst Du Dich solange, bis Du es verstanden hast. Dann überlegst Du, wie Du das Programm zur Lösung für Dein Problem umbaust bzw. erweiterst. Das musst Du aber schon selbst machen! Das machen wir nicht für Dich. - Wenn dann Probleme auftauchen, werden wir weiterhelfen, aber den Ansatz dafür musst Du schon selber liefern.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 04.10.2017 um 19:53 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: