Azi
Erfahrenes Mitglied
Nach langer Zeit programmiere ich wieder etwas in C. Aber iregdnwie scheint das nicht so ganz zu funktionieren... Naja, hier der total kommentierte Code:
Die Ausgabe ist andauernd folgende:
Code:
/*
Nach der Formel:
pi 01 01 01 01 01 01 01 01 01 01
__=__-__+__-__+__-__+__-__+__-__
04 01 03 05 07 09 11 13 15 17 19 ...
*/
#include <stdio.h>
int main(int argc, char** argv)
{
/* Wenn ein Parameter angegeben */
if(argc == 2){
/* I ist der angegebene Parameter */
int i=atoi(argv[1]);
/* Unser Zähler, der bei jedem Durchgang hochgezählt wird */
int counter;
/* Pi muss natürlich viele Nachkommastellen haben, deshalb long double */
long double pi=0;
/* J wird am Ende unser Pi werden, also auch ein long double */
long double j=0;
/* K ist bei jeder Berechnung der Nenner des Bruches */
int k=1;
/* L dient zum Wechsel von Addition und Subtraktion */
int l=2;
/* Noch eine Ausgabe, die zeigt, dass das Programm nicht abgestürzt ist */
printf("\nEs wird gerechnet");
/* Die Schleife wird so oft wiederholt, wie der angegebene Parameter sagt */
for(counter=0;counter<i;counter++){
/* Nochmal eine Ich-bin-nicht-abgestürzt-Ausgabe */
printf(".");
/* dieses mal die Addition */
if(l==2){
j=j+1/k;
/* L verkleinern, damit beim nächsten Mal subtrahiert wird */
l--;
/* den Nenner um 2 vergrößern */
k=k+2;
}
/* Und hier die Subtraktion */
else if(l==1){
j=j-1/k;
/* L vergrößern, damit beim nächsten Mal addiert wird */
l++;
/* den Nenner um 2 vergrößern */
k=k+2;
}
}
/* Pi ist das jetzige J mal 4 */
pi=j*4;
/* und die Ausgabe */
printf("\n\n\n\tPi ist %Lf\n\n\n",pi);
}
/* Wenn kein Parameter angegeben... */
else{
printf("pi [Genauigkeit]");
}
return 0;
}
Die Ausgabe ist andauernd folgende:
Code:
>pi 5
Es wird gerechnet.....
Pi ist 0.000000