<?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[Überprüfung mit Typecast]]></title><description><![CDATA[<p>Hallo!<br />
Meine Fragen sind noch ziemliche Anfängerfragen ich hoffe, dass ihr mir trotzdem helfen wollt!<br />
Die auskommentierte dritte Bedingung sollte ein Versuch sein zu prüfen ob es sich um eine ganze Zahl handelt. Diese Überprüfung will ich auch nur mit einem Typecasting machen. 1. Frage: Irgendetwas stimmt nicht und bei der Eingabe einer Kommazahl befinde ich mich in einer Dauerschleife. Woran liegt das?<br />
2. Frage: Wenn ich dieses Typecasting mache und es funktioniert, dann habe ich dadurch auch alle anderen ungültigen Eingaben ausgeschlossen oder?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main (void)
{
	/*deklaration*/ 
	int eingabe[10];
	int i = 0;                             

	do
	{

		cout &lt;&lt; &quot;Eingabe: \n&quot;;
		cin &gt;&gt; eingabe[i];
		if(eingabe[i]&gt;=10 &amp;&amp; eingabe[i]&lt;=20) // &amp;&amp; (eingabe[i]-int(eingabe[i])==0)) 
		{
			cout &lt;&lt;eingabe[i]&lt;&lt;&quot; wurde hinzugefügt  \n&quot;;
			i=i+1;

		} 
		else if(eingabe[i]&lt;10)
		{
				cout&lt;&lt;&quot;Zahl zu klein \n&quot;;
		}  
		else if(eingabe[i]&gt;20)
		{
				cout&lt;&lt;&quot;Zahl zu gross \n&quot;;
		}

	}while(i&lt;10);

	cout&lt;&lt;&quot;Inhalt des Arrays:\n&quot;;
	for (int i=0; i!=10; i++) {
		cout &lt;&lt;eingabe[i]&lt;&lt;&quot;, &quot;;
		cin.ignore();
		cin.get();
	}

}
</code></pre>
<p>Grüße</p>
<p>Sahnepudding</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/297324/überprüfung-mit-typecast</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 11:40:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/297324.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 24 Dec 2011 00:08:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Überprüfung mit Typecast on Sat, 24 Dec 2011 00:08:17 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Meine Fragen sind noch ziemliche Anfängerfragen ich hoffe, dass ihr mir trotzdem helfen wollt!<br />
Die auskommentierte dritte Bedingung sollte ein Versuch sein zu prüfen ob es sich um eine ganze Zahl handelt. Diese Überprüfung will ich auch nur mit einem Typecasting machen. 1. Frage: Irgendetwas stimmt nicht und bei der Eingabe einer Kommazahl befinde ich mich in einer Dauerschleife. Woran liegt das?<br />
2. Frage: Wenn ich dieses Typecasting mache und es funktioniert, dann habe ich dadurch auch alle anderen ungültigen Eingaben ausgeschlossen oder?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main (void)
{
	/*deklaration*/ 
	int eingabe[10];
	int i = 0;                             

	do
	{

		cout &lt;&lt; &quot;Eingabe: \n&quot;;
		cin &gt;&gt; eingabe[i];
		if(eingabe[i]&gt;=10 &amp;&amp; eingabe[i]&lt;=20) // &amp;&amp; (eingabe[i]-int(eingabe[i])==0)) 
		{
			cout &lt;&lt;eingabe[i]&lt;&lt;&quot; wurde hinzugefügt  \n&quot;;
			i=i+1;

		} 
		else if(eingabe[i]&lt;10)
		{
				cout&lt;&lt;&quot;Zahl zu klein \n&quot;;
		}  
		else if(eingabe[i]&gt;20)
		{
				cout&lt;&lt;&quot;Zahl zu gross \n&quot;;
		}

	}while(i&lt;10);

	cout&lt;&lt;&quot;Inhalt des Arrays:\n&quot;;
	for (int i=0; i!=10; i++) {
		cout &lt;&lt;eingabe[i]&lt;&lt;&quot;, &quot;;
		cin.ignore();
		cin.get();
	}

}
</code></pre>
<p>Grüße</p>
<p>Sahnepudding</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2160591</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2160591</guid><dc:creator><![CDATA[sahnepudding]]></dc:creator><pubDate>Sat, 24 Dec 2011 00:08:17 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung mit Typecast on Sat, 24 Dec 2011 00:11:00 GMT]]></title><description><![CDATA[<p>1.- du musst den puffer deines in streams löschen<br />
2.- nicht unbedingt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2160592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2160592</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sat, 24 Dec 2011 00:11:00 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung mit Typecast on Sat, 24 Dec 2011 00:59:52 GMT]]></title><description><![CDATA[<p>Ist das Problem nicht eher, dass hier beides</p>
<pre><code class="language-cpp">(eingabe[i]-int(eingabe[i])==0)
</code></pre>
<p>integer Werte sind und der Vergleich somit immer stimmt?<br />
Müsste ich vielleicht gleich von Anfang an, in double casten und nach int casten und wenn die differenz 0 ist, muss es ein Integer sein?<br />
Ich komme allerdings nicht darauf, wie ich das schreiben muss.</p>
<p>Wenn mit Puffer leeren cin.clear(); gemeint war, dann hat das auf mein Problem keine Auswirkungen gehabt.</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2160598</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2160598</guid><dc:creator><![CDATA[sahnepudding]]></dc:creator><pubDate>Sat, 24 Dec 2011 00:59:52 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung mit Typecast on Sat, 24 Dec 2011 01:11:00 GMT]]></title><description><![CDATA[<p>z.T. Endlosschleife guck mal da, schätze das wird der Grund sein:<br />
<a href="http://www.cplusplus.com/reference/iostream/ios/fail/" rel="nofollow">http://www.cplusplus.com/reference/iostream/ios/fail/</a></p>
<p>Was das Eingeben von Integern angeht: ich würde da nicht mit float/double arbeiten wollen.</p>
<p>Was du statt dessen machen könntest: lies eine Zeile als std::string ein, und dann versuche diesen std::string mit z.B. boost::lexical_cast in einen Integer zu konvertieren.</p>
<p>boost::lexical_cast überprüft dabei ob der Input-String beim Konvertieren in einen Integer vollständig &quot;konsumiert&quot; wird. Wenn der String eine Kommazahl enthält, dann stoppt die Konvertierung beim &quot;.&quot; bzw. &quot;,&quot;, und boost::lexical_cast wirft einen Fehler.<br />
(Da schliesst natürlich auch Dinge wie &quot;1.0&quot; als gültige Eingabe aus, was aber in den meisten Fällen akzeptabel sein sollte)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2160600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2160600</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 24 Dec 2011 01:11:00 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung mit Typecast on Sat, 24 Dec 2011 01:20:54 GMT]]></title><description><![CDATA[<p>Danke ersteinmal für die Antwort!<br />
Am liebsten würde ich das auch anders machen, mir wurde aber vorgegeben die Überprüfung auf Ganzzahligkeit mit einem Typecasting durchzuführen.<br />
Und, dass die Eingabe zunächst in ein int-Array erfolgen soll.<br />
Wenn ich eine Kommazahl in ein Int-Array schreibe wird sie sowieso abgeschnitten. D.h. die Überprüfung müsste davor schon stattfinden.<br />
Mir ist das jetzt von der Logik nicht ganz klar, was ich in welcher Reihenfolge tun muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2160602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2160602</guid><dc:creator><![CDATA[sahnepudding]]></dc:creator><pubDate>Sat, 24 Dec 2011 01:20:54 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung mit Typecast on Sat, 24 Dec 2011 02:27:25 GMT]]></title><description><![CDATA[<p>Soweit bin ich jetzt</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main (void)
{
	/*deklaration*/ 
	int eingabe[10];
	int i = 0;                             
	double check;

	do
	{

		cout &lt;&lt; &quot;Eingabe: \n&quot;;
		cin &gt;&gt; check;
		if(check&gt;=10 &amp;&amp; check&lt;=20 &amp;&amp; check-((int)check)==0) 
		{
			cout &lt;&lt;(int)check&lt;&lt;&quot; wurde hinzugefügt  \n&quot;;
			eingabe[i]=(int)check;
			i=i+1;

		} 
		else if(check&lt;10)
		{
				cout&lt;&lt;&quot;Zahl zu klein \n&quot;;
		}  
		else if(check&gt;20)
		{
				cout&lt;&lt;&quot;Zahl zu gross \n&quot;;
		}
		else if(check-((int)check)!=0)
		{
                cout&lt;&lt;&quot;ungueltige Eingabe \n&quot;;    
        }

	}while(i&lt;10);

}
</code></pre>
<p>Soweit ich das sehe, können keine falschen Eingaben ins Array geschrieben werden. 11.5 ist ungültig; 1.1 zu klein und 20.5 zu groß. Das ist für mich so eigentlich OK. Nur wenn ich jetzt Sachen wie &quot; 11.1.1 &quot; oder Buchstaben eingebe, kommt es zu Endlosschleifen oder ungewollten mehrfacheingaben.<br />
Hat dazu vielleicht noch Jemand einen Tipp?</p>
<p>Grüße</p>
<p>:xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2160604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2160604</guid><dc:creator><![CDATA[sahnepudding]]></dc:creator><pubDate>Sat, 24 Dec 2011 02:27:25 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung mit Typecast on Sat, 24 Dec 2011 14:36:52 GMT]]></title><description><![CDATA[<p>sahnepudding schrieb:</p>
<blockquote>
<p>Soweit bin ich jetzt</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main (void)
{
	/*deklaration*/ 
	int eingabe[10];
	int i = 0;                             
	double check;
	
	do
	{
		
		cout &lt;&lt; &quot;Eingabe: \n&quot;;
		cin &gt;&gt; check;
                if ( !cin )
                {
                    cin.clear();
                    cin.ignore(cin.rdbuf()-&gt;in_avail()); 
                } 
		if(check&gt;=10 &amp;&amp; check&lt;=20 &amp;&amp; check-((int)check)==0) 
		{
			cout &lt;&lt;(int)check&lt;&lt;&quot; wurde hinzugefügt  \n&quot;;
			eingabe[i]=(int)check;
			i=i+1;
			                   
		} 
		else if(check&lt;10)
		{
				cout&lt;&lt;&quot;Zahl zu klein \n&quot;;
		}  
		else if(check&gt;20)
		{
				cout&lt;&lt;&quot;Zahl zu gross \n&quot;;
		}
		else if(check-((int)check)!=0)
		{
                cout&lt;&lt;&quot;ungueltige Eingabe \n&quot;;    
        }
		
	}while(i&lt;10);
	
	
}
</code></pre>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2160709</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2160709</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sat, 24 Dec 2011 14:36:52 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung mit Typecast on Sat, 24 Dec 2011 14:51:53 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">cin.rdbuf()-&gt;in_avail());
</code></pre>
</blockquote>
<p>Im Allgemeinen bekommst du hier fei immer 0 zurück.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2160715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2160715</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 24 Dec 2011 14:51:53 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung mit Typecast on Mon, 26 Dec 2011 14:19:07 GMT]]></title><description><![CDATA[<p>dann eben std::numeric_limits&lt;unsigned int&gt;::max</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2161060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2161060</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 26 Dec 2011 14:19:07 GMT</pubDate></item><item><title><![CDATA[Reply to Überprüfung mit Typecast on Mon, 26 Dec 2011 14:45:56 GMT]]></title><description><![CDATA[<p>std::streamsize wenn schon.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2161066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2161066</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 26 Dec 2011 14:45:56 GMT</pubDate></item></channel></rss>