<?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[Pi ermitteln]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>Nun ich bin neue hier (C++ Anfänger)und wie aus dem Titel schon ersichtlich habe ich natürlich auch eine Frage bezüglich eines C++ Programmes.<br />
Es funktioniert nicht richtig, also gibt immer ganze Zahlen, statt Kommazahlen wie Pi es ist, aus.<br />
Es sollte Pi ermittelt werden, also so: 1/1 - 1/3 + 1/5...<br />
Das dividieren wie oben als Beispiel angegeben hängt von der Eingegebenen Zahl 'a' (im Programm) ab.<br />
Wobei 'n' der Nenner ist, 'i' die Laufvariable in der for-Schleife und e=die Zahl ist.<br />
Hier ist der Code:</p>
<pre><code>#include&lt;stdio.h&gt;
#include&lt;conio.h&gt;
#include&lt;stdlib.h&gt;

void main ()
{ int a,n=1,i;
  float e,pi=0;

  clrscr();

gotoxy(2,2);  printf(&quot;GEBEN SIE DIE ANZAHL MIT DER pi ERMITTELT WERDEN SOLL EIN:&quot;);
gotoxy(60,2); scanf(&quot;%d&quot;,&amp;a);

for(i=1;i&lt;=a;i++)
   { e=1/n;
     n=n+2;
     pi=pi+e;
     n=n*(-1);
    }
pi=pi*4;
gotoxy(2,10); printf(&quot;pi=&quot;);
gotoxy(7,10); printf(&quot;%f&quot;,pi);

getch();
}
</code></pre>
<p>Hoffe Ihr könnt mir helfen.</p>
<p>Mit freundlichen Grüßen, ein verzweifelter C++ Programmierer, Thorsten</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/253880/pi-ermitteln</link><generator>RSS for Node</generator><lastBuildDate>Sun, 13 Sep 2026 11:48:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/253880.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 08 Nov 2009 11:54:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pi ermitteln on Sun, 08 Nov 2009 11:54:37 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>Nun ich bin neue hier (C++ Anfänger)und wie aus dem Titel schon ersichtlich habe ich natürlich auch eine Frage bezüglich eines C++ Programmes.<br />
Es funktioniert nicht richtig, also gibt immer ganze Zahlen, statt Kommazahlen wie Pi es ist, aus.<br />
Es sollte Pi ermittelt werden, also so: 1/1 - 1/3 + 1/5...<br />
Das dividieren wie oben als Beispiel angegeben hängt von der Eingegebenen Zahl 'a' (im Programm) ab.<br />
Wobei 'n' der Nenner ist, 'i' die Laufvariable in der for-Schleife und e=die Zahl ist.<br />
Hier ist der Code:</p>
<pre><code>#include&lt;stdio.h&gt;
#include&lt;conio.h&gt;
#include&lt;stdlib.h&gt;

