<?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[strtod Frage...]]></title><description><![CDATA[<p>Moin!</p>
<p>Ich bin neu in diesem Forum und bin ein C++ Neuling. Wir arbeiten an einem einfachen Schulprojekt zur Grundlagenerarbeitung.<br />
Ich habe aber 2 Probleme bei meinem Code einer Konsolenanwendung:<br />
1.:<br />
Ich habe eine Funktion &quot;eingabe(string text)&quot; welche nur einen Textstring erhält der ausgegeben werden soll und als Rückgabewert eine double liefern soll.</p>
<pre><code class="language-cpp">double eingabe(string text)
{
	char value2;
	cout &lt;&lt; &quot;\n&quot; &lt;&lt; text;
	cin &gt;&gt; value2;
	const char* value = &amp;value2;
	char* ep;
	double value1;
	value1 = strtod(value, &amp;ep);
	while(ep != NULL &amp;&amp; value1 &lt;= 0)
	{
		cout &lt;&lt; &quot;\nUngueltige Eingabe: &quot; &lt;&lt; text;
		cin &gt;&gt; value2;
		value = &amp;value2;
		value1 = strtod(value, &amp;ep);
	}
	return value1;
}
//Aufgerufen über:
double s = eingabe(&quot;Geben sie eine Zahl greosser 0 ein!&quot;);
double t = eingabe(&quot;Geben sie noch eine Zahl greosser 0 ein!&quot;);
double f = eingabe(&quot;Und noch eine Zahl greosser 0.&quot;);
</code></pre>
<p>Gibt man nun eine Zahl mit mehreren Ziffern ein, überspringt er die jeweils darauf folgenden Funktionsaufrufe und trägt in die Variablen den Wert der jeweilige Ziffer ein. Man könnte natürlich direkt in double eingeben lassen, aber wenn mann sich vertippt oder absichtlich etwas falsches eingibt, fällt das Programm in eine Endlosschleife. Wie kann ich dafür sorgen, dass er die komplette Zahl mit einem Mal zurück gibt und nicht erst später?!</p>
<p>2. Problem: Ich möchte kontrollieren, ob eine Variable entweder 1 oder 2 ist, wenn ja, denn soll FALSE zurückgegeben werden. Habe verschiedenste Ansätze versucht, aber entweder war immer FALSE oder immer TRUE die Rückgabe, unabhängig von den Werten.</p>
<pre><code class="language-cpp">int kontrollea(double f)
{
	char c;
	char d;
	if(f == 1)
	{
		c = 'a';
	}
	else
	{
		c = 'b';
	}
	if(f == 2)
	{
		d = 'a';
	}
	else
	{
		d = 'b';
	}
	if(c == d)
	{
		return FALSE;
	}
	else
	{
		return TRUE;
	}
}
</code></pre>
<p>Dies war mein umständlichster Ansatz, weil ich schon an meinem Denken zweifelte. Das Ganze soll von einer while schleife aufgerufen werden, wenn also die eingegebene Variable 1 oder 2 ist, soll FALSE zurückgegeben werden, wenn nicht TRUE und die Schleife soll nochmal ausgeführt und zur Neueingabe auffordern. leider funktioniert das so nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/209551/strtod-frage</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 16:00:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/209551.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 01 Apr 2008 01:12:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to strtod Frage... on Tue, 01 Apr 2008 01:14:23 GMT]]></title><description><![CDATA[<p>Moin!</p>
<p>Ich bin neu in diesem Forum und bin ein C++ Neuling. Wir arbeiten an einem einfachen Schulprojekt zur Grundlagenerarbeitung.<br />
Ich habe aber 2 Probleme bei meinem Code einer Konsolenanwendung:<br />
1.:<br />
Ich habe eine Funktion &quot;eingabe(string text)&quot; welche nur einen Textstring erhält der ausgegeben werden soll und als Rückgabewert eine double liefern soll.</p>
<pre><code class="language-cpp">double eingabe(string text)
{
	char value2;
	cout &lt;&lt; &quot;\n&quot; &lt;&lt; text;
	cin &gt;&gt; value2;
	const char* value = &amp;value2;
	char* ep;
	double value1;
	value1 = strtod(value, &amp;ep);
	while(ep != NULL &amp;&amp; value1 &lt;= 0)
	{
		cout &lt;&lt; &quot;\nUngueltige Eingabe: &quot; &lt;&lt; text;
		cin &gt;&gt; value2;
		value = &amp;value2;
		value1 = strtod(value, &amp;ep);
	}
	return value1;
}
//Aufgerufen über:
double s = eingabe(&quot;Geben sie eine Zahl greosser 0 ein!&quot;);
double t = eingabe(&quot;Geben sie noch eine Zahl greosser 0 ein!&quot;);
double f = eingabe(&quot;Und noch eine Zahl greosser 0.&quot;);
</code></pre>
<p>Gibt man nun eine Zahl mit mehreren Ziffern ein, überspringt er die jeweils darauf folgenden Funktionsaufrufe und trägt in die Variablen den Wert der jeweilige Ziffer ein. Man könnte natürlich direkt in double eingeben lassen, aber wenn mann sich vertippt oder absichtlich etwas falsches eingibt, fällt das Programm in eine Endlosschleife. Wie kann ich dafür sorgen, dass er die komplette Zahl mit einem Mal zurück gibt und nicht erst später?!</p>
<p>2. Problem: Ich möchte kontrollieren, ob eine Variable entweder 1 oder 2 ist, wenn ja, denn soll FALSE zurückgegeben werden. Habe verschiedenste Ansätze versucht, aber entweder war immer FALSE oder immer TRUE die Rückgabe, unabhängig von den Werten.</p>
<pre><code class="language-cpp">int kontrollea(double f)
{
	char c;
	char d;
	if(f == 1)
	{
		c = 'a';
	}
	else
	{
		c = 'b';
	}
	if(f == 2)
	{
		d = 'a';
	}
	else
	{
		d = 'b';
	}
	if(c == d)
	{
		return FALSE;
	}
	else
	{
		return TRUE;
	}
}
</code></pre>
<p>Dies war mein umständlichster Ansatz, weil ich schon an meinem Denken zweifelte. Das Ganze soll von einer while schleife aufgerufen werden, wenn also die eingegebene Variable 1 oder 2 ist, soll FALSE zurückgegeben werden, wenn nicht TRUE und die Schleife soll nochmal ausgeführt und zur Neueingabe auffordern. leider funktioniert das so nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1484137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1484137</guid><dc:creator><![CDATA[scooter010]]></dc:creator><pubDate>Tue, 01 Apr 2008 01:14:23 GMT</pubDate></item><item><title><![CDATA[Reply to strtod Frage... on Tue, 01 Apr 2008 04:55:48 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">double eingabe(string text)
{
    /*char value2; // wie willst du in einem einzelnen Zeichen ne real zahl eingeben? */
    char value2[10];
    cout &lt;&lt; &quot;\n&quot; &lt;&lt; text;
    cin &gt;&gt; value2;

    /*const char* value = &amp;value2; //quatsch
     char* ep;                    //quatsch
    double value1;              //quatsch
    value1 = strtod(value2, &amp;ep); //quatsch */

   value1= atof(value2);

    while(!value1){
        cout &lt;&lt; &quot;\nUngueltige Eingabe: &quot; &lt;&lt; text;
        cin &gt;&gt; value2;
        /*value = &amp;value2;*/
        value1= atof(value2);
       /* value1 = strtod(value, NULL);*/
    }
    return value1;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1484146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1484146</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Tue, 01 Apr 2008 04:55:48 GMT</pubDate></item><item><title><![CDATA[Reply to strtod Frage... on Tue, 01 Apr 2008 06:18:44 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<pre><code class="language-cpp">...
    /*const char* value = &amp;value2; //quatsch
     char* ep;                    //quatsch
    double value1;              //quatsch
    value1 = strtod(value2, &amp;ep); //quatsch */

   value1= atof(value2); 
while(!value1){// kwatsch !
   ...
</code></pre>
</blockquote>
<p>ist 0.0 etwa keine zahl ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<pre><code class="language-cpp">char* str = NULL;
	char* strnum = &quot;0.0&quot;;
	double number = 10.0;

	if( !( number = atof(strnum)) )
		puts(&quot;I'm not a number -&gt; kwatsch.&quot;);

	number = strtod( strnum, &amp;str );
	if( str != (strnum + strlen(strnum))   )
		printf( &quot;Ungueltiges zeichen %c in strnum -&gt; kein kwatsch.\n&quot;, *str );

	strnum = &quot;0.0ahaaa!&quot;;

	number = strtod( strnum, &amp;str );
	if( str != (strnum + strlen(strnum))   )
		printf( &quot;Ungueltiges zeichen %c in strnum -&gt; kein kwatsch.\n&quot;, *str );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1484162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1484162</guid><dc:creator><![CDATA[kwatsch kwatsch]]></dc:creator><pubDate>Tue, 01 Apr 2008 06:18:44 GMT</pubDate></item></channel></rss>