<?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[Leerzeichen komprimieren]]></title><description><![CDATA[<p>Ich habe hier eine Aufgabe, in der ein Text der aus einer Datei ausgelesen wird und von jeglichen doppelten oder mehrfach nacheinander auftretenden Leerzeichen eliminiert werden soll und immer nur eins stehen bleibt.</p>
<p>Bsp.: {2**Leerzeichen**und*****5*****Leerzeichen} in {2*Leerzeichen*und*5*Leerzeichen} *= Leerzeichen damit man es besser sieht was ich meine.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main () {
	char c;
	while (cin.get(c)) {
		if (c == 32) {
			cout &lt;&lt; c &lt;&lt; &quot;z&quot; &lt;&lt; endl;
		}
		else {
			cout &lt;&lt; c &lt;&lt; endl;
		}
	}

	system(&quot;pause&quot;);
	return 0;
}
</code></pre>
<p>Das ist das was ich bis jetzt habe. Ich weiß aber nicht wie ich die überschüssigen Leerzeichen entferne und immer nur eins stehen lasse.<br />
Ich kann zwar jetzt die Leerzeichen markieren mit &quot;z&quot; (War nur Kontrolle für mich selber ob es die Leerzeichen überhaupt erkennt) aber wie ich es auf eins reduziere ist mir bis jetzt noch zu hoch ...</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/286735/leerzeichen-komprimieren</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 19:08:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/286735.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 15 May 2011 16:28:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Leerzeichen komprimieren on Sun, 15 May 2011 16:33:04 GMT]]></title><description><![CDATA[<p>Ich habe hier eine Aufgabe, in der ein Text der aus einer Datei ausgelesen wird und von jeglichen doppelten oder mehrfach nacheinander auftretenden Leerzeichen eliminiert werden soll und immer nur eins stehen bleibt.</p>
<p>Bsp.: {2**Leerzeichen**und*****5*****Leerzeichen} in {2*Leerzeichen*und*5*Leerzeichen} *= Leerzeichen damit man es besser sieht was ich meine.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main () {
	char c;
	while (cin.get(c)) {
		if (c == 32) {
			cout &lt;&lt; c &lt;&lt; &quot;z&quot; &lt;&lt; endl;
		}
		else {
			cout &lt;&lt; c &lt;&lt; endl;
		}
	}

	system(&quot;pause&quot;);
	return 0;
}
</code></pre>
<p>Das ist das was ich bis jetzt habe. Ich weiß aber nicht wie ich die überschüssigen Leerzeichen entferne und immer nur eins stehen lasse.<br />
Ich kann zwar jetzt die Leerzeichen markieren mit &quot;z&quot; (War nur Kontrolle für mich selber ob es die Leerzeichen überhaupt erkennt) aber wie ich es auf eins reduziere ist mir bis jetzt noch zu hoch ...</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063699</guid><dc:creator><![CDATA[user369]]></dc:creator><pubDate>Sun, 15 May 2011 16:33:04 GMT</pubDate></item><item><title><![CDATA[Reply to Leerzeichen komprimieren on Sun, 15 May 2011 16:34:41 GMT]]></title><description><![CDATA[<p>Merk dir, ob das vorherige Zeichen ein Leerzeichen war. Ist das nächste Zeichen auch eines, dann überspringst du es.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063706</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 15 May 2011 16:34:41 GMT</pubDate></item><item><title><![CDATA[Reply to Leerzeichen komprimieren on Sun, 15 May 2011 17:17:17 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main () {
	char c1, c2;
	while (cin.get(c1), cin.get(c2)) {
		if ((c1 == ' ') &amp;&amp; (c2 == ' ')) {
			cout &lt;&lt; &quot; &quot;;
		}
		else {
			cout &lt;&lt; c1 &lt;&lt; endl;
		}
	}

	system(&quot;pause&quot;);
	return 0;
}
</code></pre>
<p>Mhh, ich denke mal du meinst irgendwie so.<br />
Aber funzt noch nicht. Wo ist der Fehler?<br />
Ich muss dazusagen ich bin gerade dabei es neu zu lernen also entschuldige wenn ich länger brauche ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063735</guid><dc:creator><![CDATA[user369]]></dc:creator><pubDate>Sun, 15 May 2011 17:17:17 GMT</pubDate></item><item><title><![CDATA[Reply to Leerzeichen komprimieren on Sun, 15 May 2011 17:23:59 GMT]]></title><description><![CDATA[<p>Du liest immer 2 Zeichen ein und vergleichst die dann.<br />
dh: sind beide ' ' dann gibts Du ein ' ' aus.</p>
<p>Ich glaube das war nicht was Du wolltest <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063739</guid><dc:creator><![CDATA[Scheppertreiber]]></dc:creator><pubDate>Sun, 15 May 2011 17:23:59 GMT</pubDate></item><item><title><![CDATA[Reply to Leerzeichen komprimieren on Sun, 15 May 2011 17:24:14 GMT]]></title><description><![CDATA[<p>Lies die Zeichen nacheinander, nicht gleichzeitig. Sonst erwischt du immer nur, wenn zwei Leerzeichen genau an den richtigen Stellen stehen. Und bei 4 Leerzeichen nacheinander gibst du dann 2 aus, was wohl auch nicht Sinn der Sache ist. Ich dachte eher so:</p>
<p>Pseudocode:</p>
<pre><code>vorheriges_zeichen_war_leerzeichen = false;
anfang:
  lese zeichen;
  wenn zeichen == leerzeichen und vorheriges_zeichen_war_leerzeichen dann:
    tue nichts;
  anderfalls, wenn zeichen == leerzeichen dann:
    gib ein leerzeichen aus 
    vorheriges_zeichen_war_leerzeichen = true;
  andernfalls:
    gib zeichen aus
    vorheriges_zeichen_war_leerzeichen = false;
  zurück zu anfang
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2063740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063740</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 15 May 2011 17:24:14 GMT</pubDate></item><item><title><![CDATA[Reply to Leerzeichen komprimieren on Sun, 15 May 2011 18:09:40 GMT]]></title><description><![CDATA[<p>Das Problem was ich habe ist, das ich nicht weiß wie ich zwei Werte an zwei verschiedenen Stellen einlese.</p>
<p>btw ... Diese Aufgabe ist als &quot;leicht&quot; klassifiziert aber bis jetzt konnte ich alle anderen Aufgaben und darunter auch als schwer klassifizierte innerhalb von 10-15min oder 30min alleine lösen. Hier sitz ich schon seit 2std und probiere mit dem vorhandenen Wissen was zu erreichen aber ich komm auf keinen grünen Zweig.<br />
Oder ich stehe einfach nur gewaltig auf dem Schlauch.<br />
Ich denke einfach, ich werde die Aufgabe erstmal sein lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063756</guid><dc:creator><![CDATA[user369]]></dc:creator><pubDate>Sun, 15 May 2011 18:09:40 GMT</pubDate></item><item><title><![CDATA[Reply to Leerzeichen komprimieren on Sun, 15 May 2011 18:35:53 GMT]]></title><description><![CDATA[<p>Dann liest du halt nur ein Zeichen ein und merkst dir das jeweils letzte. (ich würde ja std::unique() verwenden)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063767</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sun, 15 May 2011 18:35:53 GMT</pubDate></item><item><title><![CDATA[Reply to Leerzeichen komprimieren on Sun, 15 May 2011 18:56:23 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main () {
	char c1, c2;
	while (cin.get(c1)) {
		c2 = c1;
		if (c1 == ' ' &amp;&amp; c2 == ' ') {
			cout &lt;&lt; &quot;&quot;;
		}
		else {
			if (c1 == ' ' &amp;&amp; c2 != ' ') {
				cout &lt;&lt; &quot; &quot;;
			}
			else {
				 cout &lt;&lt; c1;
			}
		}
	}

	system(&quot;pause&quot;);
	return 0;
}
</code></pre>
<p>Das ist das was ich habe und ich denke das hier halt nur fehlt wie ich c2 den Wert des vorherigen c1 Wertes verpasse. Also mir ist klar das</p>
<pre><code class="language-cpp">c2 = c1
</code></pre>
<p>falsch ist aber ich weiß auch nicht wie ich es anders machen soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063779</guid><dc:creator><![CDATA[user369]]></dc:creator><pubDate>Sun, 15 May 2011 18:56:23 GMT</pubDate></item><item><title><![CDATA[Reply to Leerzeichen komprimieren on Sun, 15 May 2011 19:07:31 GMT]]></title><description><![CDATA[<p>Setze doch mal den Pseudocode von SeppJ um. Der ist doch schon sehr ausführlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063784</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063784</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sun, 15 May 2011 19:07:31 GMT</pubDate></item><item><title><![CDATA[Reply to Leerzeichen komprimieren on Sun, 15 May 2011 19:15:02 GMT]]></title><description><![CDATA[<p>user369 schrieb:</p>
<blockquote>
<p>Also mir ist klar das</p>
<pre><code class="language-cpp">c2 = c1
</code></pre>
<p>falsch ist aber ich weiß auch nicht wie ich es anders machen soll.</p>
</blockquote>
<p>Die Zuweisung ist schon richtig, nur steht sie an der falschen Stelle in der Schleife <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063793</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sun, 15 May 2011 19:15:02 GMT</pubDate></item><item><title><![CDATA[Reply to Leerzeichen komprimieren on Sun, 15 May 2011 19:25:31 GMT]]></title><description><![CDATA[<p>Ok, jetzt habe ich was gegessen und tadaaa <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>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

bool c2 = false;

int main () {
	char c1;
	bool c2 = false;
	while (cin.get(c1)) {
		if (c1 == ' ' &amp;&amp; c2) {
		}
		else {
			if (c1 == ' ') {
				cout &lt;&lt; &quot; &quot;;
				c2 = true;
			}
			else {
				 cout &lt;&lt; c1;
				 c2 = false;
			}
		}
	}

	system(&quot;pause&quot;);
	return 0;
}
</code></pre>
<p>Aber ich bräuchte für mich zum Verständnis noch eine Erklärung warum man c2 am Anfang als Konstant false ansieht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063795</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063795</guid><dc:creator><![CDATA[user369]]></dc:creator><pubDate>Sun, 15 May 2011 19:25:31 GMT</pubDate></item><item><title><![CDATA[Reply to Leerzeichen komprimieren on Sun, 15 May 2011 19:25:22 GMT]]></title><description><![CDATA[<p>Schau mal, so geht es etwas einfacher:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main () {
    char letztes = 'x';
    char aktuelles;

    while (cin.get(aktuelles))
    {
        if(!(aktuelles == ' ' &amp;&amp; letztes == ' '))
        	  cout &lt;&lt; aktuelles;

        letztes = aktuelles;
    }

}
</code></pre>
<p>zu Deiner Frage:<br />
c2 steht auf false, wenn das zuletzt gelesene Zeichen kein Leerzeichen war, deshalb wird es zu Programmbeginn mit false initialisiert. Im Programmablauf wird es auf true gesetzt, wenn ein Leerzeichen gefunden wurde, und wieder auf false, wenn ein anderes Zeichen gelesen wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063798</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Sun, 15 May 2011 19:25:22 GMT</pubDate></item><item><title><![CDATA[Reply to Leerzeichen komprimieren on Sun, 15 May 2011 19:24:38 GMT]]></title><description><![CDATA[<p>user369 schrieb:</p>
<blockquote>
<p>Ok, jetzt habe ich was gegessen und tadaaa <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>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

bool c2 = false;

int main () {
	char c1;
	bool c2 = false;
	while (cin.get(c1)) {
		if (c1 == ' ' &amp;&amp; c2) {
		}
		else {
			if (c1 == ' ') {
				cout &lt;&lt; &quot; &quot;;
				c2 = true;
			}
			else {
				 cout &lt;&lt; c1;
				 c2 = false;
			}
		}
	}

	system(&quot;pause&quot;);
	return 0;
}
</code></pre>
<p>Aber ich bräuchte für mich zum Verständnis noch eine Erklärung warum man c2 als Konstant false ansieht?</p>
</blockquote>
<p>Du meinst wohl Default false? Das ist deshalb so, weil am Anfang der Eingabe ja noch keine Leertaste eingegeben wurde.</p>
<p>Tipp 1: Benenne deine Variablen vernünftig<br />
Tipp 2: Die If-Bedingungen können SeppJ entsprechend vereinfacht werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063801</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sun, 15 May 2011 19:24:38 GMT</pubDate></item><item><title><![CDATA[Reply to Leerzeichen komprimieren on Sun, 15 May 2011 19:31:46 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>Schau mal, so geht es etwas einfacher:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main () {
    char letztes = 'x';
    char aktuelles;
    
    while (cin.get(aktuelles))
    {
        if(!(aktuelles == ' ' &amp;&amp; letztes == ' '))
        	  cout &lt;&lt; aktuelles;
        	  
        letztes = aktuelles;
    }

}
</code></pre>
<p>zu Deiner Frage:<br />
c2 steht auf false, wenn das zuletzt gelesene Zeichen kein Leerzeichen war, deshalb wird es zu Programmbeginn mit false initialisiert. Im Programmablauf wird es auf true gesetzt, wenn ein Leerzeichen gefunden wurde, und wieder auf false, wenn ein anderes Zeichen gelesen wurde.</p>
</blockquote>
<p>Ok, cool. Ich denke ich habs jetzt. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p><strong>Fettes</strong> Danke an alle <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2063810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063810</guid><dc:creator><![CDATA[user369]]></dc:creator><pubDate>Sun, 15 May 2011 19:31:46 GMT</pubDate></item><item><title><![CDATA[Reply to Leerzeichen komprimieren on Sun, 15 May 2011 20:00:17 GMT]]></title><description><![CDATA[<p>user369 schrieb:</p>
<blockquote>
<p><strong>Fettes</strong> Danke an alle <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>Bei dir ist aber das Fett fett und nicht das Danke <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/2063828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063828</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sun, 15 May 2011 20:00:17 GMT</pubDate></item><item><title><![CDATA[Reply to Leerzeichen komprimieren on Sun, 15 May 2011 20:11:28 GMT]]></title><description><![CDATA[<p>Das war ausnahmsweise mal Absicht <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063830</guid><dc:creator><![CDATA[user369]]></dc:creator><pubDate>Sun, 15 May 2011 20:11:28 GMT</pubDate></item><item><title><![CDATA[Reply to Leerzeichen komprimieren on Sun, 15 May 2011 21:53:12 GMT]]></title><description><![CDATA[<p>Obligatorischer Verweis auf die Standardbibliothek:</p>
<pre><code class="language-cpp">#include &lt;algorithm&gt;
#include &lt;iostream&gt;
#include &lt;iterator&gt;

bool both_spaces(char c, char d) {
  return c == ' ' &amp;&amp; d == ' ';
}

int main() {
  std::cin.unsetf(std::ios::skipws);
  std::unique_copy(std::istream_iterator&lt;char&gt;(std::cin),
                   std::istream_iterator&lt;char&gt;(),
                   std::ostream_iterator&lt;char&gt;(std::cout, &quot;&quot;),
                   both_spaces);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2063846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063846</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sun, 15 May 2011 21:53:12 GMT</pubDate></item></channel></rss>