void main ()
{ int a,n=1,i;
  float e,pi=0;

  clrscr();

gotoxy(2,2);  printf(&quot;GEBEN SIE DIE ANZAHL MIT DER pi ERMITTELT WERDEN SOLL EIN:&quot;);
gotoxy(60,2); scanf(&quot;%d&quot;,&amp;a);

for(i=1;i&lt;=a;i++)
   { e=1/n;
     n=n+2;
     pi=pi+e;
     n=n*(-1);
    }
pi=pi*4;
gotoxy(2,10); printf(&quot;pi=&quot;);
gotoxy(7,10); printf(&quot;%f&quot;,pi);

getch();
}
</code></pre>
<p>Hoffe Ihr könnt mir helfen.</p>
<p>Mit freundlichen Grüßen, ein verzweifelter C++ Programmierer, Thorsten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1805106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1805106</guid><dc:creator><![CDATA[Thorsten C++]]></dc:creator><pubDate>Sun, 08 Nov 2009 11:54:37 GMT</pubDate></item><item><title><![CDATA[Reply to Pi ermitteln on Sun, 08 Nov 2009 12:07:10 GMT]]></title><description><![CDATA[<p>Wenn in einem Ausdruck nur int Typen vorkommen, wie hier bei 1/n, dann wird auch nur mit ints gerechnet. Das bedeutet, es kommt nur der ganzzahlige Anteil am Ergebnis der Division heraus. Verhindern kann man dies, indem man eine der beiden Zahlen zu einem double macht. Das kann man entweder durch umcasten der Variable machen oder, da hier ein Teil des Ausdrucks ein Literal ist, indem man das Literal als double angibt:</p>
<pre><code class="language-cpp">e=1./n;
</code></pre>
<p>P.S.: Das hier ist übrigens das C++ Unterforum, du machst reines C. Wenn du mal speziellere Fragen hast, solltest du im C Unterforum fragen, da kann man dir dann besser helfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1805113</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1805113</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 08 Nov 2009 12:07:10 GMT</pubDate></item><item><title><![CDATA[Reply to Pi ermitteln on Mon, 16 Aug 2010 20:31:21 GMT]]></title><description><![CDATA[<p>Will ja nichts sagen,... aber das ist kein C++.</p>
<p>Das ist reines C.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1805114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1805114</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 16 Aug 2010 20:31:21 GMT</pubDate></item><item><title><![CDATA[Reply to Pi ermitteln on Sun, 08 Nov 2009 12:13:19 GMT]]></title><description><![CDATA[<p>Thorsten C++ schrieb:</p>
<blockquote>
<p>Mit freundlichen Grüßen, ein verzweifelter C++ Programmierer, Thorsten</p>
</blockquote>
<p>Du meinst wohl verzweifelter C-Programmierer. In deinem Code ist kein Stück C++.</p>
<p>Wenn du zwei <code>int</code> dividierst, wird wieder ein <code>int</code> herauskommen. Caste mindestens einen Typen vor der Division oder benutze <code>float</code> -Literale:</p>
<pre><code class="language-cpp">e = 1.f/n;
</code></pre>
<p>Falls du doch C++ und nicht C programmieren willst:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt; // du brauchst keine C-Header mehr

int main() // main muss int zurückgeben
{
    int a,n=1,i; // Variablen erst dann deklarieren, wenn man sie braucht
    float e,pi=0;

    clrscr(); // nicht C++- oder C-Standard
    gotoxy(2,2); // nicht C++- oder C-Standard

    printf(&quot;GEBEN SIE DIE ANZAHL MIT DER pi ERMITTELT WERDEN SOLL EIN:&quot;);
    // in C++ ist std::cout normalerweise angebrachter als printf()

    scanf(&quot;%d&quot;,&amp;a);
    // statt scanf() kannst du std::cin verwenden

    // Statt dieser Schleife...
    for(i=1;i&lt;=a;i++)
    { e=1/n;
     n=n+2;
     pi=pi+e;
     n=n*(-1);
    }

    // ...nimmst du diese:
    for (int i = 1; i &lt;= a; ++i) // i erst hier deklarieren
    { 
        e = 1.f/n; // float verwenden
        n += 2;  // Operator +=
        pi += e; // Operator +=
        n = -n;  // Besser Vorzeichen wechseln als multiplizieren
    }

    pi *= 4; // Operator *=
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1805118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1805118</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 08 Nov 2009 12:13:19 GMT</pubDate></item><item><title><![CDATA[Reply to Pi ermitteln on Sun, 08 Nov 2009 12:35:34 GMT]]></title><description><![CDATA[<p>Reines C ist es auch nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1805127</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1805127</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Sun, 08 Nov 2009 12:35:34 GMT</pubDate></item><item><title><![CDATA[Reply to Pi ermitteln on Sun, 08 Nov 2009 12:36:18 GMT]]></title><description><![CDATA[<p>Ich weiß nicht ob es schon einer gesagt hat, aber das ist kein C++. Das ist reines C.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1805126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1805126</guid><dc:creator><![CDATA[übrigens]]></dc:creator><pubDate>Sun, 08 Nov 2009 12:36:18 GMT</pubDate></item><item><title><![CDATA[Reply to Pi ermitteln on Sun, 08 Nov 2009 12:43:06 GMT]]></title><description><![CDATA[<p>übrigens schrieb:</p>
<blockquote>
<p>Ich weiß nicht ob es schon einer gesagt hat, aber das ist kein C++. Das ist reines C.</p>
</blockquote>
<p>ist es eben nicht^^<br />
ist zwar C++ dabei, aber gotoxy, clrscr und getch sind alles dreis imho keine ansi C funktionen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1805132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1805132</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sun, 08 Nov 2009 12:43:06 GMT</pubDate></item><item><title><![CDATA[Reply to Pi ermitteln on Sun, 08 Nov 2009 12:44:32 GMT]]></title><description><![CDATA[<p>Hab irgendwie sowas gehört.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1805133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1805133</guid><dc:creator><![CDATA[übrigens]]></dc:creator><pubDate>Sun, 08 Nov 2009 12:44:32 GMT</pubDate></item><item><title><![CDATA[Reply to Pi ermitteln on Sun, 08 Nov 2009 12:56:11 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>Danke für eure Antworten.<br />
Ach ja ich Programmier im Borland C dort schreibt es, wenn man es öffnet, immer C++ hin, deswegen schrieb ich bei meinen ersten Beitrag C++.</p>
<p>OK Danke nochmals, das Prog. rechnet jetzt mit Nachkommastellen<br />
(der Fehler wäre mir überghaupt nicht aufgefallen ,danke nochmals)<br />
doch leider gibt es wenn man z.B. bei 'a' 3 eingibt keine 3,466667 aus.</p>
<p>Ist da noch was falsch?</p>
<p>Mit freundlichen Grüßen, ein schlauer gewordener <strong>C</strong> Programmierer, Thorsten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1805135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1805135</guid><dc:creator><![CDATA[Thorsten C++]]></dc:creator><pubDate>Sun, 08 Nov 2009 12:56:11 GMT</pubDate></item><item><title><![CDATA[Reply to Pi ermitteln on Sun, 08 Nov 2009 12:58:53 GMT]]></title><description><![CDATA[<p>Thorsten C++ schrieb:</p>
<blockquote>
<p>leider gibt es wenn man z.B. bei 'a' 3 eingibt keine 3,466667 aus.</p>
</blockquote>
<p>Sondern?</p>
<p>Wenn dein Programm in ANSI-C wäre, würd ich's vielleicht ausprobieren, aber Borland hab ich grad nicht da (mein DOS-PC ist schon ein paar Jahre eingemottet).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1805136</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1805136</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Sun, 08 Nov 2009 12:58:53 GMT</pubDate></item><item><title><![CDATA[Reply to Pi ermitteln on Sun, 08 Nov 2009 13:22:07 GMT]]></title><description><![CDATA[<p>Hallo Bashar,<br />
Er gibt 6.666667 aus, bei Eingabe von 3</p>
<p>Mein prog. ist leider nicht in ANSI-C.</p>
<p>mfg Thorsten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1805152</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1805152</guid><dc:creator><![CDATA[Thorsten C++]]></dc:creator><pubDate>Sun, 08 Nov 2009 13:22:07 GMT</pubDate></item><item><title><![CDATA[Reply to Pi ermitteln on Sun, 08 Nov 2009 13:31:10 GMT]]></title><description><![CDATA[<p>Ah ich seh schon, dein Algorithmus ist falsch:</p>
<pre><code class="language-cpp">for(i=1;i&lt;=a;i++) 
   { e=1/n; 
     n=n+2; 
     pi=pi+e; 
     n=n*(-1); 
    }
</code></pre>
<p>Nach dem ersten Durchlauf ist n -3 (richtig), nach dem zweiten Durchlauf ist n -(-3+2) = 1 (falsch). Wenn ich nicht irgendeinen Trick übersehe, muss man das Vorzeichen getrennt vom Nenner verwalten:</p>
<pre><code class="language-cpp">int sign = 1;
for (i=1; i&lt;=a; ++i)
{
  pi += sign * 1.0 / n;
  sign = -sign;
  n += 2;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1805154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1805154</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Sun, 08 Nov 2009 13:31:10 GMT</pubDate></item><item><title><![CDATA[Reply to Pi ermitteln on Sun, 08 Nov 2009 14:04:36 GMT]]></title><description><![CDATA[<p>Heyyyyy, Bashar,<br />
DANKE es funktioniert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> , du hast recht gehabt, mein Algorithmus war falsch.<br />
D A N K E<br />
sehr nette und gute Grüße, Thorsten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1805171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1805171</guid><dc:creator><![CDATA[Thorsten C++]]></dc:creator><pubDate>Sun, 08 Nov 2009 14:04:36 GMT</pubDate></item></channel></rss>