<?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[Abfangen von Fehleingaben]]></title><description><![CDATA[<p>Hi,<br />
ich habe folgendes Problem. Mein Programm soll die Hypotenuse eines rechtwinkligen Dreiecks berechnen. Das tut es auch, wenn die Eingabe fehlerfrei ist.<br />
Nun möchte ich jedoch eventuelle Fehleingaben des Nutzers abfangen und ihn zu einer erneuten Eingabe auffordern, wobei alle Eingaben ungültig sind, die nicht einer reellen Zahl entsprechen, also z.B. &quot;aaaa&quot;.<br />
Ich kann mir weiter auch nicht erklären wieso z.B. bei Zeile 15 nicht aus der while-Schleife gesprungen wird, wenn man erst eine Fehleingabe unternimmt, dann aber einen zulässigen Wert eingibt. Führt man eine zulässige Eingabe durch, so funktioniert es.</p>
<p>Über Ratschläge würde ich mich sehr freuen</p>
<p>Gruß Freddy</p>
<p>Hier mein Code</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;cmath&gt;
using namespace std;

int main()
{
    // Variableninitialisierung
    float Kathete1=0, Kathete2=0, Hypotenuse=0;

    // Programmbeschreibung und Aufforderung zur Eingabe
    cout &lt;&lt; &quot;Programm zur Berechnung der Hypotenuse eines rechtwinkligen Dreiecks&quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;Bitte geben Sie die erste Kathete ein&quot; &lt;&lt; endl;

    cin &gt;&gt; Kathete1;
    while (cin.fail() == true || Kathete1 &lt;= 0 )
    {
        cout &lt;&lt; &quot;Ungültige Eingabe! Bitte geben Sie die erste Kathete ein!&quot; &lt;&lt; endl;
        cin &gt;&gt; Kathete1;
        getchar();
    }

    cout &lt;&lt; &quot;Bitte geben Sie die zweite Kathete ein&quot; &lt;&lt; endl;
    cin &gt;&gt; Kathete2;
    while (cin.fail() == true || Kathete2 &lt;= 0 )
    {
        cout &lt;&lt; &quot;Ungültige Eingabe! Bitte geben Sie die zweite Kathete ein!&quot; &lt;&lt; endl;
        cin &gt;&gt; Kathete2;
        getchar();

    }
    // Berechnung der Hypotenuse
    Hypotenuse = sqrt ( Kathete1 * Kathete1 + Kathete2 * Kathete2 );
    cout &lt;&lt; &quot;Die Hypotenuse beträgt: &quot; &lt;&lt; Hypotenuse &lt;&lt; endl;

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/328940/abfangen-von-fehleingaben</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 04:25:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/328940.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 01 Nov 2014 10:25:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Abfangen von Fehleingaben on Sat, 01 Nov 2014 10:25:37 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich habe folgendes Problem. Mein Programm soll die Hypotenuse eines rechtwinkligen Dreiecks berechnen. Das tut es auch, wenn die Eingabe fehlerfrei ist.<br />
Nun möchte ich jedoch eventuelle Fehleingaben des Nutzers abfangen und ihn zu einer erneuten Eingabe auffordern, wobei alle Eingaben ungültig sind, die nicht einer reellen Zahl entsprechen, also z.B. &quot;aaaa&quot;.<br />
Ich kann mir weiter auch nicht erklären wieso z.B. bei Zeile 15 nicht aus der while-Schleife gesprungen wird, wenn man erst eine Fehleingabe unternimmt, dann aber einen zulässigen Wert eingibt. Führt man eine zulässige Eingabe durch, so funktioniert es.</p>
<p>Über Ratschläge würde ich mich sehr freuen</p>
<p>Gruß Freddy</p>
<p>Hier mein Code</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;cmath&gt;
using namespace std;

int main()
{
    // Variableninitialisierung
    float Kathete1=0, Kathete2=0, Hypotenuse=0;

    // Programmbeschreibung und Aufforderung zur Eingabe
    cout &lt;&lt; &quot;Programm zur Berechnung der Hypotenuse eines rechtwinkligen Dreiecks&quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;Bitte geben Sie die erste Kathete ein&quot; &lt;&lt; endl;

    cin &gt;&gt; Kathete1;
    while (cin.fail() == true || Kathete1 &lt;= 0 )
    {
        cout &lt;&lt; &quot;Ungültige Eingabe! Bitte geben Sie die erste Kathete ein!&quot; &lt;&lt; endl;
        cin &gt;&gt; Kathete1;
        getchar();
    }

    cout &lt;&lt; &quot;Bitte geben Sie die zweite Kathete ein&quot; &lt;&lt; endl;
    cin &gt;&gt; Kathete2;
    while (cin.fail() == true || Kathete2 &lt;= 0 )
    {
        cout &lt;&lt; &quot;Ungültige Eingabe! Bitte geben Sie die zweite Kathete ein!&quot; &lt;&lt; endl;
        cin &gt;&gt; Kathete2;
        getchar();

    }
    // Berechnung der Hypotenuse
    Hypotenuse = sqrt ( Kathete1 * Kathete1 + Kathete2 * Kathete2 );
    cout &lt;&lt; &quot;Die Hypotenuse beträgt: &quot; &lt;&lt; Hypotenuse &lt;&lt; endl;

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2425238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2425238</guid><dc:creator><![CDATA[freddy90]]></dc:creator><pubDate>Sat, 01 Nov 2014 10:25:37 GMT</pubDate></item><item><title><![CDATA[Reply to Abfangen von Fehleingaben on Sat, 01 Nov 2014 10:35:18 GMT]]></title><description><![CDATA[<p>Bei einer Falscheingabe wird der Failbit gesetzt, mit cin.clear() kannst du den Failbit löschen..</p>
<pre><code>cin.clear();
    cin.ignore(numeric_limits&lt;streamsize&gt;::max(), '\n');
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2425242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2425242</guid><dc:creator><![CDATA[cinClear]]></dc:creator><pubDate>Sat, 01 Nov 2014 10:35:18 GMT</pubDate></item></channel></rss>