Scriptkiddy
19.06.2006, 19:24
Hallo Leutz!
Ich habe (als Hausaufgabe von der lieben Schule) ein kleines Programm geschrieben. Diese berechnet die Zahl Pii. Am Anfang muss man die Auflösungsmatrix eingeben. Je grösser diese Matrix ist, desto genauer wird Pi. Aber natürlich geht es auch viel länger.
Macht aber nix, ist sogar gut so. Es eignet sich bestens für den hmm Sch.... Schnelligkeitsvergleich von des Kollegen Rechners (Mein altes Notebook braucht bei einer Auflösung von 200000*200000 Punkten glatte 14minuten).
Nun das Problem. Ich habe das Programm so umgeschrieben, dass man immer wieder von Neuem einen Wert eingeben kann. Dies hat aber leider zur Folge, dass die Ablaufzeit des Programms nicht mehr angezeigt wird.
Kann ich irgendwie die Zeit einer While-schlaufe messen und per "printf" ausgeben. Natürlich möchte ich meinen Code nicht grundelegend abändern
Hier mein Code:
/*Programm zur Errechnung von Pi*/
#include <stdio.h>
/*Definition der Variablen:
Aufloesung: Entspricht der Dichtheit der Matrix (Aufloesung)
Resultat: Das Endergebnis wird darin gespeichert
Kreistreffer: Aller errechneten Treffer inerhalb des Kreises
Quadrattreffer:Alle Treffer ausserhalb des Kreises
y: Wert für die y- Koordinate
x: Wert für die x- Koordinate*/
int main(void)
{
double aufloesung;
double Resultat;
double Kreistreffer;
double Quadrattreffer;
double y;
double x;
printf("Programm zur Errechnung von Pi\n");
printf("------------------------------\n\n");
printf("Aufloesung fuer Berechnungsmatrix eingeben (je groesser desto genauer und <10=Ende):\n");
scanf("%lf",&aufloesung);
while (aufloesung>=10)
{
x=aufloesung;
y=aufloesung;
Kreistreffer=0;
while (y>=(-aufloesung)) /*Herunterzählen von der y-Koordinate*/
{
printf("Zwischenresultat y:%f ",y);
printf("Zwischenresultat Kreistreffer:%f\n",Kreistreffer);
x=aufloesung;
while (x>=(-aufloesung)) /*Herunterzählen von der x-Koordinate*/
{
if (((x*x) + (y*y)) <= (aufloesung)*(aufloesung))
Kreistreffer = Kreistreffer + 1;
x=x-1;
}
y=y-1;
}
Quadrattreffer= ((2*aufloesung)+1)*((2*aufloesung)+1);
Resultat= (4*Kreistreffer)/Quadrattreffer;
printf("Das Resultat ist:%f\n\n",Resultat);
printf("Programm zur Errechnung von Pi\n");
printf("------------------------------\n\n");
printf("Aufloesung fuer Berechnungsmatrix eingeben (je groesser desto genauer und <10=Ende):\n");
scanf("%lf",&aufloesung);
}
return 0;
}
Für die Antworten danke ich im Voraus.
greets Scriptkiddy 8-[
Ich habe (als Hausaufgabe von der lieben Schule) ein kleines Programm geschrieben. Diese berechnet die Zahl Pii. Am Anfang muss man die Auflösungsmatrix eingeben. Je grösser diese Matrix ist, desto genauer wird Pi. Aber natürlich geht es auch viel länger.
Macht aber nix, ist sogar gut so. Es eignet sich bestens für den hmm Sch.... Schnelligkeitsvergleich von des Kollegen Rechners (Mein altes Notebook braucht bei einer Auflösung von 200000*200000 Punkten glatte 14minuten).
Nun das Problem. Ich habe das Programm so umgeschrieben, dass man immer wieder von Neuem einen Wert eingeben kann. Dies hat aber leider zur Folge, dass die Ablaufzeit des Programms nicht mehr angezeigt wird.
Kann ich irgendwie die Zeit einer While-schlaufe messen und per "printf" ausgeben. Natürlich möchte ich meinen Code nicht grundelegend abändern
Hier mein Code:
/*Programm zur Errechnung von Pi*/
#include <stdio.h>
/*Definition der Variablen:
Aufloesung: Entspricht der Dichtheit der Matrix (Aufloesung)
Resultat: Das Endergebnis wird darin gespeichert
Kreistreffer: Aller errechneten Treffer inerhalb des Kreises
Quadrattreffer:Alle Treffer ausserhalb des Kreises
y: Wert für die y- Koordinate
x: Wert für die x- Koordinate*/
int main(void)
{
double aufloesung;
double Resultat;
double Kreistreffer;
double Quadrattreffer;
double y;
double x;
printf("Programm zur Errechnung von Pi\n");
printf("------------------------------\n\n");
printf("Aufloesung fuer Berechnungsmatrix eingeben (je groesser desto genauer und <10=Ende):\n");
scanf("%lf",&aufloesung);
while (aufloesung>=10)
{
x=aufloesung;
y=aufloesung;
Kreistreffer=0;
while (y>=(-aufloesung)) /*Herunterzählen von der y-Koordinate*/
{
printf("Zwischenresultat y:%f ",y);
printf("Zwischenresultat Kreistreffer:%f\n",Kreistreffer);
x=aufloesung;
while (x>=(-aufloesung)) /*Herunterzählen von der x-Koordinate*/
{
if (((x*x) + (y*y)) <= (aufloesung)*(aufloesung))
Kreistreffer = Kreistreffer + 1;
x=x-1;
}
y=y-1;
}
Quadrattreffer= ((2*aufloesung)+1)*((2*aufloesung)+1);
Resultat= (4*Kreistreffer)/Quadrattreffer;
printf("Das Resultat ist:%f\n\n",Resultat);
printf("Programm zur Errechnung von Pi\n");
printf("------------------------------\n\n");
printf("Aufloesung fuer Berechnungsmatrix eingeben (je groesser desto genauer und <10=Ende):\n");
scanf("%lf",&aufloesung);
}
return 0;
}
Für die Antworten danke ich im Voraus.
greets Scriptkiddy 8-[