<?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[Programm zur Wurzelberechnung]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich lerne seit wenigen Wochen C++ als Nebenfach in meinem Studium. Nun wollte/soll ich ein Programm schreiben, dass die Wurzel einer positiven Zahl mithilfe des Intervallhalbierungsverfahrens berechnet.<br />
Beispiel: <a href="http://www.lb.shuttle.de/lb/gymngerlingen/excel/idee/wurzel.htm" rel="nofollow">http://www.lb.shuttle.de/lb/gymngerlingen/excel/idee/wurzel.htm</a></p>
<p>Man gibt dabei die Zahl und die Schrittzahl an, wie oft die Intervalle halbiert werden sollen.</p>
<p>Leider wird mir jedoch kein Ergebnis ausgegeben. Es steht nur da<br />
Ergebnis:</p>
<p>Sieht wie folgt aus:</p>
<pre><code>#include &lt;stdio.h&gt;
int main(void)
{
	float zahl, xl, xm, xr, quadrat;
	int i, n;
	printf (&quot;Zahl für Wurzelberechnung:\n&quot;);
	scanf(&quot;%f&quot;, &amp;zahl);
	printf (&quot;Maximale Zahl von Halbierungen:\n&quot;);
	scanf(&quot;%d&quot;, &amp;n);

	for(i=1; i&lt;=n ; i++)
	{
		xr=zahl;
		xl=1;
		xm=(xl+xr)/2;
		quadrat=xm*xm;

		if(quadrat&gt;zahl)
			{
				xr=xm;
				xl=xl;

			}
		else
			{
				xr=xr;
				xl=xm;

			}
	}
	printf (&quot;Ergebnis: %f&quot;, xm);
return 0;
}
</code></pre>
<p>Wäre super wenn ihr mir Anregungen geben könntet! <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/topic/316821/programm-zur-wurzelberechnung</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Jul 2026 13:45:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/316821.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 17 May 2013 15:35:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Programm zur Wurzelberechnung on Fri, 17 May 2013 15:48:53 GMT]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich lerne seit wenigen Wochen C++ als Nebenfach in meinem Studium. Nun wollte/soll ich ein Programm schreiben, dass die Wurzel einer positiven Zahl mithilfe des Intervallhalbierungsverfahrens berechnet.<br />
Beispiel: <a href="http://www.lb.shuttle.de/lb/gymngerlingen/excel/idee/wurzel.htm" rel="nofollow">http://www.lb.shuttle.de/lb/gymngerlingen/excel/idee/wurzel.htm</a></p>
<p>Man gibt dabei die Zahl und die Schrittzahl an, wie oft die Intervalle halbiert werden sollen.</p>
<p>Leider wird mir jedoch kein Ergebnis ausgegeben. Es steht nur da<br />
Ergebnis:</p>
<p>Sieht wie folgt aus:</p>
<pre><code>#include &lt;stdio.h&gt;
int main(void)
{
	float zahl, xl, xm, xr, quadrat;
	int i, n;
	printf (&quot;Zahl für Wurzelberechnung:\n&quot;);
	scanf(&quot;%f&quot;, &amp;zahl);
	printf (&quot;Maximale Zahl von Halbierungen:\n&quot;);
	scanf(&quot;%d&quot;, &amp;n);

	for(i=1; i&lt;=n ; i++)
	{
		xr=zahl;
		xl=1;
		xm=(xl+xr)/2;
		quadrat=xm*xm;

		if(quadrat&gt;zahl)
			{
				xr=xm;
				xl=xl;

			}
		else
			{
				xr=xr;
				xl=xm;

			}
	}
	printf (&quot;Ergebnis: %f&quot;, xm);
return 0;
}
</code></pre>
<p>Wäre super wenn ihr mir Anregungen geben könntet! <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/2324069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2324069</guid><dc:creator><![CDATA[neonlogist]]></dc:creator><pubDate>Fri, 17 May 2013 15:48:53 GMT</pubDate></item><item><title><![CDATA[Reply to Programm zur Wurzelberechnung on Fri, 17 May 2013 15:47:57 GMT]]></title><description><![CDATA[<p>Funktioniert bei mir.</p>
<p>Zahl für Wurzelberechnung:<br />
10<br />
Maximale Zahl von Halbierungen:<br />
10<br />
Ergebnis: 30.250000Ergebnis: 30.250000Ergebnis: 30.250000Ergebnis: 30.250000Ergebnis: 30.250000Ergebnis: 30.250000Ergebnis: 30.250000Ergebnis: 30.250000Ergebnis: 30.250000Ergebnis: 30.250000Ergebnis: 5.500000</p>
<p>Könnte man hübscher machen, indem man ein paar \n einfügt, aber sonst... naja das Ergebnis ist auch nicht richtig. Ich glaub die Anweisungen xr=zahl; xl=1; sollten vor der Schleife stehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2324072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2324072</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Fri, 17 May 2013 15:47:57 GMT</pubDate></item><item><title><![CDATA[Reply to Programm zur Wurzelberechnung on Fri, 17 May 2013 15:51:45 GMT]]></title><description><![CDATA[<p>hoppla, die printf Anweisungen in der if-else- Bedingugn waren natürlich Quatsch.<br />
weiß garnicht warum ich die da reingeschrieben habe....(habs auch jetzt aus dem Code im Beitrag hier gelöscht)</p>
<p>du hast Recht, er gibt mir jetzt ein falsches Ergebnis aus.<br />
Deinen Tipp probier ich mal aus, danke vielmals <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/2324074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2324074</guid><dc:creator><![CDATA[neonlogist]]></dc:creator><pubDate>Fri, 17 May 2013 15:51:45 GMT</pubDate></item><item><title><![CDATA[Reply to Programm zur Wurzelberechnung on Fri, 17 May 2013 15:54:21 GMT]]></title><description><![CDATA[<p>Das ist ein C-Programm, das zufällig auch gültiges C++ ist.<br />
Die Schleife wird wahrscheinlich zu früh abgebrochen. Die Initialisierung von xr und xl in jedem Schleifendurchlauf dürfte unzweckmäßig sein.<br />
Warum keine Zahl ausgegeben wird, erschliesst sich mir nicht, es sei denn, es wird eine Zahl &lt; 2 für n eingegeben. In diesem Fall ist das Verhalten undefiniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2324075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2324075</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 17 May 2013 15:54:21 GMT</pubDate></item><item><title><![CDATA[Reply to Programm zur Wurzelberechnung on Fri, 17 May 2013 15:56:57 GMT]]></title><description><![CDATA[<p>Riesen Dankeschön an Bashar, mit dem Tipp die Definition von xr und xl vor die Schleife zu bringen hat es geklappt!<br />
<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/2324076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2324076</guid><dc:creator><![CDATA[neonlogist]]></dc:creator><pubDate>Fri, 17 May 2013 15:56:57 GMT</pubDate></item><item><title><![CDATA[Reply to Programm zur Wurzelberechnung on Fri, 17 May 2013 18:01:31 GMT]]></title><description><![CDATA[<p>Jetzt hab ich ein weiteres Problem:<br />
Bei Zahlen unterhalb der 1 also z.b. 0,75 schießt mir das Programm automatisch bis zum Ende und ich kann nichtmal die Anzahl an Halabierungen mehr definieren.<br />
Ich verstehe das nicht ganz, da ich doch die Variable &quot;Zahl&quot; mit float als Gleitkommazahl definiert habe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2324099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2324099</guid><dc:creator><![CDATA[neonlogist]]></dc:creator><pubDate>Fri, 17 May 2013 18:01:31 GMT</pubDate></item><item><title><![CDATA[Reply to Programm zur Wurzelberechnung on Fri, 17 May 2013 18:03:00 GMT]]></title><description><![CDATA[<p>neonlogist schrieb:</p>
<blockquote>
<p>Jetzt hab ich ein weiteres Problem:<br />
Bei Zahlen unterhalb der 1 also z.b. 0,75 schießt mir das Programm automatisch bis zum Ende und ich kann nichtmal die Anzahl an Halabierungen mehr definieren.<br />
Ich verstehe das nicht ganz, da ich doch die Variable &quot;Zahl&quot; mit float als Gleitkommazahl definiert habe?</p>
</blockquote>
<p>Haste 0,75 oder 0.75 eingegeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2324100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2324100</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 17 May 2013 18:03:00 GMT</pubDate></item><item><title><![CDATA[Reply to Programm zur Wurzelberechnung on Fri, 17 May 2013 18:36:27 GMT]]></title><description><![CDATA[<p>oh man, ja habs mit Komma eingegeben. Viele Dank!</p>
<p>Leider stimmt das Ergebnis aber nicht<br />
Gebe ich einen Wert unter 1 ein kommt als ergebnis 1,000000 raus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2324104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2324104</guid><dc:creator><![CDATA[neonlogist]]></dc:creator><pubDate>Fri, 17 May 2013 18:36:27 GMT</pubDate></item><item><title><![CDATA[Reply to Programm zur Wurzelberechnung on Fri, 17 May 2013 18:43:37 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Das ist ein C-Programm, das zufällig auch gültiges C++ ist.<br />
Die Schleife wird wahrscheinlich zu früh abgebrochen. Die Initialisierung von xr und xl in jedem Schleifendurchlauf dürfte unzweckmäßig sein.<br />
Warum keine Zahl ausgegeben wird, erschliesst sich mir nicht, es sei denn, es wird eine Zahl &lt; 2 für n eingegeben. In diesem Fall ist das Verhalten undefiniert.</p>
</blockquote>
<p>Kannst du das mal erklären? Ich sehe es nicht. In der Schleife selbst wird auf n nicht zugegriffen, und die Anzahl an Iterationen kann wohl kaum die Ursache für undefiniertes oder eben auch definiertes Verhalten sein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Edit: Da war eine Bearbeitung ... allerdings Minuten vor deinem Post, also lags nicht daran.</p>
<blockquote>
<p>Bei Zahlen unterhalb der 1 also z.b. 0,75 schießt mir das Programm automatisch bis zum Ende und ich kann nichtmal die Anzahl an Halabierungen mehr definieren.<br />
Ich verstehe das nicht ganz, da ich doch die Variable &quot;Zahl&quot; mit float als Gleitkommazahl definiert habe?</p>
</blockquote>
<p>Und was gibst du für <code>n</code> ein?<br />
Was heißt, es schießt bis zum Ende? Stürzt es ab, siehst du noch eine Ausgabe (wenn ja, welche), beendet es sich einfach sauber von selbst (Rückgabewert?)?<br />
In Zukunft solche Fehlermeldungen genauer geben <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>Was macht eigentlich die Selbstzuweisung in Zeile 26 und 21?<br />
Übrigens ist dein Code lupenreines C. Bitte in C++ umschreiben, hier der Anfang:</p>
<pre><code>#include &lt;iostream&gt; /// Die C++ I/O-Streams.

int main() // void für eine leere Parameterliste ist in C++ nicht nötig.
{
    std::cout &lt;&lt; &quot;Zahl für Wurzelberechnung:\n&quot;;
    float zahl;  // Da deklarieren wo du es zum ersten Mal gebrauchst
    std::cin &gt;&gt; zahl;

    std::cout &lt;&lt; &quot;Maximale Zahl von Halbierungen:\n&quot;;
    unsigned n; // Mach daraus einen vorzeichenlosen Typen, oder soll der User -1 eingeben können?
    std::cin &gt;&gt; n;

    float xl = 1,
          xr = zahl;

    float xm = 0; // Initialisieren. Wenn du n=0 hast, ist xm sonst irgendein Wert.

    // Wenn du hier 0 statt 1 zuweist, kannst du auch kleiner-als schreiben - wäre direkter
    for(unsigned i=0; i &lt; n; i++) /// i lokaler deklarieren.
    {
        xm = (xl + xr) / 2;

        if(xm*xm &gt; zahl)
            xr=xm;
        else
            xl=xm;
    }

    std::cout &lt;&lt; &quot;Ergebnis: &quot; &lt;&lt; xm;
} // Rückgabe von 0 in main() nicht nötig.
</code></pre>
<p>Wenn ich da 0,75 eingebe springt das Programm ans Ende. Der Grund ist, dass nur bis zum Komma gelesen wird (da es kein Punkt ist, ist es nicht gültig für eine Fließkommazahl*), und dann das Komma und die beiden Ziffern noch im Buffer liegen - bei der Extraktion von n wird dann das Komma gefunden und der Fehlerzustand gesetzt.</p>
<p>Daher könntest du bspw. die Streams nach der(den) Eingabe(n) überprüfen.</p>
<p>*Das ginge mit Locales, das könnte man anpassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2324105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2324105</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Fri, 17 May 2013 18:43:37 GMT</pubDate></item><item><title><![CDATA[Reply to Programm zur Wurzelberechnung on Fri, 17 May 2013 18:39:27 GMT]]></title><description><![CDATA[<p>neonlogist schrieb:</p>
<blockquote>
<p>oh man, ja habs mit Komma eingegeben. Viele Dank!</p>
<p>Leider stimmt das Ergebnis aber nicht<br />
Gebe ich einen Wert unter 1 ein kommt als ergebnis 1,000000 raus?</p>
</blockquote>
<p>Weil Du mit xl=1 anfängst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2324106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2324106</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 17 May 2013 18:39:27 GMT</pubDate></item><item><title><![CDATA[Reply to Programm zur Wurzelberechnung on Sat, 18 May 2013 12:49:29 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>neonlogist schrieb:</p>
<blockquote>
<p>oh man, ja habs mit Komma eingegeben. Viele Dank!</p>
<p>Leider stimmt das Ergebnis aber nicht<br />
Gebe ich einen Wert unter 1 ein kommt als ergebnis 1,000000 raus?</p>
</blockquote>
<p>Weil Du mit xl=1 anfängst.</p>
</blockquote>
<p>Danke, bin dann auch drauf gekommen und jetzt funktioniert die Wurzelberechnung super.<br />
Nun soll ich jeodch die Zwischenwerte in einer Tabelle wiedergeben.</p>
<p>Die Werte krieg ich z.b. mit %10.5f alle schön tabellarisch hin.<br />
Den Header, also im prinzip die Beschriftung der Tabelle aber krieg ich nicht hin.(ihr wisst was ich mein wenn ihr das Programm bei euch durchlaufen lasst)<br />
Das wirkt in meinen (anfänger) Augen schon sehr schlampig.<br />
Gibt es eine möglichkeit die Werte in eine schön beschriftetet Tabelle zu fassen?<br />
Wir haben mal mit zwei verschachtelten for Schelifen so eine Tabelle erstellt.<br />
Jeodch war das eine&quot;Einmaleins&quot; Tabelle ohne Überschrift und ich weiß eben nicht wie ich meine Zwischenergebnise dort einfügen könnte?</p>
<pre><code>#include &lt;stdio.h&gt;
int main(void)
{
	//Definition der Eingabevariablen//

	float zahl, xl, xm, xr, quadrat, fehler;
	int i, n;
	printf (&quot;Zahl fuer Wurzelberechnung:\n&quot;);
	scanf(&quot;%f&quot;, &amp;zahl);
	printf (&quot;Maximale Zahl von Halbierungen:\n&quot;);
	scanf(&quot;%d&quot;, &amp;n);

	//Differentiation der Eingabevariablen//

	if(zahl&lt;1)
	{
		xl=zahl;
		xr=1;
	}

	else
	{
		xl=1;
		xr=zahl;
	}

	//Tabellen Header//

	printf(&quot;      xl    &quot;);
	printf(&quot;     xr    &quot;);
	printf(&quot;    xm    &quot;);
	printf(&quot; Fehler   \n&quot;);

	//Bearbeitungsschleife//

	for(i=0; i&lt;=n; i++)
	{

		//Definitionen Start//

		xm=(xl+xr)/2;
		quadrat=xm*xm;
		fehler=(zahl-(xm*xm))/zahl;
		if(fehler &lt; 0) 
		fehler = (-1)*fehler;

		//Tabelle//

		printf(&quot;%10.5f%10.5f%10.5f%10.5f%\n&quot;, xl, xr, xm, fehler);

		//Bedingung der Wurzelberechnung//

		if(quadrat&gt;zahl)
			{
				xr=xm;
				xl=xl;
			}
		else
			{
				xr=xr;
				xl=xm;
			}

	}

	//Ende der Schleife//

return 0;
}
</code></pre>
<p>Wäre super klasse, wenn ihr mir einen Tipp geben würdet! <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/2324245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2324245</guid><dc:creator><![CDATA[neonlogist]]></dc:creator><pubDate>Sat, 18 May 2013 12:49:29 GMT</pubDate></item></channel></rss>