<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[doppelte einträge aussortieren]]></title><description><![CDATA[<p>Moin moin,</p>
<p>Ich habe vor aus einer bestimmten Datei doppelte Einträge rauszufiltern.</p>
<p>ich versuche es mit dieser Funktion:</p>
<pre><code>string s[2000];
while(getline(stream_in, s[zeile])) // Discards newline char
  {
  	  if(s[zeile] != &quot;&quot;) zeile++;
  } 
...
void delete_duplicated(string *s,string filein, int zeile)
{
 stream_out.open (filein.c_str());

 for(int i = 0;i &lt;=zeile-1;i++)
  {
	  for(int x = i+1;x &lt;=zeile;x++)
	  {
		  if(s[i] == s[x])
		  {
			  for(int y = x;y &lt;= zeile;y++)
			  {
                           s[y] = s[y+1]; 
			  //cout&lt;&lt;s[i]&lt;&lt;&quot;\n&quot;;
			  }
		  }
	  }   
	  stream_out &lt;&lt; s[i] &lt;&lt;&quot;\n&quot;;
	//cout&lt;&lt;s[i]&lt;&lt;&quot;\n&quot;;
  }
     stream_out.close();
}
</code></pre>
<p>Irgendwas scheint hier noch nicht zu stimmen.<br />
Wenn meine Datei so aussieht:</p>
<blockquote>
<p>a<br />
b<br />
c<br />
d<br />
e<br />
f<br />
g<br />
g<br />
g<br />
g<br />
g<br />
g<br />
g<br />
g</p>
</blockquote>
<p>Dann<br />
bekomme ich folgende ausgabe:</p>
<blockquote>
<p>a<br />
b<br />
c<br />
d<br />
e<br />
f<br />
g<br />
g<br />
g</p>
</blockquote>
<p>Wie man sieht sind immernoch 3 doppelte vorhanden.<br />
Ich denke der Fehler liegt wahrscheinlich am Algorithmus selbst und nicht am c++-code.<br />
Vieleicht kann mir ja hier jemand helfen.</p>
<p>Danke im Vorraus !<br />
Lusches<br />
Danke schonmal...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/258322/doppelte-einträge-aussortieren</link><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 10:35:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/258322.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 09 Jan 2010 11:21:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to doppelte einträge aussortieren on Sat, 09 Jan 2010 11:21:19 GMT]]></title><description><![CDATA[<p>Moin moin,</p>
<p>Ich habe vor aus einer bestimmten Datei doppelte Einträge rauszufiltern.</p>
<p>ich versuche es mit dieser Funktion:</p>
<pre><code>string s[2000];
while(getline(stream_in, s[zeile])) // Discards newline char
  {
  	  if(s[zeile] != &quot;&quot;) zeile++;
  } 
...
void delete_duplicated(string *s,string filein, int zeile)
{
 stream_out.open (filein.c_str());

 for(int i = 0;i &lt;=zeile-1;i++)
  {
	  for(int x = i+1;x &lt;=zeile;x++)
	  {
		  if(s[i] == s[x])
		  {
			  for(int y = x;y &lt;= zeile;y++)
			  {
                           s[y] = s[y+1]; 
			  //cout&lt;&lt;s[i]&lt;&lt;&quot;\n&quot;;
			  }
		  }
	  }   
	  stream_out &lt;&lt; s[i] &lt;&lt;&quot;\n&quot;;
	//cout&lt;&lt;s[i]&lt;&lt;&quot;\n&quot;;
  }
     stream_out.close();
}
</code></pre>
<p>Irgendwas scheint hier noch nicht zu stimmen.<br />
Wenn meine Datei so aussieht:</p>
<blockquote>
<p>a<br />
b<br />
c<br />
d<br />
e<br />
f<br />
g<br />
g<br />
g<br />
g<br />
g<br />
g<br />
g<br />
g</p>
</blockquote>
<p>Dann<br />
bekomme ich folgende ausgabe:</p>
<blockquote>
<p>a<br />
b<br />
c<br />
d<br />
e<br />
f<br />
g<br />
g<br />
g</p>
</blockquote>
<p>Wie man sieht sind immernoch 3 doppelte vorhanden.<br />
Ich denke der Fehler liegt wahrscheinlich am Algorithmus selbst und nicht am c++-code.<br />
Vieleicht kann mir ja hier jemand helfen.</p>
<p>Danke im Vorraus !<br />
Lusches<br />
Danke schonmal...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835501</guid><dc:creator><![CDATA[Lusches]]></dc:creator><pubDate>Sat, 09 Jan 2010 11:21:19 GMT</pubDate></item><item><title><![CDATA[Reply to doppelte einträge aussortieren on Sat, 09 Jan 2010 11:53:30 GMT]]></title><description><![CDATA[<p>Wie weiß dein Programm nach dem Aussortieren wie viele Einträge überhaupt noch gültig sind? Ich schätze dort liegt dein Problem.</p>
<p>Ein paar Tipps:<br />
std::string erleichtert dir die Arbeit mit Zeichenketten sehr.<br />
std::set kann dir helfen dein Problem mit doppelten Einträgen trivial zu lösen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835517</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 09 Jan 2010 11:53:30 GMT</pubDate></item><item><title><![CDATA[Reply to doppelte einträge aussortieren on Sat, 09 Jan 2010 13:22:41 GMT]]></title><description><![CDATA[<p>Ich verwende doch strings:</p>
<pre><code>string s[2000];
</code></pre>
<p>Ich glaube, dass ich weiß, was nicht richtig funktioniert.</p>
<p>Wenn ein doppelter string gefunden wurde (s[i] == s[x]) werden alle anderen strings um einen index nach unten verschobe (s[y] = s[y+1];).<br />
Wenn jetzt aber</p>
<p><div class="plugin-markdown"><input type="checkbox" id="checkbox160012" checked="true" /><label for="checkbox160012">mit s[x+1] ersetzt. Was passiert dann wenn s[x+1] auch genau die zeichenkette enthält die aussortiert werden soll ? Sie wird dann einfach ins Array geschrieben und nicht aussortiert.</label></div></p>
<p>...denke ich jedenfalls <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835553</guid><dc:creator><![CDATA[Lusches]]></dc:creator><pubDate>Sat, 09 Jan 2010 13:22:41 GMT</pubDate></item><item><title><![CDATA[Reply to doppelte einträge aussortieren on Sat, 09 Jan 2010 13:43:33 GMT]]></title><description><![CDATA[<p>Lusches schrieb:</p>
<blockquote>
<p>Ich verwende doch strings:</p>
</blockquote>
<p>Ups, da habe ich mich von den Arrayindizes dazu verleiten lassen, gar nicht mehr genau hinzugucken. Hat die Zahl 2000 bei deinem Programm eine besondere Bedeutung?</p>
<p>Zu deinem Problem:<br />
Spricht was dagegen:</p>
<pre><code class="language-cpp">set&lt;string&gt; my_set;
  string s;
  while(getline(my_stream, s))
    {
      my_set.insert(s);
    } 
  for (set&lt;string&gt;::iterator it=my_set.begin() ; it != my_set.end(); it++ )
    cout &lt;&lt; &quot; &quot; &lt;&lt; *it;
  cout&lt;&lt;endl;
</code></pre>
<p>Beispielseingabe:</p>
<pre><code>g
z 
d
f
g
d
t
f
g
d
</code></pre>
<p>Ausgabe:</p>
<pre><code>d f g t z
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1835567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835567</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 09 Jan 2010 13:43:33 GMT</pubDate></item><item><title><![CDATA[Reply to doppelte einträge aussortieren on Sat, 09 Jan 2010 14:16:34 GMT]]></title><description><![CDATA[<p>Da spricht eigentlich nichts dagegen.<br />
Wenn du mir jetzt noch sagst wie ich das String array s[] damit auffüllen kann ist die sache gebongt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>ich bekomme folgende Fehler wenn ich versuche einen code zu kompilieren:</p>
<blockquote>
<p>c:\dokumente und einstellungen\maik\eigene dateien\visual studio 2008\projects\makro(blog)\makro(blog)\makro(blog).cpp(168) : error C2065: 'set': nichtdeklarierter Bezeichner<br />
c:\dokumente und einstellungen\maik\eigene dateien\visual studio 2008\projects\makro(blog)\makro(blog)\makro(blog).cpp(168) : error C2275: 'std::string': Ungültige Verwendung dieses Typs als Ausdruck<br />
c:\programme\microsoft visual studio 9.0\vc\include\xstring(2210): Siehe Deklaration von 'std::string'<br />
c:\dokumente und einstellungen\maik\eigene dateien\visual studio 2008\projects\makro(blog)\makro(blog)\makro(blog).cpp(168) : error C2065: 'my_set': nichtdeklarierter Bezeichner<br />
c:\dokumente und einstellungen\maik\eigene dateien\visual studio 2008\projects\makro(blog)\makro(blog)\makro(blog).cpp(174) : error C2065: 'my_set': nichtdeklarierter Bezeichner<br />
c:\dokumente und einstellungen\maik\eigene dateien\visual studio 2008\projects\makro(blog)\makro(blog)\makro(blog).cpp(174) : error C2228: Links von &quot;.insert&quot; muss sich eine Klasse/Struktur/Union befinden.<br />
Typ ist ''unknown-type''<br />
c:\dokumente und einstellungen\maik\eigene dateien\visual studio 2008\projects\makro(blog)\makro(blog)\makro(blog).cpp(177) : error C2065: 'set': nichtdeklarierter Bezeichner<br />
c:\dokumente und einstellungen\maik\eigene dateien\visual studio 2008\projects\makro(blog)\makro(blog)\makro(blog).cpp(177) : error C2275: 'std::string': Ungültige Verwendung dieses Typs als Ausdruck<br />
c:\programme\microsoft visual studio 9.0\vc\include\xstring(2210): Siehe Deklaration von 'std::string'<br />
c:\dokumente und einstellungen\maik\eigene dateien\visual studio 2008\projects\makro(blog)\makro(blog)\makro(blog).cpp(177) : error C2955: &quot;std::iterator&quot;: Für die Verwendung der template-Klasse ist eine template-Argumentliste erforderlich.<br />
c:\programme\microsoft visual studio 9.0\vc\include\xutility(688): Siehe Deklaration von 'std::iterator'</p>
</blockquote>
<p>Anscheinend erkennt er das &quot;set&quot; nicht. std::set kennt er auch nicht.<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835587</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835587</guid><dc:creator><![CDATA[Lusches]]></dc:creator><pubDate>Sat, 09 Jan 2010 14:16:34 GMT</pubDate></item><item><title><![CDATA[Reply to doppelte einträge aussortieren on Sat, 09 Jan 2010 14:18:19 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;set&gt;
</code></pre>
<p>Und ja, set liegt im Namespace std, musst du also entweder überall davoschreiben oder ein entsprechendes using benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835588</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 09 Jan 2010 14:18:19 GMT</pubDate></item><item><title><![CDATA[Reply to doppelte einträge aussortieren on Sat, 09 Jan 2010 14:21:30 GMT]]></title><description><![CDATA[<p>Lusches schrieb:</p>
<blockquote>
<p>Da spricht eigentlich nichts dagegen.<br />
Wenn du mir jetzt noch sagst wie ich das String array s[] damit auffüllen kann ist die sache gebongt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
</blockquote>
<p>Indem du das Array weglässt und wie beschrieben einen ordentlichen Container (z.B. besagtes std::set) benutzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835590</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835590</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 09 Jan 2010 14:21:30 GMT</pubDate></item><item><title><![CDATA[Reply to doppelte einträge aussortieren on Sat, 09 Jan 2010 16:01:33 GMT]]></title><description><![CDATA[<p>Danke euch beiden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Ich habe das ganze jetzt folgendermaßen gelöst:</p>
<pre><code>void delete_duplicated(string *s,string filein, int zeile)
{
 set&lt;string&gt; my_set;
 stream_out.open (filein.c_str());

  for(int i = 0;i &lt;= zeile;i++)
	  my_set.insert(s[i]);

  int i = 0;
  for (set&lt;string&gt;::iterator it=my_set.begin() ; it != my_set.end(); it++ )
  {
   s[i] = *it;
   stream_out&lt;&lt;s[i]&lt;&lt;&quot;\n&quot;;
	  i++;
  }
  stream_out.close();    
}
</code></pre>
<p>Wenn ich die Container benutzen würde dann müsste ich ja den ganzen Quelltext der nach der Funktion kommt umschreiben. Hätte ich dadurch irgendwelche Vorteile ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835644</guid><dc:creator><![CDATA[Lusches]]></dc:creator><pubDate>Sat, 09 Jan 2010 16:01:33 GMT</pubDate></item><item><title><![CDATA[Reply to doppelte einträge aussortieren on Sat, 09 Jan 2010 16:18:35 GMT]]></title><description><![CDATA[<p>Lusches schrieb:</p>
<blockquote>
<p>Wenn ich die Container benutzen würde dann müsste ich ja den ganzen Quelltext der nach der Funktion kommt umschreiben. Hätte ich dadurch irgendwelche Vorteile ?</p>
</blockquote>
<p>Vorteil gegenüber festem array: du musst das array nicht mit irgendeiner fest codierten Zahl in der Größe begrenzen. Container passen sich in der Größe automatisch an.<br />
Vorteil gegenüber dynamischem Array: du musst keine unabhängige Variable pflegen die weiß wie viele Elemente im Array sind, du musst die Speicheranforderung nicht selber machen und auch die Freigabe nicht, das macht das Array alles selber.</p>
<p>Das Array hat demgegenüber keine nennenswerte Vorteile. Wenn du einen vector benutzt kannst du die Zugrife mit dem Indexoperator '[i]' weiter benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835657</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 09 Jan 2010 16:18:35 GMT</pubDate></item></channel></rss>