<?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[Eingabeüberprüfung]]></title><description><![CDATA[<p>Hey,</p>
<p>folgendes Problem:</p>
<p>Ich muss eine Zahl eingeben...soweit so leicht^^</p>
<p>cin&gt;&gt;zahl</p>
<p>diese Zahl muss einer Funktion übergeben werden..das ist auch kein problem.</p>
<p>dann gehts los:<br />
In der Funktion soll die Zahl überprüft werden und wenn sie, keine zahl sondern ein Buchstabe ist oder eine Kommazahl ist, oder kleiner als 4 oder größer 9 ist, soll in der Funktion eine neueingabe erfolgen, wieder alle überprüfungen durcharbeiten und wenn die zahl endlich den ansprüchen genügt, soll sie zurückgegeben werden. Das zurückgeben ist jetzt auch nicht das Problem.</p>
<pre><code class="language-cpp">//...
int main(void)
//...
cin&gt;&gt;zahl; //eingabe
pruef1(zahl); //übergabe an funktion
//...
</code></pre>
<p>so schaut die übergabe aus</p>
<p>für die Kommazahl überprüfung hab ich mir sowas überlegt das von der zahl einfach die ganze zeit 1 abgezogen wird bis die Zahl am ende zwischen 0 und 1 liegt, also einen rest hat und damit eine Kommazahl ist, oder das sie ==0 ist und damit zulässig ist.<br />
Vom prinzip her schaut das dann so aus:</p>
<pre><code class="language-cpp">int pruef1(int x)
{
int b;
b=x;// b wird x zugewiesen da x in der funktion noch verändert wird
while (x&lt;4 || x&gt;9)
{
cout&lt;&lt;&quot;Fehler. Neueingabe\n&quot;;
cin&gt;&gt;x;
}
while (x&gt;=0)
{
x--;
	if (x&lt;1 &amp;&amp; x&gt;0)
	{
	cout&lt;&lt;&quot;Kommazahl. Falscheingabe\n&quot;
	cin&gt;&gt;x;
	}
	if (x==0)
	{
	return(b);
	}			
 return(0)	
}
</code></pre>
<p>soweit so schlecht. Jetzt ist die Frage wie Buchstaben verhinder kann und alles so zusammenfüge das es passt. Ich habe schon ein bisschen mit cin.fail() und isdigit(x) experimentiert und ihr glaub gar nicht wie gut ich endlosschleifen programmieren kann^^<br />
Wenn ihr mir weiterhelfen könnt wäre ich sehr dankbar.<br />
Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/284976/eingabeüberprüfung</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 16:07:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284976.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 12 Apr 2011 10:05:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eingabeüberprüfung on Tue, 12 Apr 2011 10:05:58 GMT]]></title><description><![CDATA[<p>Hey,</p>
<p>folgendes Problem:</p>
<p>Ich muss eine Zahl eingeben...soweit so leicht^^</p>
<p>cin&gt;&gt;zahl</p>
<p>diese Zahl muss einer Funktion übergeben werden..das ist auch kein problem.</p>
<p>dann gehts los:<br />
In der Funktion soll die Zahl überprüft werden und wenn sie, keine zahl sondern ein Buchstabe ist oder eine Kommazahl ist, oder kleiner als 4 oder größer 9 ist, soll in der Funktion eine neueingabe erfolgen, wieder alle überprüfungen durcharbeiten und wenn die zahl endlich den ansprüchen genügt, soll sie zurückgegeben werden. Das zurückgeben ist jetzt auch nicht das Problem.</p>
<pre><code class="language-cpp">//...
int main(void)
//...
cin&gt;&gt;zahl; //eingabe
pruef1(zahl); //übergabe an funktion
//...
</code></pre>
<p>so schaut die übergabe aus</p>
<p>für die Kommazahl überprüfung hab ich mir sowas überlegt das von der zahl einfach die ganze zeit 1 abgezogen wird bis die Zahl am ende zwischen 0 und 1 liegt, also einen rest hat und damit eine Kommazahl ist, oder das sie ==0 ist und damit zulässig ist.<br />
Vom prinzip her schaut das dann so aus:</p>
<pre><code class="language-cpp">int pruef1(int x)
{
int b;
b=x;// b wird x zugewiesen da x in der funktion noch verändert wird
while (x&lt;4 || x&gt;9)
{
cout&lt;&lt;&quot;Fehler. Neueingabe\n&quot;;
cin&gt;&gt;x;
}
while (x&gt;=0)
{
x--;
	if (x&lt;1 &amp;&amp; x&gt;0)
	{
	cout&lt;&lt;&quot;Kommazahl. Falscheingabe\n&quot;
	cin&gt;&gt;x;
	}
	if (x==0)
	{
	return(b);
	}			
 return(0)	
}
</code></pre>
<p>soweit so schlecht. Jetzt ist die Frage wie Buchstaben verhinder kann und alles so zusammenfüge das es passt. Ich habe schon ein bisschen mit cin.fail() und isdigit(x) experimentiert und ihr glaub gar nicht wie gut ich endlosschleifen programmieren kann^^<br />
Wenn ihr mir weiterhelfen könnt wäre ich sehr dankbar.<br />
Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047935</guid><dc:creator><![CDATA[Thörb]]></dc:creator><pubDate>Tue, 12 Apr 2011 10:05:58 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabeüberprüfung on Tue, 12 Apr 2011 10:19:45 GMT]]></title><description><![CDATA[<p>Ich würde mit einem <code>std::string</code> und mit <code>std::getline</code> arbeiten und dann auf die Kriterien prüfen. Denn wenn man einen Buchstabe eingibt und du</p>
<pre><code class="language-cpp">std::cin &gt;&gt; MeinInt;
</code></pre>
<p>geschrieben hast, krachts.</p>
<p>MfG, EOutOfResources</p>
<p>EDIT:</p>
<pre><code class="language-cpp">int pruef1(int x) 
{ 
int b; 
b=x;// b wird x zugewiesen da x in der funktion noch verändert wird
...
}
</code></pre>
<p>b ist nur nötig, wenn x eine Referenz oder ein Zeiger ist. Auf deine Art wird eine Kopie erstellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047942</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Tue, 12 Apr 2011 10:19:45 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabeüberprüfung on Tue, 12 Apr 2011 10:25:43 GMT]]></title><description><![CDATA[<p>Das was du geschrieben hast hab ich schon mal gelesen...aber mehr auch nicht<br />
wenns gar nicht anders geht werde ich mich jetzt schon in solche angelegenheiten einlesen aber geht das nicht auch ein bisschen leichter? gibts da nicht doch eine möglichkeit das mit cin.fail() und cin.clear() zu machen?<br />
Bin noch nicht ganz so weit was c++ angeht und hab eben versucht mit meinem wissen irgendwas für die aufgabe zu basteln^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047945</guid><dc:creator><![CDATA[Thörb]]></dc:creator><pubDate>Tue, 12 Apr 2011 10:25:43 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabeüberprüfung on Tue, 12 Apr 2011 10:28:51 GMT]]></title><description><![CDATA[<p>Ein <code>int</code> kann nur ganze Zahlen aufnehmen. Keine Buchstaben und keine Kommazahlen. Wenn also etwas anderes als eine ganze Zahl eingegeben wird, kann in <code>MeinInt</code> gar kein sinnvoller Wert stehen.<br />
<code>cin</code> bietet dir aber an, nach dem Einlesen zu prüfen, ob denn der Nutzer eine korrekte Eingabe getätigt hat. Die Prüffunktion muss dann noch prüfen, ob die Zahl auch in dem richtigen Bereich liegt (das kann <code>cin</code> ja nicht wissen). Außerdem würde ich in der Prüffunktion nur die Überprüfung und nicht die Neueingabe tätigen.</p>
<p>Am Ende könnte es so aussehen:</p>
<pre><code class="language-cpp">bool pruefe(int x)
{
    return x &gt;= 4 &amp;&amp; x &lt;= 9;
}

int main()
{
    int zahl;
    cout &lt;&lt; &quot;Bitte Zahl eingeben: &quot;;
    while(!(cin &gt;&gt; zahl) || !pruefe(zahl)) cout &lt;&lt; &quot;Falsch. Neueingabe: &quot;;
    // arbeite mit zahl
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2047948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047948</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Tue, 12 Apr 2011 10:28:51 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabeüberprüfung on Tue, 12 Apr 2011 10:40:06 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
int main()
{
  int Zahl;
  std::cin &gt;&gt; Zahl;
  if(std::cin.fail())
  {
    std::cin.clear();
    std::cout &lt;&lt; &quot;Keine &quot;;
  };

  std::cout &lt;&lt; &quot;Zahl&quot;;
};
</code></pre>
<p>MfG, EOutOfResources</p>
<p>EDIT: Ungetestet, Flüchtigkeitsfehler möglich</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047949</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Tue, 12 Apr 2011 10:40:06 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabeüberprüfung on Wed, 13 Apr 2011 06:27:42 GMT]]></title><description><![CDATA[<p>Hey,<br />
ich hab noch ein bisschen weitergesucht nachdem ich nicht auf eine lösung gekommen bin mit der ich was anfangen kann. (Danke für eure Posts)</p>
<p>Aber: Ich bin hier im Forum fündig geworden und hab nen alten Code ausgegraben</p>
<pre><code class="language-cpp">double MASSE;
    string eingabe;
    char *err_ptr = NULL;

    do
    {
        err_ptr = NULL;
        cout &lt;&lt; &quot;Bitte geben sie die Masse ein (Wert &gt;= 10):  &quot; &lt;&lt; endl;
        cin &gt;&gt; eingabe;
        MASSE = strtod( eingabe.c_str(), &amp;err_ptr );
    }
    while (  *err_ptr != '\0' || ( MASSE &lt; 10) );

    cout &lt;&lt; &quot;Sie haben bombensicher einen Wert &gt;= 10 &quot;
        &quot;eingegeben: &quot; &lt;&lt; MASSE &lt;&lt; endl;
</code></pre>
<p>Kann mir jemand erklären was genau da passiert? hab das für meinen Code schon umgeformt nur ich versteh nicht wirklich was genau da gemacht wird. Ich will ja wissen wie das funktioniert das ich für solche Abfragen immer ne Lösung hab.<br />
Wenn sich jemand findet wäre ich echt dankbar. (Er darf dann auch mal mein, jetzt fertiges Vier-Gewinnt-Spiel spiele^^)</p>
<p>Lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048447</guid><dc:creator><![CDATA[Thörb]]></dc:creator><pubDate>Wed, 13 Apr 2011 06:27:42 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabeüberprüfung on Wed, 13 Apr 2011 06:51:37 GMT]]></title><description><![CDATA[<p>Das ist ein Gemisch zwischen C++ und C</p>
<pre><code class="language-cpp">double MASSE;                                                         //Neue Variable deklarieren (Zahl)
    string eingabe;                                                       //Neue Variable deklarieren (Eingabe)
    char *err_ptr = NULL;                                                 //Neue Variable deklarieren (Chars die nicht zur Zahl gehören) wobei die Definition sinnlos ist

    do                                                                    //Schleife
    {
        err_ptr = NULL;                                                   //Nicht-Nummer-CString nullen
        cout &lt;&lt; &quot;Bitte geben sie die Masse ein (Wert &gt;= 10):  &quot; &lt;&lt; endl;  //Antwort anfragen
        cin &gt;&gt; eingabe;                                                   //Eingabe aufnehmen
        MASSE = strtod( eingabe.c_str(), &amp;err_ptr );                      //Die Eingabe in eine Zahl konvertieren (alles ab dem ersten Nicht-Zahl-Char bis zum '\0' kommt in err_ptr)
    }
    while (  *err_ptr != '\0' || ( MASSE &lt; 10) );                         //Wiederholen wenn keine Zahl oder Masse zu klein

    cout &lt;&lt; &quot;Sie haben bombensicher einen Wert &gt;= 10 &quot;                    //Ausgabe
        &quot;eingegeben: &quot; &lt;&lt; MASSE &lt;&lt; endl;
</code></pre>
<p>EDIT: Wenn <code>eingabe</code> &quot;32b9\0&quot; ist, dann ist <code>err_ptr</code> nach dem Aufruf von <code>strtod</code> &quot;b9\0&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048449</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Wed, 13 Apr 2011 06:51:37 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabeüberprüfung on Wed, 13 Apr 2011 06:42:05 GMT]]></title><description><![CDATA[<p>Mhhh...<br />
bin ich jetzt ein sehr böser Junge gewesen und komme deshalb in die Hölle oder darf man das so durchgehenlassen und ich kann mich freuen das ich mein erstes halbwegs großes Programm beendet habe?</p>
<p>Ach ja: Danke für die erklärung <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="🙂"
    /> aber geht das noch ein bisschen mehr in richtung c++ für richtig dumme?^^</p>
<p>Glaube an sich hab ichs verstanden da fehlt nur dieses *klick*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048451</guid><dc:creator><![CDATA[Thörb]]></dc:creator><pubDate>Wed, 13 Apr 2011 06:42:05 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabeüberprüfung on Wed, 13 Apr 2011 06:44:15 GMT]]></title><description><![CDATA[<p>Thörb schrieb:</p>
<blockquote>
<p>bin ich jetzt ein sehr böser Junge gewesen und komme deshalb in die Hölle oder darf man das so durchgehenlassen und ich kann mich freuen das ich mein erstes halbwegs großes Programm beendet habe?</p>
</blockquote>
<p>Ich wäre nicht zufrieden...</p>
<p>Thörb schrieb:</p>
<blockquote>
<p>Glaube an sich hab ichs verstanden da fehlt nur dieses *klick*</p>
</blockquote>
<p>Wo liegt das Problem? Wenn du es jemandem erklären müsstest, was würdest du selbst nicht kapieren/wissen/verstehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048453</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048453</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Wed, 13 Apr 2011 06:44:15 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabeüberprüfung on Wed, 13 Apr 2011 06:49:52 GMT]]></title><description><![CDATA[<p>Also wenn man es wirlich einfach Step by Step durchgeht ist es ja echt nicht schwer <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>Dann danke dir für deine Hilfe <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/2048455</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048455</guid><dc:creator><![CDATA[Thörb]]></dc:creator><pubDate>Wed, 13 Apr 2011 06:49:52 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabeüberprüfung on Wed, 13 Apr 2011 08:49:46 GMT]]></title><description><![CDATA[<p>Ich würde, wie bereits eingangs empfohlen, mit <code>getline</code> auf <code>cin</code> arbeiten, und das Parsen mit einem <code>istringstream</code> machen. Dann spart man sich das Problem, im Fehlerfall <code>cin</code> wieder aufzuräumen.</p>
<p>Irgendwie so (ungetestet):</p>
<pre><code class="language-cpp">std::string input;
bool read_on = true;
int result;
std::cout &lt;&lt; &quot;Bitte Zahl eingeben ( 4 &lt;= x &lt;= 9)\n&gt; &quot;;
while(read_on &amp;&amp; std::getline(std::cin, input, '\n'))
{
    bool input_okay = (std::istringstream(input) &gt;&gt; result);
    read_on = !input_okay || (result &lt; 4) || (result &gt; 9);
    if(read_on)
    {
        std::cerr &lt;&lt; &quot;Eingabe fehlerhaft.\n&gt; &quot;;
    }
}
std::cout &lt;&lt; &quot;Eingabe war: &quot; &lt;&lt; result &lt;&lt; std::endl;
</code></pre>
<p>Geht bestimmt auch mit weniger Zeilen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048481</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 13 Apr 2011 08:49:46 GMT</pubDate></item></channel></rss>