<?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[Wiederhole Eingabe solange Eingabe korrekt??]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte ein einfaches Prgramm schreiben, das eine Binärzahl in ein char array einliest und eine Dezimalzahl ausgibt.</p>
<p>Ich hab jetzt Probleme wie ich die eingegebene Binärzahl kontrolliere und die Eingabe solange wiederholen lasse bis eine korrekte Binärzahl eingegeben wurde.</p>
<p>Untenstehender Code funktioniert nicht.</p>
<p>Bitte um Hilfe!!!</p>
<p>Danke! Clementis</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main(){
	const int ilen = 11;
	char cBin[ilen];
	int iDec = -1;
	bool bf = 1;

	while(bf==0){

		cout &lt;&lt; &quot;Eingabe einer Binaerzahl.\n&quot;;
		cin &gt;&gt; cBin;

		for( int i=0; i &lt; ilen; ++i){
			if(cBin[i]=='0' || cBin[i]=='1'){
				switch(cBin[i]){
					case 0:
					case 1: break;
					default: bf = 0;
							 break;
				}
			}
		}
	}
	for( int i=0; i &lt; ilen; ++i ){
		iDec += cBin[i] * 2^(ilen-1-i);
	}
	cout &lt;&lt; iDec &lt;&lt; endl;

	return 0;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/242308/wiederhole-eingabe-solange-eingabe-korrekt</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 01:45:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/242308.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 02 Jun 2009 11:41:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wiederhole Eingabe solange Eingabe korrekt?? on Tue, 02 Jun 2009 11:41:00 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte ein einfaches Prgramm schreiben, das eine Binärzahl in ein char array einliest und eine Dezimalzahl ausgibt.</p>
<p>Ich hab jetzt Probleme wie ich die eingegebene Binärzahl kontrolliere und die Eingabe solange wiederholen lasse bis eine korrekte Binärzahl eingegeben wurde.</p>
<p>Untenstehender Code funktioniert nicht.</p>
<p>Bitte um Hilfe!!!</p>
<p>Danke! Clementis</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main(){
	const int ilen = 11;
	char cBin[ilen];
	int iDec = -1;
	bool bf = 1;

	while(bf==0){

		cout &lt;&lt; &quot;Eingabe einer Binaerzahl.\n&quot;;
		cin &gt;&gt; cBin;

		for( int i=0; i &lt; ilen; ++i){
			if(cBin[i]=='0' || cBin[i]=='1'){
				switch(cBin[i]){
					case 0:
					case 1: break;
					default: bf = 0;
							 break;
				}
			}
		}
	}
	for( int i=0; i &lt; ilen; ++i ){
		iDec += cBin[i] * 2^(ilen-1-i);
	}
	cout &lt;&lt; iDec &lt;&lt; endl;

	return 0;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1719547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719547</guid><dc:creator><![CDATA[clementis]]></dc:creator><pubDate>Tue, 02 Jun 2009 11:41:00 GMT</pubDate></item><item><title><![CDATA[Reply to Wiederhole Eingabe solange Eingabe korrekt?? on Tue, 02 Jun 2009 11:51:08 GMT]]></title><description><![CDATA[<p>ich würde die schleifen tauschen, das die kontrollschleife innerhalb der<br />
for-schleife liegt:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

int main()
{
    const unsigned maxlen = 11;
    char bin[maxlen];

    std::cout &lt;&lt; &quot;Eingabe einer Binaerzahl.&quot; &lt;&lt; std::endl;

    for (unsigned i = 0; i  &lt; maxlen; ++i)
    {
        do
        {
            char buffer;
            std::cin &gt;&gt; buffer;
            if (buffer == '0' || buffer == '1')
                bin[ i] = buffer - '0';
        }
        while (buffer != '0' &amp;&amp; buffer != '1');
    }

    unsigned dec_num = 0;

    for (unsigned i = 0; i &lt; maxlen; ++i)
        dec_num += bin[ i] * (1 &lt;&lt; (maxlen - i - 1));

    std::cout &lt;&lt; dec_num &lt;&lt; std::endl;
}
</code></pre>
<p>^ ist der <strong>xor</strong> operator <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>
<p>natürlich ist es unschön immer eine zeile zu verwenden.</p>
<p>mit <em>std::cin::getline</em> bekommst du die ganze zeile.</p>
<p>MfG tippgeber</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719555</guid><dc:creator><![CDATA[tippgeber]]></dc:creator><pubDate>Tue, 02 Jun 2009 11:51:08 GMT</pubDate></item><item><title><![CDATA[Reply to Wiederhole Eingabe solange Eingabe korrekt?? on Tue, 02 Jun 2009 12:16:58 GMT]]></title><description><![CDATA[<p>Ungetestet, ich hab nur mal geändert, was mir so auf Anhieb aufgefallen ist:</p>
<p>clementis schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main(){
	const int ilen = 11;
	char cBin[ilen];
	int iDec = -1;
	bool bf = 0;       // hier!

	while(bf==0){
                bf = 1; // hier!
		cout &lt;&lt; &quot;Eingabe einer Binaerzahl.\n&quot;;
		cin &gt;&gt; cBin;

		for( int i=0; i &lt; ilen; ++i){
			if(cBin[i]=='0' || cBin[i]=='1')
			  continue; // hier!
				
			else
                          bf = 0; // hier!
		}
	}
	for( int i=0; i &lt; ilen; ++i ){
		iDec += cBin[i] * 2^(ilen-1-i);
	}
	cout &lt;&lt; iDec &lt;&lt; endl;

	return 0;

}
</code></pre>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1719568</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719568</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 02 Jun 2009 12:16:58 GMT</pubDate></item><item><title><![CDATA[Reply to Wiederhole Eingabe solange Eingabe korrekt?? on Tue, 02 Jun 2009 12:34:08 GMT]]></title><description><![CDATA[<p>Danke für Eure Antworten.</p>
<p>@tippgeber:<br />
Ich möchte die gesamte Zeichenkette einlesen, dann prüfen und gegebenenfalls nochmals einlesen, wenn keine Binärzahl.</p>
<p>Die Version von Belli endet in einer endlosen Eingabe.</p>
<p>Danke!</p>
<p>Hat bitte noch jemand einen Tipp für mich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719583</guid><dc:creator><![CDATA[clementis]]></dc:creator><pubDate>Tue, 02 Jun 2009 12:34:08 GMT</pubDate></item><item><title><![CDATA[Reply to Wiederhole Eingabe solange Eingabe korrekt?? on Tue, 02 Jun 2009 12:38:35 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;bitset&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;

int main()
{
	std::bitset&lt;32&gt; bitset;

	std::cout &lt;&lt; &quot;Geben sie eine Bitzahl ein:&quot; &lt;&lt; std::endl;

	for(;;)
	{
		std::cin.clear();
		std::cin.ignore(std::cin.rdbuf()-&gt;in_avail());

		std::string line;
		std::getline(std::cin, line);

		try
		{
			bitset = std::bitset&lt;32&gt;(line);
			break;
		}
		catch(std::invalid_argument&amp;)
		{
			std::cout &lt;&lt; &quot;Fehlerhafte eingabe. Nochmal: &quot; &lt;&lt; std::endl;
		}
	}

	std::cout &lt;&lt; &quot;Die Zahl lautet: &quot; &lt;&lt; bitset.to_ulong() &lt;&lt; std::endl;

	return 0;
}
</code></pre>
<p><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>
<p><a href="http://www.cplusplus.com/reference/" rel="nofollow">http://www.cplusplus.com/reference/</a><br />
<a href="http://www.cplusplus.com/reference/stl/bitset/" rel="nofollow">http://www.cplusplus.com/reference/stl/bitset/</a></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719589</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 02 Jun 2009 12:38:35 GMT</pubDate></item><item><title><![CDATA[Reply to Wiederhole Eingabe solange Eingabe korrekt?? on Tue, 02 Jun 2009 12:41:11 GMT]]></title><description><![CDATA[<p>try und catch<br />
bah pfui !</p>
<p>wenn schon dann mit schleifen <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/1719592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719592</guid><dc:creator><![CDATA[tippgeber]]></dc:creator><pubDate>Tue, 02 Jun 2009 12:41:11 GMT</pubDate></item><item><title><![CDATA[Reply to Wiederhole Eingabe solange Eingabe korrekt?? on Tue, 02 Jun 2009 12:59:00 GMT]]></title><description><![CDATA[<p>clementis schrieb:</p>
<blockquote>
<p>Die Version von Belli endet in einer endlosen Eingabe.<br />
Hat bitte noch jemand einen Tipp für mich?</p>
</blockquote>
<p>Ersetze:<br />
for( int i=0; i &lt; ilen; ++i){</p>
<p>durch:<br />
for( int i=0; i &lt; strlen(cBin); ++i){</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719616</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 02 Jun 2009 12:59:00 GMT</pubDate></item><item><title><![CDATA[Reply to Wiederhole Eingabe solange Eingabe korrekt?? on Tue, 02 Jun 2009 13:24:44 GMT]]></title><description><![CDATA[<p>Danke Belli, das hat geholfen!</p>
<p>Warum hat es vorher nicht funktioniert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719634</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719634</guid><dc:creator><![CDATA[clementis]]></dc:creator><pubDate>Tue, 02 Jun 2009 13:24:44 GMT</pubDate></item><item><title><![CDATA[Reply to Wiederhole Eingabe solange Eingabe korrekt?? on Tue, 02 Jun 2009 13:50:48 GMT]]></title><description><![CDATA[<p>Vorher wurden immer alle 11 (ilen) Stellen von cBin untersucht, auch wenn man nur 3 eingegeben hatte. Was dann ab Stelle 4 drinstand, war undefiniert und deshalb nicht zu gebrauchen.</p>
<p>Übrigens klappt Dein Umformen in eine Integerzahl so wohl auch nicht, oder?<br />
Aber für heute habe ich Feierabend, übrigens solltest Du ruhig versuchen, Draveres Lösung zu verstehen, das ist C++ in Reinkultur - ich vermute aber, Du willst selbst ein bißchen rumexperimentieren, um was zu lernen, deshalb habe ich versucht, Deinen Code so wenig wie nötig zu ändern, beim Umrechnen wird das allerdings schwierig ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719669</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 02 Jun 2009 13:50:48 GMT</pubDate></item><item><title><![CDATA[Reply to Wiederhole Eingabe solange Eingabe korrekt?? on Tue, 02 Jun 2009 14:28:38 GMT]]></title><description><![CDATA[<p>Danke!<br />
Du hast Recht. Das Umwandeln in einen int Wert funktioniert auch nicht.<br />
Ich werd mal stöbern, wie das so funktioniert.<br />
Vlt kannst du mir ja nach Feierabend bei der Berechnung helfen.</p>
<p>Die Loesung von Draveres werd ich mir auch zu Gemüte führen, aber ich befürchte, dass wir ein wenig länger dauern.</p>
<p>Danke nochmals an alle!</p>
<p>lg, Clementis</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719714</guid><dc:creator><![CDATA[clementis]]></dc:creator><pubDate>Tue, 02 Jun 2009 14:28:38 GMT</pubDate></item></channel></rss>