hilfe beim ...
-
klar,
#include <iostream> #include <fstream> #include <string> #include <vector> using namespace std; int main() { vector<string> words; vector<string> dwords; string word; ifstream FileIn ("test.txt"); while (FileIn >> word) { words.push_back(word); } FileIn.close(); vector<string> words2 = words; while (true) { //ich weiß das diese schleife nicht das tut was sie soll int y = 0, x = 0; if (words[x] != words2[y]) x++; else { x++; dwords.push_back(words[x]);} if (x == words.size() - 1) { y++; if (words[x] != words2[y]) } if (x == words.size()-1 && y == words2.size()-1) break; } cout<<dwords[0]; //nur testmäßig system ("Pause"); }
wie man sieht bin ich noch nicht sooo sonderlich zeit aber ich weiß auch nicht wie ich das auch realisieren muss, wer schön wenn man da was machen könnte.
-
Hi!
Also wenn du doppelte Wörter hats würde ich eine Map nehmen. Schlüssel ist dann die Zeile und Wert der string, oder du machst es so das String der Schlüssel ist und eine Liste ist mit den Positionen der Wert:
map<std::size_t, std::string> dWord; // Schlüssel: Position; Wert: String // oder map<std::string, std::list<std::size_t> > dWord; //Schlüssel: String; Wert: Liste mit Positionen
Und dann würde ich es wie folgt machen:
Die Datei einlesen. Danach den ersten String nehmen und gucken wie oft dieser im vector vorkommt. Bei >1 alle vorkommen suchen und in einer Map speichern mitsamt Position. Und das machst du dann mit jedem String.Code-Hacker
-
mmh, dumme frage, was ist genau eine map?
-
dgrat schrieb:
mmh, dumme frage, was ist genau eine map?
ein vector, wo die schlüssel nicht nur ints sein müssen, wie beim vector.
bei der map kann man auch zum bleistift strings als schlüssel nehmen.
beim vector<Value> würde ja v["hallo"] gar nicht gehen, bei ner map<Key,Value> mit key==string geht das schon.
innendrin ist die map normalerweise ein ballancierter binärer sortierbaum (kurz birnbaum). anderer worte für map sind dictionary und hash.
-
volkard schrieb:
ein vector, wo die schlüssel nicht nur ints sein müssen, wie beim vector.
ja ... gut.
volkard schrieb:
bei der map kann man auch zum bleistift strings als schlüssel nehmen.
wie bitte?
volkard schrieb:
beim vector<Value> würde ja v["hallo"] gar nicht gehen, bei ner map<Key,Value> mit key==string geht das schon.
wenn dus sagst
volkard schrieb:
innendrin ist die
map normalerweise ein ballancierter binärer sortierbaum
(kurz birnbaum). ...
was ist ein:"ballancierter binärer sortierbaum"
-
Hi!
Guck mal hier, dort findest du eine kleine Beschreibung und eine C-Implementierung eines Binär Baumes:
http://www.fh-wedel.de/~si/vorlesungen/c/beispiele/bintree/index.html
und noch andere Algorithmen die du in C++ durch die STL bereits geliefert bekommst:
http://www.fh-wedel.de/~si/vorlesungen/c/beispiele/inhalt-dyn.htmlCode-Hacker
-
dgrat schrieb:
was ist ein:"ballancierter binärer sortierbaum"
Ein Binärbaum ist eine Datenstruktur, bestehend aus Knoten, wobei jeder Knoten maximal den Grad 3 hat (bei Mehrwegbäumen kann der höher sein). Bei einem (vollständig) balancierten Baum unterscheidet sich jede Knotenhöhe um maximal 1 von seinen Nachfolgerknoten (der Baum kann z.B. nicht zu einer verketteten Liste entarten)
-
und das "sortier-" steht dafür, daß das linke kind kleiner(oder gleich) als der papa und das rechte king größer(oder gleich) ist, was ja eigentlich erwähnt werden muß, weil heaps und stammbäume auch echte bäume sind, nur halt nicht normale (sortier-)bäume.
-
Ach übrigens: So viel zu sinnvollen Titeln!
-
Canon schrieb:
Ach übrigens: So viel zu sinnvollen Titeln!
jaja, hab schon überlegt ob ich bei titel "mir fällt nichts ein" schreiben sollte, aber dann hab ich einen gewählt der das nur ausdrückt.
-
könnte man vielleicht zeigen wie das auszusehen hätte wenn man dann doppelte strings herausfischen will. ich habe sowas noch nie gesehen, und hab niemenden der das sonst(vielleich) wüsste.